Вебхуки
Вебхуки IBA Platform — статусы сообщений, входящие сообщения, статусы рассылок. Разрешение URL, форматы, статусы
Коротко: вебхук — это URL, на который платформа отправляет события: статусы сообщений, входящие сообщения и статусы рассылок. URL задаётся в трёх местах, платформа использует первый непустой.
Кому подходит
- Роль: Разработчик
- Уровень: Опытный
Что такое вебхук
Вебхук — это HTTP-запрос, который платформа отправляет на указанный вами URL, когда происходит событие. Так вы получаете уведомления о статусах сообщений, ответах получателей и статусах рассылок.
Как задаётся URL вебхука
Вебхук разрешается в следующем порядке (используется первое непустое значение):
- Поле
webhookв теле запроса. - Вебхук, настроенный для имени отправителя.
- Вебхук, настроенный для API-доступа (API-ключ или Basic Auth).
Если ни одно значение не задано, вебхук не отправляется.
Типы событий
| Событие | Когда приходит | Источник |
|---|---|---|
messageStatus | Изменился статус сообщения | OMNI API |
message | Получено входящее сообщение (MO) | OMNI API |
| Статус рассылки | Изменился статус рассылки | Broadcasts API |
Статус сообщения (messageStatus)
Отправляется в эндпоинтах OMNI API, когда сообщение меняет статус.
Формат:
{
"event": "messageStatus",
"message": {
"messageId": "4aab1947-7a34-4efe-8c51-e9c8f9b1412b",
"omniTransactionId": "57f29fdd-1127-45b3-a7d5-260a831a4662",
"channel": 2,
"senderId": "emulator",
"status": "delivered",
"timestamp": "2023-09-08T15:30:00Z",
"contact": "905324546496",
"cost": "1.00",
"clientInfo": "custom_data"
}
}
Поля:
| Поле | Тип | Что означает |
|---|---|---|
| event | string | Тип события: messageStatus |
| message.messageId | string | Уникальный идентификатор сообщения |
| message.omniTransactionId | string | ID каскадного запроса (может быть пустым) |
| message.channel | integer | Номер канала |
| message.senderId | string | Имя отправителя |
| message.status | string | Статус сообщения (см. таблицу ниже) |
| message.timestamp | string | Время события (RFC3339) |
| message.contact | string | Номер получателя |
| message.cost | float | Стоимость сообщения (может быть пустой) |
| message.clientInfo | string | Произвольное поле из запроса (может быть пустым) |
| reason | object | Причина ошибки (если есть) |
Возможные статусы:
| Статус | Что означает |
|---|---|
| sent | Сообщение отправлено |
| delivered | Сообщение доставлено |
| displayed | Сообщение прочитано |
| failed | Ошибка отправки |
| undeliverable | Сообщение не доставлено |
| unknown | Неизвестный или неподдерживаемый статус |
Причина ошибки (reason):
| Поле | Тип | Что означает |
|---|---|---|
| code | integer | Код ошибки |
| text | string | Описание ошибки |
Альтернатива: pull-запрос
Вебхук — это push-способ: платформа сама отправляет статус на ваш URL.
Если push не подходит — например, удобно обойтись без своего эндпоинта или статусы нужны пачкой раз в час — статусы можно запрашивать самостоятельно через API. Это pull-способ.
Эндпоинт: GET /api/v1/edrs — возвращает записи о доставке сообщений.
Подробнее о двух способах получения статусов — в статьях по сервисам:
Входящее сообщение (message)
Отправляется, когда получатель отвечает на ваше сообщение (MO — Mobile Originated).
Формат:
{
"event": "message",
"message": {
"messageId": "4aab1947-7a34-4efe-8c51-e9c8f9b1412b",
"omniTransactionId": "57f29fdd-1127-45b3-a7d5-260a831a4662",
"timestamp": "2023-09-08T15:30:00Z",
"channel": "SMS",
"senderId": "2813380676",
"contact": "8172958708",
"payload": {
"text": "test SMS"
}
}
}
Поля:
| Поле | Тип | Что означает |
|---|---|---|
| event | string | Тип события: message |
| message.messageId | string | Уникальный идентификатор |
| message.omniTransactionId | string | ID каскадного запроса |
| message.timestamp | string | Время события (RFC3339) |
| message.channel | string | Канал: SMS, RCS, Viber, WhatsApp, UNSET |
| message.senderId | string | Имя отправителя |
| message.contact | string | Номер отправителя |
| message.payload | object | Содержимое сообщения (зависит от канала) |
Статус рассылки
Отправляется из Broadcasts API. Приходит, когда рассылка меняет статус.
Формат:
| Поле | Тип | Что означает |
|---|---|---|
| status | string | Обновлённый статус рассылки |
| webhook | string | URL вебхука |
| broadcastId | integer | ID рассылки |
| message | string | Описание ошибки (если есть) |
См. также
Нужна помощь?
- OTP-коды: support@otpcod.ru
- Multi API: support@multiapi.ru
- Мой диалог: support@mydialogi.ru