🔗 Webhooks
Les webhooks sont la façon dont les fournisseurs de canaux notifient PulseHub quand quelque chose se produit — un client envoie un message, un statut de livraison change, etc.
Format d'URL Webhook
https://votredomaine.com/webhooks/{channel_type}/{channel_id}
Vérification Webhook (requêtes GET)
Certains fournisseurs vérifient votre URL webhook avec un challenge avant d'envoyer de vrais messages :
WhatsApp / Facebook / Instagram
PulseHub vérifie hub.verify_token et renvoie hub.challenge.
Telegram
Pas de vérification GET — configurer le webhook via l'API Bot suffit.
Viber
Envoie un événement conversation_started à la première ouverture. PulseHub retourne {"status": 0}.
Vérification de Signature
| Fournisseur | En-tête | Secret |
|---|---|---|
| WhatsApp/Facebook/Instagram | X-Hub-Signature-256 | App Secret |
| Viber | X-Viber-Content-Signature | Auth Token |
| Twilio | — | Sécurité basée sur l'URL |
| Telegram | — | Sécurité basée sur l'URL UUID |
Toutes les comparaisons HMAC utilisent hash_equals() (temps constant).
Journalisation des Événements
Chaque payload webhook est journalisé dans la table webhook_events avec status = pending. Après traitement : processed. En cas d'échec : failed.
Réessai des Webhooks Échoués
La tâche cron réessaie les événements échoués jusqu'à 5 fois dans les 24 heures.