Получение статусов через вебхуки

Вебхуки в умном шлюзе — статусы доставки в реальном времени

Получение статусов через вебхуки

Коротко: чтобы получать статусы доставки, укажите URL вебхука в запросе. Платформа будет отправлять POST-запросы на этот URL.

Кому подходит

  • Роль: Разработчик
  • Уровень: Опытный

Что это

Вебхук — это URL на вашей стороне, куда платформа отправляет статусы сообщений. Работает в режиме реального времени.

Где указать

В запросе через умный шлюз — в поле webhook.

Если не указать — используется URL из настроек имени отправителя или API-ключа.

Что приходит

Статус сообщения

Событие: messageStatus

Поля:

ПолеЧто содержит
messageIdID сообщения
omniTransactionIdID транзакции
channelНомер канала
senderIdID отправителя
statusСтатус
timestampВремя события
contactНомер получателя
costСтоимость
clientInfoПользовательское поле

Возможные статусы

СтатусЧто означает
sentОтправлено
deliveredДоставлено
seenПросмотрено
failedОшибка
undeliverableНе удалось доставить
unknownНеизвестно

Как обрабатывать

  1. Принимайте POST-запросы на ваш URL.
  2. Отвечайте 200 OK быстро.
  3. Обрабатывайте асинхронно — не блокируйте ответ.
  4. Логируйте всё — для диагностики.
  5. Используйте messageId как ключ.

Пример логики

  1. Вы отправили запрос с webhook = https://myapp.com/otp-status.
  2. Платформа отправила сообщение.
  3. Когда статус изменился — платформа отправила POST на ваш URL.
  4. Ваш сервер получил статус delivered.
  5. Обновили статус в базе.

Приоритет вебхуков

Вебхук определяется в следующем порядке:

  1. Поле webhook в запросе (наивысший приоритет).
  2. Настройки имени отправителя.
  3. Настройки API-ключа.

Если в запросе указан webhook — он используется. Если нет — берётся из настроек отправителя.

Безопасность

  1. HTTPS обязателен.
  2. Проверяйте источник — можно ограничить по IP.
  3. Валидируйте данные.
  4. Не возвращайте чувствительные данные.

Частые проблемы

СимптомПричинаРешение
Вебхук не приходитURL недоступенПроверьте доступность
Вебхук не приходитFirewallРазрешите IP платформы
ДублированиеRetryИспользуйте messageId
МедленноДолгая обработкаОтвечайте сразу, обрабатывайте асинхронно

Что дальше

См. также

Нужна помощь?