Вебхуки
Вебхуки — это способ, которым провайдеры каналов уведомляют PulseHub о событиях — клиент отправил сообщение, изменился статус доставки и т.д.
Шаблон URL вебхука
https://yourdomain.com/webhooks/{channel_type}/{channel_id}
Верификация вебхука (GET-запросы)
Некоторые провайдеры проверяют ваш URL вебхука с помощью вызова перед отправкой реальных сообщений:
WhatsApp / Facebook / Instagram
PulseHub проверяет hub.verify_token и возвращает hub.challenge.
Telegram
GET-верификация не требуется — достаточно установить вебхук через Bot API.
Viber
Отправляет событие conversation_started при первом открытии. PulseHub возвращает {"status": 0}.
Проверка подписи
| Провайдер | Заголовок | Секрет |
|---|---|---|
| WhatsApp/Facebook/Instagram | X-Hub-Signature-256 | App Secret |
| Viber | X-Viber-Content-Signature | Auth Token |
| Twilio | — | Безопасность на основе URL |
| Telegram | — | Безопасность на основе UUID в URL |
Все HMAC-сравнения используют hash_equals() (постоянное время).
Журналирование событий
Каждый payload вебхука записывается в таблицу webhook_events со статусом status = pending. После обработки: processed. При неудаче: failed.
Повтор неудачных вебхуков
Cron-задача повторяет неудачные события до 5 раз в течение 24 часов.