Формат нотификации
Формат входящих webhook-уведомлений о статусе сообщений. Уведомления отправляются на URL из настроек компании.
Заголовки запроса
| Заголовок | Описание |
|---|---|
| X-Signature | HMAC-SHA256 подпись тела запроса |
| Idempotency-Key | Ключ дедупликации, равный event_id и неизменный при retry и replay. |
| X-Webhook-Attempt | Номер попытки доставки, начиная с 1. |
| Content-Type | application/json |
| User-Agent | MassAccess-Webhook/2.0 |
Поля нотификации
| Имя | Тип | Обязателен | Описание |
|---|---|---|---|
| event | string | Да | Тип события: message.status | client.phone.changed | client.registered | message.inbound |
| event_version | integer | Да | Целочисленная версия контракта события (сейчас 1) |
| event_id | string | Да | Уникальный идентификатор сообщения (UUID) |
| timestamp | string (ISO 8601) | Да | Время события в ISO 8601 UTC |
| data.state | string | Нет | Статус сообщения: new, processing, sent, failed |
| data.error_code | string | Нет | Код ошибки (только при ошибке) |
| data.error_description | string | Нет | Человекочитаемое описание ошибки (только при ошибке) |
| data.client_id | integer | Нет | Client identifier (for client.* events) |
| data.phone | string | Нет | Client phone number (for client.* events) |
| data.bot_name | string | Нет | Имя бота для клиентских событий и message.inbound. |
| data.exists | boolean | Нет | Whether the client has an active registration in the company (client.check event) |
| data.bots | array | Нет | Active registrations with name and service fields (client.check event). |
| data.service | telegram | max | Нет | Сервис входящего сообщения message.inbound: telegram или max. |
| data.phone_number | string | Нет | Подтверждённый номер телефона клиента для message.inbound. |
| data.text | string | Нет | Исходный UTF-8 текст, не более 4096 Unicode scalar values, без преобразования HTML/Markdown. |