Passer au contenu principal
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 :
SujetDescriptionDéclencheur
CALL_RECEIVEDDéclenché lorsqu’un appel est terminéAprès la fin de l’appel
SMS_RECEIVEDDéclenché lorsqu’un SMS est reçuAprès réception du SMS
SMS_SENTDéclenché lorsqu’un SMS est envoyéAprès envoi du SMS
CONTACT_CREATEDDéclenché lorsqu’un contact est crééAprès création du contact
CONTACT_UPDATEDDéclenché lorsqu’un contact est mis à jourAprè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

Format des données

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]"
    },
    "type": "INBOUND",
    "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 :
ChampTypeDescription
idstringIdentifiant unique de l’appel
start_datedatetimeDate de début de l’appel
recording_urlstring | nullURL de l’enregistrement
from_numberstringNuméro de l’appelant
from_namestring | nullNom de l’appelant si connu
tostringNuméro du destinataire
to_namestring | nullNom du destinataire si connu
length_in_minutesnumberDurée de l’appel en minutes
lengthstringDurée lisible (ex: “2m 30s”)
tagstring | nullÉtiquette de catégorie
summarystring | nullRésumé généré par IA
one_sentence_summarystring | nullRésumé en une phrase
transcriptionsarrayTableau des entrées de transcription
concatenated_transcriptstringTranscription complète en texte
data_collectedobjectDonnées collectées pendant l’appel
typestringINBOUND ou OUTBOUND
integration_idstring | nullID d’intégration associé
transfer_fromobject | nullDétails de la source du transfert (voir objet transfert ci-dessous)
transfer_toobject | nullDétails de la destination du transfert (voir objet transfert ci-dessous)
user_emailstringEmail de l’utilisateur/propriétaire de la route
original_to_numberstring | nullNuméro original composé (avant routage)
original_to_namestring | nullNom original du numéro composé
transfer_original_call_idstring | nullID 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) :
ChampTypeDescription
numberstring | nullNuméro de téléphone de la partie du transfert
user_emailstring | nullEmail de l’utilisateur qui a transféré/reçu
user_namestring | nullNom de l’utilisateur qui a transféré/reçu

SMS_RECEIVED

Envoyé lorsqu’un SMS est reçu.
{
  "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"
  }
}

SMS_SENT

Envoyé lorsqu’un SMS est envoyé.
{
  "topic": "SMS_SENT",
  "data": {
    "id": "sms_xyz789",
    "direction": "OUTBOUND",
    "type": "SMS",
    "content": "Votre rendez-vous est confirmé pour demain à 14h.",
    "sent_at": "2024-01-15T10:35:00Z",
    "from_number": "+0987654321",
    "to_number": "+1234567890",
    "from_name": "Support Acme",
    "to_name": "Jean Dupont"
  }
}
Description des champs SMS :
ChampTypeDescription
idstringIdentifiant unique du message
directionstringINBOUND ou OUTBOUND
typestringSMS ou MMS
contentstringContenu du message
sent_atdatetimeDate d’envoi/réception
from_numberstringNuméro de l’expéditeur
to_numberstringNuméro du destinataire
from_namestringNom de l’expéditeur
to_namestringNom du destinataire

CONTACT_CREATED

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"]
  }
}

CONTACT_UPDATED

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 :
ChampTypeDescription
idstringPID du contact
namestring | nullPrénom
last_namestring | nullNom de famille
companystring | nullNom de l’entreprise
emailsarrayListe des adresses email
numbersarrayListe des numéros de téléphone