🔗 Webhooks
Los webhooks son la forma en que los proveedores de canales notifican a PulseHub cuando algo sucede — un cliente envía un mensaje, un estado de entrega cambia, etc.
Patrón de URL de Webhook
https://tudominio.com/webhooks/{channel_type}/{channel_id}
Verificación de Webhook (solicitudes GET)
Algunos proveedores verifican tu URL de webhook con un desafío antes de enviar mensajes reales:
WhatsApp / Facebook / Instagram
PulseHub verifica hub.verify_token y devuelve hub.challenge.
Telegram
No hay verificación GET — configurar el webhook vía Bot API es suficiente.
Viber
Envía un evento conversation_started en la primera apertura. PulseHub devuelve {"status": 0}.
Verificación de Firma
| Proveedor | Header | Secreto |
|---|---|---|
| WhatsApp/Facebook/Instagram | X-Hub-Signature-256 | App Secret |
| Viber | X-Viber-Content-Signature | Auth Token |
| Twilio | — | Seguridad basada en URL |
| Telegram | — | Seguridad basada en URL UUID |
Todas las comparaciones HMAC usan hash_equals() (tiempo constante).
Registro de Eventos
Cada payload de webhook se registra en la tabla webhook_events con status = pending. Después del procesamiento: processed. En caso de fallo: failed.
Reintento de Webhooks Fallidos
La tarea cron reintenta eventos fallidos hasta 5 veces dentro de 24 horas.