Все вебхуки
Сообщения
Статус доставки обновлён
message.status.updatedОтправляется при изменении статуса доставки исходящего сообщения. Статусы идут по нарастающей: pending → server_ack → sent → delivered → read → played; более низкий статус молча отбрасывается, если уже зафиксирован более высокий. failed — терминальный статус, он записывается всегда. Событие срабатывает только для исходящих сообщений; не все каналы поддерживают все статусы (например, некоторые не сообщают read).
HTTP-запрос
AISAR отправляет подписанный POST-запрос на ваш webhook_url:
http
POST {webhook_url}
Content-Type: application/json
X-AISAR-Signature: sha256=...
{
"event": "message.status.updated",
"event_id": "evt_01JXXXXXXXXXXXXXXXXXXXXX",
"timestamp": "2026-03-26T12:00:00.000000Z",
"company_id": 1,
"data": {
"message_id": 123,
"conversation_id": 45,
"channel_id": 2,
"external_message_id": "3EB0ABC123456789",
"status": {
"name": "delivered",
"timestamp": "2026-03-26T12:00:05+00:00",
"error_details": null
}
}
}Заголовок X-AISAR-Signature содержит HMAC-SHA256 подпись тела запроса — используйте её, чтобы убедиться, что запрос пришёл от AISAR.
Пример payload
json
{
"event": "message.status.updated",
"event_id": "evt_01JXXXXXXXXXXXXXXXXXXXXX",
"timestamp": "2026-03-26T12:00:00.000000Z",
"company_id": 1,
"data": {
"message_id": 123,
"conversation_id": 45,
"channel_id": 2,
"external_message_id": "3EB0ABC123456789",
"status": {
"name": "delivered",
"timestamp": "2026-03-26T12:00:05+00:00",
"error_details": null
}
}
}Поля payload
| Поле | Тип | Описание |
|---|---|---|
message_id | integer | Внутренний ID сообщения |
conversation_id | integer | ID диалога |
channel_id | integer | ID канала |
external_message_id | string | Платформенный ID сообщения |
status.name | string | Статус: pending (в очереди), server_ack (принято сервером), sent (отправлено), delivered (доставлено), read (прочитано), played (воспроизведено — голосовые/видео), failed (доставка не удалась, терминальный) |
status.timestamp | string | Метка времени фиксации статуса в формате ISO 8601 |
status.error_details | string|null | Описание ошибки. Присутствует только при name = failed |