Перейти к основному содержимому

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

Обновлено: 25 февраля 2026

Для отправки сообщений в каналы WhatsApp и Viber используется метод api/cascade/schedule.

подсказка

WhatsApp
Если у вас зарегистрировано два одинаковых по контенту шаблона WhatsApp, которые отличаются только параметром Отслеживать переходы по кнопке-ссылке, мы не рекомендуем отправлять сообщения с таким контентом по API. Для отправки используйте личный кабинет edna Pulse.

В обратном случае мы не можем гарантировать корректное отображение статистики переходов по кнопкам-ссылкам.

warning

edna Pulse не позволяет отправлять дубликаты сообщения в течение 20 минут после его отправки.

Сообщения отправляются через каскад — сценарий последовательной рассылки в несколько каналов. При регистрации канала каскад для него создается автоматически.

Создать каскад из нескольких каналов можно в личном кабинете edna Pulse.

File IconКак работают каскады File IconКак создать каскад
подсказка

WhatsApp
Вы можете протестировать отправку сообщений с помощью API edna Pulse для канала WhatsApp, не регистрируя канал.

File IconТестирование API канала WhatsApp

Вызов метода api/cascade/schedule

Чтобы вызвать метод api/cascade/schedule, отправьте POST-запрос на URL-адрес https://app.edna.io/api/cascade/schedule. Запрос выполняется через публичный интерфейс API с авторизацией по API-ключу.

После выполнения запроса программа получает задание на отправку сообщения по каскаду согласно параметрам в теле запроса.

Если запрос принят, сервер возвращает ответ с кодом 200, содержащий JSON-объект с идентификатором запроса. В случае неуспешной проверки запроса возвращается ответ с кодом ошибки.

Информация о результате отправки сообщения приходит на установленный вебхук.

File IconВебхук об изменении статуса сообщения

В случае успешной отправки сообщения возвращается статус 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": {
"whatsappContent": {
"contentType": "TEXT",
"text": "string",
"attachment": {
"url": "string",
"name": "string"
},
"location": {
"longitude": 0,
"latitude": 0,
"address": "string",
"name": "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
}
]
}
]
},
"listPicker": {
"button": "string",
"sections": [
{
"title": "string",
"items": [
{
"identifier": "string",
"title": "string",
"subtitle": "string"
}
]
}
]
},
"catalog": {
"id": "string",
"product": {
"id": "string"
},
"sections": [
{
"title": "string",
"products": [
{
"id": "string"
}
]
}
]
},
"order": {
"catalogId": "string",
"products": [
{
"id": "string",
"quantity": 0,
"price": 0,
"currency": "USD"
}
]
},
"messageMatcherId": 0,
"useMarketingMessagesApi": boolean,
"messageActivitySharing": boolean
},
"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
}
]
}
]
}
}
}
}

Параметры запроса

Общие параметры

ПараметрТип данныхХарактерОписание
requestIdstringОбязательныйИдентификатор сообщения. Генерируется вашей системой, после чего значение должно быть передано в запрос. Максимальная длина строки — 256 символов.
commentstringНеобязательныйТекстовый комментарий в сообщении. Значение параметра отображается в детальном отчете.
cascadeIdstringОбязательныйИдентификатор каскада. При создании канала автоматически создается каскад для отправки сообщений по этому каналу. Чтобы узнать идентификатор каскада — используйте метод API по получению информации о каскадах (поле id). File IconПолучение информации о каскадах
subscriberFilterobjectОбязательныйПолучатель сообщения: ID в edna Pulse, номер телефона клиента, а также другие ID для push-сообщений.
Включает в себя следующие параметры:
- address — значение, которое зависит от type;
- type — см. параметр type
Например: если type — это PHONE, то address — номер телефона клиента
addressstringОбязательныйЗначение идентификатора указанного типа type.
typestringОбязательныйТип идентификатора клиента. Возможные значения указываются в верхнем регистре:
- INSTAGRAM_ID* — Идентификатор клиента в Instagram* из 16 числовых символов. Этот идентификатор создается на стороне Facebook*, когда клиент первым взаимодействует с Instagram*-аккаунтом бизнеса. Это значение может быть разным и меняться для одного и того же Instagram* клиента.
- FACEBOOK_ID* — Идентификатор клиента в Facebook*.
- DEVICE_APP_ID — Идентификатор push-устройства клиента.
- EDNA_ID — Идентификатор клиента в базе данных edna, который создается автоматически при создании клиента в edna.
Доступен только для каналов WhatsApp, SMS и Viber.
Отображается на странице Редактирование пользователя в строке URL, например: 3314 в строке https://app.edna.io/audience/3314/edit.
- PHONE — Номер телефона клиента в формате 79000000000.
- EMAIL
- UTM
- COOKIE_ID
- TELEGRAM_ID
- GOOGLE_ID
- APPLE_ID
- YANDEX_ID
- EXT_USER_ID
startTimestringНеобязательныйДата и время в формате ISO 8601 (например, 2024-07-01T00:00:00Z), раньше которого сообщение не будет отправлено. Используется при отложенной отправке.
contentobjectОбязательныйМожет содержать объекты whatsappContent, viberContent.
ttlstringНеобязательныйВремя, по истечении которого нужно переходить на описываемый шаг, если сообщение на предыдущем шаге было не доставлено. Период времени указывается в формате ISO 8601 (например, PT1M).
errorIfNotMatchedbooleanНеобязательныйУстаревший параметр. Используется, чтобы включить проверку шаблона сообщения. Если совпадений нет, возвращается ошибка.
prioritystringНеобязательныйИспользуется для обозначения приоритета сообщений.

Возможные значения:
- DEFAULT — стандартный приоритет, эквивалентно отсутствию дополнительных настроек приоритета;
- LOW — низкий приоритет;
- NORMAL — средний приоритет;
- HIGH — высокий приоритет;
- REALTIME — доставка в режиме реального времени.

Параметры whatsappContent

ПараметрТип данныхХарактерОписание
contentTypestringОбязательныйТип содержимого сообщения. Возможные значения указываются в верхнем регистре:
- TEXT — текстовое сообщение;
- IMAGE — изображение;
- DOCUMENT — документ, вложенный в сообщение;
- VIDEO — сообщение, содержащее видео;
- AUDIO — сообщение, содержащее звук;
- LOCATION — сообщение с координатами, адресом и описанием места. Координаты преобразуются в снимок Google maps;
- LIST_PICKER — кнопки интерактивного меню WhatsApp;
- AUTHENTICATION — сообщение с одноразовым паролем и кнопкой копирования;
- FLOW — сообщение, содержащее WhatsApp Flows. File IconИспользование WhatsApp Flows WhatsApp Flows — Meta for Developers
textstringОбязательный, если contentType = TEXT, AUTHENTICATION или FLOW- Текст сообщения, если contentType = TEXT.
- Текст сообщения, в которое будет вложен Flow, если contentType = FLOW.
- Одноразовый пароль, если contentType = AUTHENTICATION.
flowIdintegerОбязательный, если contentType = FLOWИдентификатор Flow, который присваивается в WhatsApp Manager в момент создания Flow.
screenstringНеобязательныйИдентификатор экрана, который первым будет отображаться во Flow.
captionstringОбязательный, если contentType = FLOWТекст кнопки, после нажатия на которую запускается Flow.
actionstringНеобязательныйТип взаимодействия Flow.
Возможные значения:
- navigate — Flow не делает запрос к конечной точке. Значение по умолчанию.
- data_exchange — Flow делает запрос к конечной точке. Creating surveys with WhatsApp Flows
attachmentobjectОбязательныйСодержит информацию о вложении.
Если при отправке чат-сообщения WhatsApp указано поле attachment, то поле text игнорируется и отправляется только вложение.
attachment.urlstringОбязательный, если объект attachment не пустойСсылка на вложение: изображение, файл, видео или аудио.
attachment.namestringОбязательныйНазвание изображения, файла, видео или аудио. Максимальная длина — 70 символов.
headerobjectОбязательныйЗаголовок сообщения. Можно выбрать один из следующих вариантов заголовка: текст, изображение, документ. Для текстового заголовка нужно указать сам текст заголовка, заголовок может содержать одну переменную. Сам заголовок отображается жирным текстом перед сообщением. Для мультимедиа заголовка можно указать ссылку на документ или изображение.
footerstringОбязательныйПодпись. Отображается под сообщением приглушенным цветом текста.
locationobjectОбязательныйСодержит информацию о геолокации. Отправка сообщения с геолокацией доступна только в рамках 24-часового диалога.
location.longitudestringОбязательныйКоординаты (долгота). Диапазон значений — от -180 до 180.
location.latitudestringОбязательныйКоординаты (широта). Диапазон значений — от -90 до 90.
location.addressstringНеобязательныйАдрес на карте.
location.name stringНеобязательныйНазвание объекта, адрес которого передается.
header.textstringОбязательный для текстового заголовкаТекст заголовка.
header.imageUrl stringОбязательный для заголовка-изображенияСсылка на изображение в заголовке.
header.documentUrlstringОбязательный для заголовка-документаСсылка на документ в заголовке.
header.documentNamestringОбязательный для заголовка-документаНазвание документа в заголовке. Будет отображаться получателю сообщения.
header.videoUrlstringОбязательный для заголовка-видеоСсылка на видео в заголовке.
header.videoNamestringОбязательный для заголовка-видеоНазвание видео в заголовке. Будет отображаться получателю сообщения.
buttonsobjectОбязательныйМассив объектов, в каждом из которых определяется кнопка.
buttons.textstringОбязательныйТекст кнопки. Максимальная длина — 20 символов.
buttons.urlstringОбязательный для кнопки-ссылкиURL-адрес, который открывается при нажатии кнопки.
buttons.urlPostfixstringОбязательный, если в шаблоне есть динамическая ссылка или она ненулеваяДинамическая часть ссылки URL-адреса кнопки.
buttons.phonestringОбязательный для кнопки-звонкаНомер телефона, который набирается при нажатии кнопки.
buttons.payloadstringОбязательный для кнопки с текстомКод или текст кнопки быстрого ответа.
Максимальное количество символов:
- у HSM-сообщений — 128.
- у CHAT-сообщений — 128.
buttons.typestringОбязательныйВид кнопки:
- URL — открывает указанную ссылку;
- PHONE — набирает указанный номер телефона;
- QUICK_REPLY — отправляет готовый ответ;
- OTP — копирует одноразовый пароль.
В одном сообщении может быть либо не более трех кнопок типа QUICK_REPLY, либо не более одной каждой из кнопок URL и PHONE. Кнопки QUICK_REPLY не могут быть в сообщении с другими кнопками.
Возможные варианты:
- QUICK_REPLY
- QUICK_REPLY QUICK_REPLY
- QUICK_REPLY QUICK_REPLY QUICK_REPLY
- URL
- PHONE
- URL PHONE
buttons.otpTypebooleanНеобязательныйТип кнопки в авторизационном сообщение WhatsApp. Только для авторизационного шаблонного сообщения WhatsApp.
Возможные значения:
- COPY_CODE — скопировать код;
- ONE_TAP — кнопка автоматического заполнения.
buttons.autofillTextstringНеобязательныйТекст кнопки автоматического заполнения. Только для кнопок автоматического заполнения в авторизационном шаблонном сообщении WhatsApp. Максимальное количество символов — 25.
buttons.packageNamestringНеобязательныйИмя пакета приложения Android в авторизационном сообщение WhatsApp. Только для кнопок автоматического заполнения в авторизационном шаблонном сообщении WhatsApp.
listPickerobjectОбязательныйОбъект списка элементов. Содержит в себе параметр button и объект sections, который содержит объекты section.
listPicker.buttonstringОбязательный, если объект listPicker не пустойНаименование кнопки для интерактивного списка.
listPicker.sections.titlestringОбязательный, если объект listPicker не пустойЗаголовок секции с элементами, который отображается пользователю.
listPicker.sections.itemsarray of objectsНеобязательныйСписок объектов item.
listPicker.sections.​items.identifierstringОбязательный, если объект listPicker не пустойСквозной для всего сообщения ID элемента, вернется в ответном сообщении пользователя.
listPicker.sections.​items.titlestringОбязательный, если объект listPicker не пустойНазвание элемента. Максимальная длина — 24 символа с учетом пробелов.
listPicker.sections.​items.subtitlestringОбязательный, если объект listPicker не пустойПодзаголовок элемента. Максимальная длина — 24 символа с учетом пробелов.
messageMatcherIdintegerОбязательный, если contentType = AUTHENTICATIONИдентификатор шаблона для данного авторизационного сообщения.
useMarketingMessagesApibooleanНеобязательныйПараметр определяет способ доставки маркетингового сообщения — Marketing Messages API или Cloud API.
Возможные значения:
- true — через Marketing Messages API;
- false — через Cloud API. File IconВключение Marketing Messages API для WhatsApp
messageActivitySharingbooleanНеобязательныйПараметр включает оптимизацию доставки маркетингового сообщения через Marketing Messages API и определяет, может ли Meta анализировать данные сообщения.
Возможные значения:
- true — оптимизация включена: Meta может читать сообщение и принимать решение о его доставке получателю.
- false — оптимизация отключена: Meta не имеет доступа к содержанию сообщения и не участвует в принятии решения о доставке. File IconВключение Marketing Messages API для WhatsApp

Параметры viberContent

ПараметрТип данныхХарактерОписание
contentTypestringОбязательныйТип содержимого сообщения. Возможные значения указываются в верхнем регистре:
- TEXT — текстовое сообщение;
- IMAGE — изображение;
- DOCUMENT — документ, вложенный в сообщение;
- VIDEO — сообщение, содержащее видео;
- AUDIO — сообщение, содержащее звук;
- BUTTON — кнопка;
- LOCATION — сообщение с координатами, адресом и описанием места. Координаты преобразуются в снимок Google maps.
footerobjectНеобязательныйПодпись. Отображается под сообщением приглушенным цветом текста.
textstringНеобязательныйТекст сообщения.
headerobjectНеобязательныйЗаголовок сообщения. Можно выбрать один из следующих вариантов заголовка: текст, изображение, документ. Для текстового заголовка нужно указать сам текст заголовка, заголовок может содержать одну переменную. Сам заголовок отображается жирным текстом перед сообщением. Для мультимедиа заголовка можно указать ссылку на документ или изображение.
attachmentobjectНеобязательныйСодержит информацию о вложении.
attachment.urlstringОбязательныйСсылка на вложение: изображение, файл, видео или аудио.
attachment.namestringНеобязательныйНазвание изображения, файла, видео или аудио. Максимальная длина — 25 символов.
locationobjectНеобязательныйСодержит информацию о местонахождении.
location.longitudestringОбязательныйКоординаты (долгота).
location.latitudestringОбязательныйКоординаты (широта).
location.addressstringНеобязательныйАдрес на карте.
captionstringНеобязательныйНазвание кнопки.
actionstringНеобязательныйСсылка для кнопки.

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

Знаки кавычек или должны быть отделены знаком \ в отправляемом сообщении.

Пример правильного оформления

"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Идентификатор сообщения. Это номер был сгенерирован на вашей стороне.

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

Отправляемые вложения должны соответствовать следующим требованиям:

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

developers.facebook.com