Webhooks
Webhooks sao como os provedores de canal notificam o PulseHub quando algo acontece — um cliente envia uma mensagem, um status de entrega muda, etc.
Padrao de URL do Webhook
https://yourdomain.com/webhooks/{channel_type}/{channel_id}
Verificacao de Webhook (requisicoes GET)
Alguns provedores verificam sua URL de webhook com um desafio antes de enviar mensagens reais:
WhatsApp / Facebook / Instagram
O PulseHub verifica hub.verify_token e retorna hub.challenge.
Telegram
Nao ha verificacao GET — configurar o webhook via Bot API e suficiente.
Viber
Envia um evento conversation_started na primeira abertura. O PulseHub retorna {"status": 0}.
Verificacao de Assinatura
| Provedor | Cabecalho | Segredo |
|---|---|---|
| WhatsApp/Facebook/Instagram | X-Hub-Signature-256 | App Secret |
| Viber | X-Viber-Content-Signature | Auth Token |
| Twilio | — | Seguranca baseada em URL |
| Telegram | — | Seguranca baseada em UUID na URL |
Todas as comparacoes HMAC usam hash_equals() (tempo constante).
Registro de Eventos
Cada payload de webhook e registrado na tabela webhook_events com status = pending. Apos o processamento: processed. Em caso de falha: failed.
Reenvio de Webhooks com Falha
O cron job tenta novamente eventos com falha ate 5 vezes em 24 horas.