Отправка сообщений

Используйте этот метод для отправки сообщений через каналы мессенджеров (WhatsApp и Viber), SMS и пуш, в том числе, используя каскады, то есть комбинацию каналов.

Вы можете также протестировать отправку сообщений на тестовый номер телефона с помощью API edna для канала WhatsApp, не регистрируя собственный канал. Для этого перейдите на вкладку Тестирование в разделе Интеграция.
Если вы хотите протестировать отправку сообщений, имейте в виду, что у нас действует проверка на дубликаты СМС и IM. В течение 20 минут отправить дубликат сообщения нельзя. Сообщения-дубликаты будут отменены.

Метод schedule

В результате выполнения запроса будет отправлено сообщение в канал или по каскаду в соответствии с заданными параметрами (в теле запроса). В случае успешного выполнения запроса вернется ответ от сервера с кодом 200, содержащий JSON с идентификатором сообщения и статусом его отправки. В случае неуспешного выполнения запроса возвращается сообщение с кодом ошибки.

URL-адрес подключения

Для отправки сообщения выполняется POST-запрос на URL-адрес: https://app.edna.io/api/cascade/schedule

Формат запроса

В теле запроса передается JSON-объект с параметрами сообщения. Набор параметров зависит от типа сообщения и его содержимого: текст, изображение, документ, аудио или видео.

Ниже приведен общий набор параметров для различных типов контента. Более подробно о назначении параметров указано в таблицах ниже. Примеры отправки сообщений с помощью edna API можно посмотреть здесь.

{
  "requestId": "test-001",
  "cascadeId": "1",
  "subscriberFilter": {
    "address": "79000000000",
    "type": "PHONE"
  },
  "startTime": "2021-01-21T08:00:00Z",
  "content": {
    "smsContent": {
      "text": "Some sms message"
    },
    "whatsappContent": {
      "contentType": "TEXT",
      "text": "Some whatsapp message",
      "attachement": {
        "url": "https://wa.edna.io/img/hjalsdnasd.jpg",
        "name": "Pretty image",
        "size": 5123
      },
      "location": {
        "longitude": 56.7645,
        "latitude": 48.4564,
        "address": "Sahara desert"
      },
      "comment": "some comment",
      "caption": "some caption",
      "action": "some action",
      "header": {
        "documentUrl": "https://edna.io/docs/bjaksnda.pdf",
        "documentName": "bjaksnda.pdf"
      },
      "footer": {
        "text": "Some footer"
      },
      "keyboard": {
        "rows": [
          {
            "buttons": [
              {
                "text": "some button"
              },
              {
                "url": "https://example.com"
              }
            ]
          }
        ]
      }
    }
  }
}
ПараметрТип данныхОписание
requestIdstringИдентификатор сообщения. Генерируется вашей системой, после чего значение должно быть передано в запрос. Допускается любая длинна строки до 36 символов
cascadeIdstringИдентификатор каскада.
При создание канала автоматически создается каскад с отправкой сообщения по этому каналу. Для того, чтобы узнать идентификатор нужного вам каскада, используйте метод API по получению информации о каскадах (см поле id).
subscriberFilterobjectПолучатель сообщения: ID в Платформе edna, ID клиента в Instagram* или номер клиента.

subscriberFilter включает в себя следующие параметры: address и type. В свою очередь, type может быть INSTAGRAM_ID*, FACEBOOK_ID*, DEVICE_APP_IDPHONE, EMAIL, UTMCOOKIE_ID, TELEGRAM_IDGOOGLE_ID, APPLE_ID, YANDEX_ID, EXT_USER_ID, при этом address — это значение, которое зависит от type. Таким образом, например, если type это PHONE, то address будет номер телефона клиента. Пример:

"subscriberFilter":
{
"address": "79000000000",
"type": "PHONE"
},
addressstringЗначение идентификатора указанного типа type
typestringТип идентификатора клиента: INSTAGRAM_ID*, FACEBOOK_ID*, DEVICE_APP_IDPHONE, EMAIL, UTMCOOKIE_ID, TELEGRAM_IDGOOGLE_ID, APPLE_ID, YANDEX_ID, EXT_USER_ID
IDstringИдентификатор клиента в базе данных edna, который создаётся автоматически при создании клиента в edna. Отображается на странице Редактирование пользователя в строке URL, например: 3314 в строке https://app.edna.ru/audience/3314/edit
PHONEstringНомер телефона клиента
INSTAGRAM_ID*stringИдентификатор клиента в Instagram*, состоящий из 16 числовых символов. Этот идентификатор создаётся на стороне Facebook*, когда клиент первым взаимодействует с Instagram* аккаунтом бизнеса. Это значение может быть разным и меняться для одного и того же Instagram* клиента
DEVICE_APP_IDstringИдентификатор пуш-устройства клиента
startTimestring (optional)Время, раньше которого сообщение не будет отправлено. Используется при отложенной отправке. Формат YYYY-MM-DDTHH:mm:ss.SSSXXX (2021-01-21T08:00:00Z) or YYYY-MM-DDTHH:mm:ss.SSS+TZ (2021-01-21T08:00:00Z+03:00)
contentobject Объект. Может содержать объекты smsContent, whatsappContent, viberContent и pushContent
smsContentobject (optional)В объекте передаются данные SMS-сообщений
whatsappContentobject (optional)В объекте передаются данные Whatsapp-сообщений
viberContentobject (optional)В объекте передаются данные Viber-сообщений
instagramContent*object (optional)В объекте передаются данные Instagram* сообщений
pushContentobject (optional)В объекте передаются данные пуш-сообщений
contentTypestringТип содержимого сообщения. Возможные значения (необходимо указывать в верхнем регистре):

TEXT — текстовое сообщение
IMAGE — изображение
DOCUMENT — документ, вложенный в сообщение
VIDEO — сообщение, содержащее видео
AUDIO — сообщение, содержащее звук
BUTTON — кнопка
LOCATION — сообщение с координатами, адресом и описанием места. Координаты преобразуются в снимок Google maps
commentstring (optional)Текстовый комментарий в сообщении. Значение параметра отображается в детальном отчете.
textstring
(optional)
Текст сообщения
attachmentobject (optional)Содержит информацию о вложении
attachment.urlstringСсылка на картинку или файл/видео/audio
attachment.namestringНазвание картинки или файла/видео/audio
locationobject (optional)Содержит информацию о местонахождении
location.longitudestringКоординаты
location.latitudestringКоординаты
location.addressstringАдрес на карте
headerobject (optional)Заголовок сообщения. Можно выбрать один из следующих вариантов заголовка: текст, изображение, документ. Для текстового заголовка нужно указать сам текст заголовка, заголовок может содержать одну переменную. Сам заголовок отображается жирным текстом перед сообщением. Для мультимедиа заголовка можно указать ссылку на документ или изображение
footerobject (optional)Подпись. Отображается под сообщением приглушенным цветом текста
buttonsobject (optional)Массив объектов, в каждом из которых определяется кнопка. Виды кнопок: Текст, Ссылка, Телефон, Payload — возвращает входящее сообщение. См. примеры
text (buttons)string (optional)Текст кнопки. Максимальная длина — 20 символов
captionstring (optional)Только для Viber. Название кнопки
viberContent.actionstring (optional)Ссылка для кнопки Viber
pushContent.attributesobject (optional)Дополнительные параметры пуш-сообщения. Внутри JSON таблица «ключ-значение»
pushContent.smallobjectПараметры отображения свёрнутого пуш-уведомления
pushContent
.small.title
string
(optional)
Заголовок свёрнутого пуш-уведомления
pushContent
.small.text
stringТекст свёрнутого пуш-уведомления
pushContent
.small.imageUrl
string (optional)Иконка (логотип) для отображения в свёрнутом пуш-уведомлении. Рекомендуемое соотношение сторон 1×1, размер не более 1024×1024
pushContent.bigobject (optional)Параметры отображения расширенного пуш-уведомления
pushContent
.big.title
string (optional)Заголовок развёрнутого пуш-уведомления
pushContent
.big.text
string (optional)Текст развёрнутого пуш-уведомления
pushContent
.big.imageUrl
string (optional)Большое изображение для развёрнутого пуша. Рекомендуются изображения с соотношениями сторон 2×1, где основная визуальная масса остается при обрезке до 1.79×1 и 2,5×1 (ограничения Андроид)
pushContent.actionstring (optional)Ссылка, которая будет передана приложению при переходе пользователя по пуш-уведомлению
pushContent.effectsobject (optional)Звук, вибрация, имя notification channel и цвет мигания светодиода на устройстве пользователя при получении пуш-уведомления
pushContent
.effects.sound
string (optional)Имя файла со звуком, без расширения. Файл с таким именем должен находится в каталоге res/raw приложения Андроид и в корневом каталоге Xcode приложения iOS
pushContent
.effects.lights
string (optional)Цвет LED при получении пуша (только Андроид). На некоторых смартфонах Андроид есть сигнальный светодиод. Можно задать цвет мигания этого светодиода при получении пуша
pushContent
.effects.vibrate
string (optional)Последовательность промежутков бездействия и вибрации мотора при получении пуша в миллисекундах (только Андроид). Первое значение – бездействие. Например, при паттерне [300,500,300,500] на устройстве будет 300 мс бездействия, 500 мс вибрации, 300 мс бездействия, 500 мс вибрации.
pushContent.effects
.androidNotificationChannel
string (optional)Название канала уведомлений для Андроид. Пользователи увидят это название в настройках смартфона. Изменить параметры канала (звук, вибрацию и цвет светодиода) возможно только для новых получателей пуш-уведомлений.
pushContent.iosSettingsobject (optional)Уровень прерывания и категория ContentExtension (только для iOS)
pushContent.iosSettings
.interruptionLevel
string (optional)Уровень прерывания определяет вид уведомления на iOS 15 и выше.
pushContent
.iosSettings.category
string (optional)Категория для вызова ContentExtension. Параметр обрабатывается на стороне iOS и определяет, как отрисовывается расширенный пуш.

* Деятельность сети запрещена на территории РФ

Кавычки в тексте

Необходимо быть внимательным к выделению слов в кавычки. Если вы используете знак двойные кавычки “ или одиночные кавычки ‘ в отправляемом сообщении, то их обязательно нужно отделять знаком \ (обратный слеш).

Правильно:

"text": "Мария! Ждем вас на Мастер-класс \"Готовим вместе c Tefal\" 25.01.2020 в 13.00. Не пропустите это событие! Наш телефон 8(495)100-00-00"
и так
"text": "Мария! Ждем вас на Мастер-класс «Готовим вместе c Tefal» 25.01.2020 в 13.00. Не пропустите это событие! Наш телефон 8(495)100-00-00"

Неправильно:

"text": "Мария! Ждем вас на Мастер-класс "Готовим вместе с Tefal" 25.01.2020 в 13.00. Не пропустите это событие! Наш телефон 8(495)100-00-00"

Оформление текста в WhatsApp

Вы можете использовать различные опции для оформления текста в WhatsApp сообщениях. Эта опция подключена по умолчанию, отключить её нельзя.

  • Курсив: Используйте символ подчеркивания по обе стороны текста: _текст_
  • Жирный: Используйте символ звёздочки по обе стороны текста: *текст*
  • Зачеркнутый: Используйте символ тильды по обе стороны текста: ~текст~
  • Моноширинный: используйте символ трёх кавычек по обе стороны текста: ```текст```

Формат ответа

В ответ на запрос возвращается JSON-объект, содержащий Id отправленного сообщения и статус его обработки.

ПараметрТип данныхОписание
requestidstringИдентификатор сообщения. Это номер был сгенерирован на вашей стороне
codestringКод ответа для данного сообщения. Возможные значения

Типы вложений

Все отправляемые вложения должны удовлетворять нижеперечисленным требованиям. Иначе сообщение не будет доставлено.


Поддерживаемые типы медиа вложений и их допустимые размеры:

Тип вложенияПоддерживаемый форматРазмер, МВ
documentЛюбой корректный MIME тип100
imageimage/jpeg, image/png5
audioaudio/aac, audio/mp4, audio/amr, audio/mpeg, audio/ogg; Кодек=opus (NWB) и ACC16
videovideo/mp4, video/3gpp Внимание: Поддерживается только формат MPEG 4 и 3GPP c кодеком H.264 (MPEG-4 Part 10) и AAC для аудио16

Важно! Название прикрепленного файла (attachmentName) не может превышать 25 символов для месенджера Viber. Для все остальных допускается не более 75 символов.

Для дополнительной информации по форматам медиа вложений для WhatsApp можно
обратиться на этот ресурс*.

* Деятельность сети запрещена на территории РФ

Общая информация
Cледующая статья Примеры отправки сообщений