Отправка сообщений
Для отправки сообщений в канал Viber, SMS и Push используется метод api/cascade/schedule.
edna Pulse не позволяет отправлять дубликаты сообщения в течение 20 минут после его отправки.
Сообщения отправляются через каскад — сценарий последовательной рассылки в несколько каналов. При регистрации канала каскад для него создается автоматически.
Создать каскад из нескольких каналов можно в личном кабинете edna Pulse.
Как работают каскады Как создать каскадВызов метода api/cascade/schedule
Чтобы вызвать метод api/cascade/schedule, отправьте POST-запрос на URL-адрес https://app.edna.by/api/cascade/schedule. Запрос выполняется через публичный интерфейс API с авторизацией по API-ключу.
После выполнения запроса программа получает задание на отправку сообщения по каскаду согласно параметрам в теле запроса.
Если запрос принят, сервер возвращает ответ с кодом 200, содержащий JSON-объект с идентификатором запроса. В случае неуспешной проверки запроса возвращается ответ с кодом ошибки.
Информация о результате отправки сообщения приходит на установленный вебхук.
Получение статусов сообщенийВ случае успешной отправки сообщения возвращается статус sent, затем delivered, read или undelivered (в зависимости от канала). Статус сообщения failed означает, что сообщение обработано с ошибкой и не отправлено.
Если сервер не возвращает статус сообщения — отправьте запрос в службу поддержки edna.
Формат запроса
В теле запроса передается набор параметров каскада, по которому вы хотите отправить сообщение
{
"requestId": "string",
"cascadeId": 0,
"subscriberFilter": {
"address": "string",
"type": "EDNA_ID"
},
"startTime": "2023-09-27T12:06:29Z",
"ttl": "PT1M",
"content": {
"smsContent": {
"text": "string"
},
"viberContent": {
"contentType": "TEXT",
"text": "string",
"attachment": {
"url": "string",
"name": "string"
},
"location": {
"longitude": 0,
"latitude": 0,
"address": "string"
},
"comment": "string",
"caption": "string",
"action": "string",
"header": {
"text": "string",
"imageUrl": "string",
"documentUrl": "string",
"documentName": "string",
"videoUrl": "string",
"videoName": "string"
},
"footer": {
"text": "string"
},
"keyboard": {
"rows": [
{
"buttons": [
{
"text": "string",
"url": "string",
"urlPostfix": "string",
"phone": "string",
"payload": "string",
"type": "PHONE",
"otpType": "COPY_CODE",
"color": "string",
"requestContact": true,
"requestLocation": true,
"autofillText": "string",
"packageName": "string",
"hash": "string",
"appId": 0,
"ownerId": 0
}
]
}
]
}
},
"pushContent": {
"attributes": {
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
},
"small": {
"title": "string",
"text": "string",
"imageUrl": "string"
},
"big": {
"title": "string",
"text": "string",
"imageUrl": "string"
},
"buttons": [
{
"text": "string",
"url": "string"
}
],
"action": "string",
"effects": {
"sound": "string",
"lights": "string",
"vibrate": "string",
"androidNotificationChannel": "string"
},
"iosSettings": {
"interruptionLevel": "ACTIVE",
"category": "string"
},
"subscription": "string"
}
}
}
Параметры запроса
Общие параметры
| Параметр | Тип данных | Характер | Описание |
|---|---|---|---|
requestId | string | Обязатель ный | Идентификатор сообщения. Генерируется вашей системой, после чего значение должно быть передано в запрос. Максимальная длина строки — 256 символов. |
comment | string | Необязательный | Текстовый комментарий в сообщении. Значение параметра отображается в детальном отчете. |
cascadeId | string | Обязательный | Идентификатор каскада. При создании канала автоматически создается каскад для отправки сообщений по этому каналу. Чтобы узнать идентификатор каскада — используйте метод API по получению информации о каскадах (поле id).
Получение информации о каскадах |
subscriberFilter | object | Обязательный | Получатель сообщения: ID в edna Pulse, номер телефона клиента, а также другие ID для push-сообщений.
Включает в себя следующие параметры: - address — значение, которое зависит от type;
- type — см. параме тр type
Например: если type — это PHONE, то address — номер телефона клиента |
address | string | Обязательный | Значение идентификатора указанного типа type. |
type | string | Обязательный | Тип идентификатора клиента. Возможные значения указываются в верхнем регистре:
- INSTAGRAM_ID — Идентификатор клиента в Instagram из 16 числовых символов. Этот идентификатор создается на стороне Facebook, когда клиент первым взаимодействует с Instagram-аккаунтом бизнеса. Это значение может быть разным и меняться для одного и того же Instagram клиента.
- FACEBOOK_ID — Идентификатор клиента в Facebook.
- DEVICE_APP_ID — Идентификатор push-устройства клиента.
- EDNA_ID — Идентификатор клиента в базе данных edna, который создается автоматически при создании клиента в edna. Доступен только для каналов SMS и Viber. Отображается на странице Редактирование пользователя в строке URL, например: 3314 в строке https://app.edna.by/audience/3314/edit.
- PHONE — Номер телефона клиента в формате 79000000000.
- EMAIL
- UTM
- COOKIE_ID
- TELEGRAM_ID
- GOOGLE_ID
- APPLE_ID
- YANDEX_ID
- EXT_USER_ID |
startTime | string | Необязательный | Дата и время в формате ISO 8601 (например, 2024-07-01T00:00:00Z), раньше которого сообщение не будет отправлено. Используется при отложенной отправке. |
content | object | Обязательный | Может содержать объекты viberContent, smsContent, pushContent. |
ttl | string | Необязательный | Время, по истечении которого нужно переходить на описываемый шаг, если сообщение на предыдущем шаге было не доставлено. Период времени указывается в формате ISO 8601 (например, PT1M). |
errorIfNotMatched | boolean | Необязательный | Устаревший параметр. Используется, чтобы включить проверку шаблона сообщения. Если совпадений нет, возвращается ошибка. |
priority | string | Необязательный | Используется для обозначения приоритета сообщений. Возможные значения: - DEFAULT — стандартный приоритет, эквивалентно отсутствию дополнительных настроек приоритета;
- LOW — низкий приоритет;
- NORMAL — средний приоритет;
- HIGH — высокий приоритет;
- REALTIME — доставка в режиме реального времени. |
Параметры viberContent
| Параметр | Тип данных | Характер | Описание |
|---|---|---|---|
contentType | string | Обязательный | Тип содержимого сообщения. Возможные значения указываются в верхнем регистре:
- TEXT — текстовое сообщение;
- IMAGE — изображение;
- DOCUMENT — документ, вложенный в сообщение;
- VIDEO — сообщение, содержащее видео;
- AUDIO — сообщение, содержащее звук;
- BUTTON — кнопка;
- LOCATION — сообщение с координатами, адресом и описанием места. Координаты преобразуются в снимок Google maps. |
footer | object | Необязательный | Подпись. Отображается под сообщением приглушенным цветом текста. |
text | string | Необязательный | Текст сообщения. |
header | object | Необязательный | Заголовок сообщения. Можно выбрать один из следующих вариантов заголовка: текст, изображение, документ. Для текстового заголовка нужно указать сам текст заголовка, заголовок может содержать одну переменную. Сам заголовок отображается жирным текстом перед сообщением. Для мультимедиа заголовка можно указать ссылку на документ или изображение. |
attachment | object | Необязательный | Содержит информацию о вложении. |
attachment.url | string | Обязательный | Ссылка на вложение: изображение, файл, видео или аудио. |
attachment.name | string | Необязательный | Название изображения, файла, видео или аудио. Максимальная длина — 25 символов. |
location | object | Необязательный | Содержит информацию о местонахождении. |
location.longitude | string | Обязательный | Координаты (долгота). |
location.latitude | string | Обязательный | Координаты (широта). |
location.address | string | Необязательный | Адрес на карте. |
caption | string | Необязательный | Название кнопки. |
action | string | Необяз ательный | Ссылка для кнопки. |
Параметры smsContent
| Параметр | Тип данных | Характер | Описание |
|---|---|---|---|
text | string | Обязательный | Текст сообщения. |
Параметры pushContent
| Параметр | Тип данных | Характер | Описание |
|---|---|---|---|
small | object | Обязательный | Параметры отображения свернутого push-уведомления. |
small.title | string | Необязательный | Заголовок свернутого push-уведомления. |
small.text | string | Обязательный | Текст свернутого push-уведомления. |
small.imageUrl | string | Необязательный | Иконка (логотип) для отображен ия в свернутом push-уведомлении. Рекомендуемое соотношение сторон — 1×1. Размер — не более 1024×1024. |
big | object | Необязательный | Параметры отображения расширенного push-уведомления. |
big.title | string | Необязательный | Заголовок развернутого push-уведомления. |
big.text | string | Необязательный | Текст развернутого push-уведомления. |
big.imageUrl | string | Необязательный | Большое изображение для развернутого push-уведомления. Рекомендуются изображения с соотношениями сторон 2×1, где основная визуальная масса остается при обрезке до 1,79×1 и 2,5×1 (ограничения Android). |
action | string | Необязательный | Ссылка, которая будет передана приложению при переходе пользователя по push-уведомлению. |
buttons | object | Необязательный | Параметры отображения кнопок. Вместе с уведомлением можно отобразить до двух кнопок. |
buttons.text | string | Необязательный | Название кнопки. Пользователи увидят это название на кнопке в уведомлении. |
buttons.url | string | Необязательный | Ссылка кнопки. Будет передана приложению при нажатии пользователя на кнопку. |
effects | object | Необязательный | Звук, вибрация, имя notification channel и цвет мигания светодиода на устройстве пользователя при получении push-уведомления. |
effects.sound | string | Необязательный | Имя файла со звуком без расширения. Файл с таким именем должен находиться в каталоге res/raw приложения Android и в корневом каталоге Xcode приложения iOS. |
effects.lights | string | Необязательный | Цвет LED при получении push-уведомления (только Android). На некоторых смартфонах Android есть сигнальный светодиод. С помощью этого параметра можно задать цвет мигания этого светодиода при получении push-уведомления. |
effects.vibrate | string | Необязательный | Последовательность промежутков бездействия и вибрации мотора при получении push-уведомления в миллисекундах (только Android). Первое значение — бездействие. Например, при паттерне [300,500,300,500] на устройстве будет 300 мс бездействия, 500 мс вибрации, 300 мс бездействия, 500 мс вибрации. |
effects.androidNotificationChannel | string | Необязательный | Название канала уведомлений для Android. Пользователи увидят это название в настройках смартфона. Изменить параметры канала (звук, вибрацию и цвет светодиода) возможно только для новых получателей push-уведомлений. |
iosSettings | object | Необязательный | Уровень прерывания и категория ContentExtension (только для iOS). |
iosSettings.interruptionLevel | string | Необязательный | Уровень прерывания определяет вид уведомления на iOS 15 и выше. |
iosSettings.category | string | Необязательный | Категория для вызова ContentExtension. Параметр обрабатывается на стороне iOS и определяет, как отрисовывается расширенное push-уведомление. |
attributes | object | Необязательный | Дополнительные параметры push-сообщения. Внутри JSON таблица «ключ-значение». |
Кавычки в тексте
Знаки кавычек “ или ‘ должны быть отделены знаком \ в отправляемом сообщении.
Пример правильного оформления
"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"
Формат о твета
В ответ на запрос возвращается JSON-объект, содержащий ID отправленного сообщения и статус его обработки.
Параметры ответа
| Параметр | Тип данных | Описание |
|---|---|---|
requestId | string | Идентификатор сообщения. Это номер был сгенерирован на вашей стороне. |
Типы вложений
Отправляемые вложения должны соответствовать следующим требованиям:
| Тип вложения | Поддерживаемый формат | Допустимый размер |
|---|---|---|
| document | Любой корректный MIME-тип. | 100 МБ |
| image | image/jpeg, image/png. | 5 МБ |
| audio | audio/aac, audio/mp4, audio/amr, audio/mpeg, audio/ogg. Кодек=opus (NWB) и ACC. | 16 МБ |
| video | video/mp4, video/3gpp. Поддерживается только формат MPEG 4 и 3GPP c кодеком H.264 (MPEG-4 Part 10) и AAC для аудио. | 16 МБ |