Получение статусов сообщений
В этой статье описывается callback-метод для передачи информации об изменении статусов обработки и доставки сообщений.
Callback — это запрос с информацией об изменении статусов сообщений, который мы передадим на ваш сервер. Параметры запроса передаются в теле запроса
URL-адрес подключения
Поддерживается только протокол HTTPS
Для получения сallback-статусов сообщений при регистрации укажите API Endpoint вашей системы, который будет обрабатывать входящие POST-запросы от API edna.
Пример тела входящего POST-запроса
{
"requestId": "test-00135",
"messageId": 8681748,
"cascadeId": 11,
"cascadeStageUUID": "001-test001",
"subject": "test_subject",
"subjectId": 2,
"status": "DELIVERED",
"statusAt": "2025-01-30T11:07:55Z",
"error": null,
"comment": null,
"paymentData": {
"@type": "WhatsAppConversationPaymentData",
"conversationId": "test0001",
"conversationType": "marketing",
"chargeable": true,
"type": "WHATSAPP_CONVERSATION"
}
}
Формат запроса
| Параметр | Тип данных | Характер | Описание |
|---|---|---|---|
requestId | string | Обязательный | Идентификатор запроса, на основании которого формируется и отправляется сообщение. |
cascadeId | long | Обязательный | Идентификатор каскада. |
cascadeStageUUID | string | Обязательный | null или данные. |
subject | string | Обязательный | Название подписи. |
subjectId | long | Обязательный | Идентификатор подписи. Можно узнать через метод получения списка каналов. Получение списка каналов |
status | string | Обязательный | Статус сообщения. |
statusAt | string | Обязательный | Время последнего обновления статуса сообщения. Указывается в формате ISO 8601. Например: 2023-10-31T11:07:56Z. |
error | string | Необязательный | null или данные. Ошибка при доставке сообщения. |
comment | string | Необязательный | Текстовый комментарий. Ука зывается при отправке сообщения. Значение параметра также отображается в детальном отчете. Может использоваться для маршрутизации чат-ботов. |
paymentData | object | Обязательный | Набор параметров для канала WhatsApp, которые передают информацию о диалоге. |
conversationId | string | Обязательный | Идентификатор диалога. Передается для канала WhatsApp. |
conversationType | string | Обязательный | Категория диалога. Передается для канала WhatsApp. |
chargeable | boolean | Необязательный | Тип диалога: платный или бесплатный. Передается для канала WhatsApp для статусов DELIVERED и READ. |
messageId | integer | Обязательный | Внутренний идентификатор сообщения. |
Формат ответа
В ответ на запрос от вашего сервера должен возвращаться статус его выполнения с кодом 200.
Если в ответ на callback-запрос не возвращается статус с кодом 200 — edna Pulse выполняет еще 10 попыток отправки вебхук-запроса с интервалом 2^Х секунд между попытками (где Х — номер попытки), пока в ответ не придет код 200.
Таким образом, при отсутствии ответа запрос повторяется через 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048 секунд после первой попытки.
Статусы доставки
| Статус | Описание |
|---|---|
SENT | Сообщение отправлено адресату. |
DELIVERED | Сообщение доставлено адресату. |
READ | Сообщение прочитано адресато м. |
UNDELIVERED | Сообщение отправлено, но не доставлено адресату. |
CANCELLED | Отправка сообщения отменена. |
EXPIRED | Сообщение не получило статус DELIVERED, поскольку: - истекло время, указанное при настройке каскада; - истекло время на доставку сообщения (TTL), определенное каналом по умолчанию Сроки доставки сообщений |
FAILED | Ошибка обработки сообщения. |
При интеграции учитывайте, что список статусов может быть расширен
Пример уведомления
{
"requestId": "test-00136",
"messageId": 8681749,
"cascadeId": 11,
"cascadeStageUUID": "001-test001",
"subject": "test_subject",
"subjectId": 2,
"status": "READ",
"statusAt": "2025-01-30T11:07:57Z",
"error": null,
"comment": null
}
Ошибки при получении статусов сообщений
| Ошибка | Описание |
|---|---|
not-template-match | Сообщение не соответствует допустимому шаблону. |
too-long-message | Длина сообщения превышает допустимый лимит. |
media-request-failed | Ошибка загрузки файла. |
error-subject-unknown | Указанная подпись не разрешена клиенту. Предварительно активируйте все подписи. |
error-address-format | Неправильный формат номера абонента. |
duplicated | Попытка отправки дубликата сообщения в течение 5 минут. |
* Деятельность компании Meta запрещена на территории Российской Федерации.