Webhooks
Recevez les événements de conversations et d'appels d'un client sur votre propre point de terminaison, signés et vérifiables
Recevez en temps réel les événements de conversations et d'appels sur votre propre serveur — Happ envoie du JSON en POST quand quelque chose se produit, pour alimenter des alertes Slack, des recherches CRM, de l'analytique ou des workflows personnalisés.
Connexion
- Ouvrez le catalogue Intégrations et cliquez sur Connecter sur Webhook de conversation ou Webhook d'appel.
- Dans la fenêtre, saisissez votre URL Webhook — le point de terminaison HTTPS qui reçoit les événements.
- Définissez éventuellement un Secret du webhook pour vérifier les requêtes.
- Cliquez sur Connecter.
Il n'y a pas de page de webhooks séparée, pas d'options d'abonnement aux événements et pas de journal de livraisons dans l'application — la fenêtre se limite à l'URL + un secret facultatif.
Événements envoyés
| Webhook | Se déclenche |
|---|---|
| Conversation | À chaque message dans une conversation suivie — du client, de l'agent et d'un opérateur |
| Appel | À la fin d'un appel — une seule livraison après l'appel avec la durée, les métadonnées et l'URL de l'enregistrement s'il existe |
Événement d'appel
Le webhook d'appel envoie un objet JSON plat par appel terminé (pas de result_json imbriqué). Champs principaux :
| Champ | Signification |
|---|---|
event_type | Toujours post_call |
call_uuid | ID unique de l'appel — dédupliquez dessus, le même appel peut arriver plusieurs fois |
externalNumber | Numéro du client, le même que dans l'historique des appels ; null s'il n'y en avait pas (p. ex. appel web) |
direction | inbound, outbound ou null |
summary, callSuccessful | Résumé et verdict de l'IA : success, failure ou unknown |
dynamicVariables | Les variables avec lesquelles l'appel a été lancé, renvoyées — passez votre ID de contact CRM ou de commande au lancement et lisez-le ici. Les variables système VA (system__*) sont omises |
Schéma complet et exemple : api.happ.tools/reference.
Vérifier les requêtes
Définissez un secret de webhook et chaque livraison porte deux en-têtes :
| En-tête | Valeur |
|---|---|
Authorization | Basic <secret> — votre secret tel quel, pas le base64 de user:password |
X-Signature | sha256=<hex> — HMAC-SHA256 du corps brut de la requête, calculé avec votre secret |
Vérifiez en recalculant le HMAC-SHA256 sur le corps brut (avant de parser le JSON) et en comparant en temps constant. Si votre plateforme ne donne pas accès au corps brut, vérifiez plutôt l'en-tête Authorization. Sans secret défini, aucun des deux en-têtes n'est envoyé. Même mécanisme que pour les outils de l'agent.
Utilisez uniquement HTTPS, répondez 200 rapidement (traitez en asynchrone) et gérez les livraisons en double de manière idempotente.
Webhooks ou webhooks d'outils
| Webhooks d'intégration | Webhooks d'outils | |
|---|---|---|
| Déclencheur | Automatique sur événement | Appelé par l'IA pendant la conversation |
| Sens | Happ → votre serveur | Happ → votre serveur → réponse → IA |
| Réponse | Accusé HTTP 200 | JSON utilisé par l'agent |
| Cas d'usage | Supervision, journalisation, alertes | Recherches dynamiques, actions |
Pour les webhooks que l'IA appelle pendant la conversation, voir Outils.
API : api.happ.tools/reference
Pour aller plus loin
- Outils — webhooks appelés par l'IA
- Notifications — alertes intégrées
- Intégrations — le catalogue complet
Help me solve it
Happ answers right away and hands over to a manager when needed.