Webhooks
Recevez des notifications HTTP en temps réel dès qu'un événement se produit dans e-Signal. Plus de polling — réagissez instantanément.
20+ événementsHMAC-SHA256Retry automatiqueLogs temps réel
Configuration
1
Configurez l'URL de réception
Dans le Dashboard → Paramètres → Webhooks, ajoutez l'URL HTTPS de votre endpoint.
2
Sélectionnez les événements
Choisissez les types d'événements à recevoir. Vous pouvez filtrer par canal ou par seuil.
3
Récupérez votre secret
Un secret HMAC unique est généré. Stockez-le en variable d'environnement.
4
Vérifiez les signatures
Chaque requête inclut un header X-ESignal-Signature-256. Vérifiez-le pour valider l'origine.
Structure du payload
Chaque webhook est un POST HTTP avec le header Content-Type: application/json. Exemple pour message.received :
Payload JSON
{
"id": "evt_01JAB5XQKPZN3MWV...",
"type": "message.received",
"created_at": "2025-11-20T14:10:23Z",
"data": {
"id": "msg_01JAB4...",
"conversation_id": "conv_01J7P3...",
"contact": {
"id": "cnt_01J8X4...",
"name": "Kofi Asante",
"phone": "+233241234567"
},
"channel": "whatsapp",
"direction": "inbound",
"type": "text",
"content": "Bonjour, est-ce disponible ?",
"ai": {
"sentiment": "positive",
"intent": "inquiry",
"score": 0.76
}
}
}Headers HTTP
Répondez 200 rapidement
e-Signal attend une réponse 2xx dans les 10 secondes. Traitez le webhook en tâche de fond pour éviter les timeouts.
Vérification des signatures
Chaque requête webhook est signée avec HMAC-SHA256. Vérifiez toujours la signature avant de traiter l'événement.
import hmac
import hashlib
def verify_signature(payload: bytes, signature: str, secret: str) -> bool:
"""Vérifie la signature HMAC-SHA256 d'un webhook e-Signal."""
expected = hmac.new(
secret.encode(),
payload,
hashlib.sha256
).hexdigest()
return hmac.compare_digest(f"sha256={expected}", signature)
# Dans votre handler Flask/Django/FastAPI :
# sig = request.headers.get("X-ESignal-Signature-256")
# if not verify_signature(request.data, sig, WEBHOOK_SECRET):
# return 401Politique de retry
⚡
1ère
Immédiat
🔄
2ème
+30s
⏱️
3ème
+5 min
⏰
4ème
+30 min
🕐
5ème
+2h
Après 5 tentatives échouées, le webhook est marqué comme failed et un email vous est envoyé. Les webhooks peuvent être rejoués manuellement depuis le dashboard.