Documentation Index
Fetch the complete documentation index at: https://help.withallo.com/llms.txt
Use this file to discover all available pages before exploring further.
Les webhooks vous permettent de recevoir des notifications en temps réel lorsque des événements se produisent dans votre compte Allo.
Sujets disponibles
Abonnez-vous aux sujets de webhook suivants :
| Sujet | Description | Déclencheur |
|---|
CALL_RECEIVED | Déclenché lorsqu’un appel est terminé | Après la fin de l’appel |
SMS_RECEIVED | Déclenché lorsqu’un SMS est envoyé ou reçu | Après envoi ou réception du SMS |
CONTACT_CREATED | Déclenché lorsqu’un contact est créé | Après création du contact |
CONTACT_UPDATED | Déclenché lorsqu’un contact est mis à jour | Après mise à jour du contact |
Configuration d’un webhook
Utilisez le point d’accès Créer un webhook pour configurer votre webhook :
curl -X POST "https://api.withallo.com/v1/api/webhooks" \
-H "Authorization: VOTRE_CLE_API" \
-H "Content-Type: application/json" \
-d '{
"allo_number": "+1234567890",
"enabled": true,
"url": "https://votre-serveur.com/webhook",
"topics": ["CALL_RECEIVED", "SMS_RECEIVED", "CONTACT_CREATED"]
}'
Exigences des webhooks
- Votre URL de webhook doit être accessible publiquement
- Votre serveur doit répondre avec un code de statut
200 dans les 30 secondes
- Utilisez HTTPS pour une communication sécurisée
Tous les webhooks utilisent un format d’enveloppe standard :
{
"topic": "CALL_RECEIVED",
"data": { /* données spécifiques au sujet */ }
}
Données des webhooks
CALL_RECEIVED
Envoyé lorsqu’un appel est terminé.
{
"topic": "CALL_RECEIVED",
"data": {
"id": "call_abc123",
"start_date": "2024-01-15T10:30:00Z",
"recording_url": "https://storage.withallo.com/recordings/abc123.mp3",
"from_number": "+1234567890",
"from_name": "Jean Dupont",
"to": "+0987654321",
"to_name": "Support Acme",
"length_in_minutes": 5.5,
"length": "5m 30s",
"tag": "support",
"summary": "Le client a appelé concernant le statut de sa commande.",
"one_sentence_summary": "Demande de statut de commande",
"transcriptions": [
{
"source": "AGENT",
"time": "2024-01-15T10:30:05Z",
"text": "Bonjour, comment puis-je vous aider ?"
},
{
"source": "USER",
"time": "2024-01-15T10:30:10Z",
"text": "Bonjour, j'appelle concernant ma commande."
}
],
"concatenated_transcript": "AGENT: Bonjour, comment puis-je vous aider ?\nUSER: Bonjour, j'appelle concernant ma commande.",
"data_collected": {
"orderNumber": "12345",
"customerEmail": "[email protected]"
},
"ivr_result": [
{
"dtmf_key": "2",
"text_key": "Ventes"
}
],
"type": "INBOUND",
"result": "ANSWERED",
"integration_id": null,
"transfer_from": {
"number": "+1555000000",
"user_email": "[email protected]",
"user_name": "Premier Agent"
},
"transfer_to": {
"number": "+1555123456",
"user_email": "[email protected]",
"user_name": "Équipe Support"
},
"transfer_original_call_id": "call_original123",
"user_email": "[email protected]",
"original_to_number": "+0987654321",
"original_to_name": "Ligne principale"
}
}
Description des champs :
| Champ | Type | Description |
|---|
id | string | Identifiant unique de l’appel |
start_date | datetime | Date de début de l’appel |
recording_url | string | null | URL de l’enregistrement |
from_number | string | Numéro de l’appelant |
from_name | string | null | Nom de l’appelant si connu |
to | string | Numéro du destinataire |
to_name | string | null | Nom du destinataire si connu |
length_in_minutes | number | Durée de l’appel en minutes |
length | string | Durée lisible (ex: “2m 30s”) |
tag | string | null | Étiquette de catégorie |
summary | string | null | Résumé généré par IA |
one_sentence_summary | string | null | Résumé en une phrase |
transcriptions | array | Tableau des entrées de transcription |
concatenated_transcript | string | Transcription complète en texte |
data_collected | object | Données collectées pendant l’appel |
ivr_result | array | Sélections du menu IVR effectuées pendant l’appel (voir objet résultat IVR ci-dessous) |
type | string | INBOUND ou OUTBOUND |
result | string | Statut du résultat de l’appel. Un parmi : ANSWERED, VOICEMAIL, TRANSFERRED_AI, TRANSFERRED_EXTERNAL, BLOCKED, FAILED |
integration_id | string | null | ID d’intégration associé |
transfer_from | object | null | Détails de la source du transfert (voir objet transfert ci-dessous) |
transfer_to | object | null | Détails de la destination du transfert (voir objet transfert ci-dessous) |
user_email | string | Email de l’utilisateur/propriétaire de la route |
original_to_number | string | null | Numéro original composé (avant routage) |
original_to_name | string | null | Nom original du numéro composé |
transfer_original_call_id | string | null | ID du premier appel dans la chaîne de transfert (identique pour tous les appels de la chaîne) |
Champs de l’objet transfert (transfer_from / transfer_to) :
| Champ | Type | Description |
|---|
number | string | null | Numéro de téléphone de la partie du transfert |
user_email | string | null | Email de l’utilisateur qui a transféré/reçu |
user_name | string | null | Nom de l’utilisateur qui a transféré/reçu |
Champs de l’objet résultat IVR (ivr_result) :
| Champ | Type | Description |
|---|
dtmf_key | string | null | Le chiffre DTMF appuyé (ex: “1”, “2”, “3”) |
text_key | string | Le libellé de l’option du menu IVR (ex: “Ventes”, “Support”) |
SMS_RECEIVED
Envoyé lorsqu’un SMS est envoyé ou reçu. Utilisez le champ direction pour déterminer si le SMS est entrant ou sortant.
{
"topic": "SMS_RECEIVED",
"data": {
"id": "sms_abc123",
"direction": "INBOUND",
"type": "SMS",
"content": "Bonjour, je souhaite prendre rendez-vous.",
"sent_at": "2024-01-15T10:30:00Z",
"from_number": "+1234567890",
"to_number": "+0987654321",
"from_name": "Jean Dupont",
"to_name": "Support Acme"
}
}
Description des champs SMS :
| Champ | Type | Description |
|---|
id | string | Identifiant unique du message |
direction | string | INBOUND ou OUTBOUND |
type | string | SMS ou MMS |
content | string | Contenu du message |
sent_at | datetime | Date d’envoi/réception |
from_number | string | Numéro de l’expéditeur |
to_number | string | Numéro du destinataire |
from_name | string | Nom de l’expéditeur |
to_name | string | Nom du destinataire |
Envoyé lorsqu’un nouveau contact est créé.
{
"topic": "CONTACT_CREATED",
"data": {
"id": "cnt_abc123",
"name": "Jean",
"last_name": "Dupont",
"company": "Acme Inc",
"emails": ["[email protected]"],
"numbers": ["+15551234567"]
}
}
Envoyé lorsqu’un contact existant est mis à jour.
{
"topic": "CONTACT_UPDATED",
"data": {
"id": "cnt_abc123",
"name": "Jean",
"last_name": "Martin",
"company": "Acme Inc",
"emails": ["[email protected]", "[email protected]"],
"numbers": ["+15551234567"]
}
}
Description des champs Contact :
| Champ | Type | Description |
|---|
id | string | PID du contact |
name | string | null | Prénom |
last_name | string | null | Nom de famille |
company | string | null | Nom de l’entreprise |
emails | array | Liste des adresses email |
numbers | array | Liste des numéros de téléphone |