В этой статье описывается callback-метод для передачи информации об изменении статусов обработки и доставки сообщений. Callback — это запрос с информацией об изменении статусов сообщений, который мы передадим на ваш сервер. Параметры запроса передаются в теле запроса.
URL-адрес подключения
Для получения с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 | Сообщение не получило статус , поскольку:• истекло время, указанное при настройке каскада; • истекло время на доставку сообщения (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
}
}