Passer au contenu principal

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.

Répondre rapidement

Retournez un code de statut 200 dès que vous recevez le webhook. Effectuez votre traitement de manière asynchrone — écrivez l’événement dans une file d’attente ou une base de données, puis traitez-le en arrière-plan. Si votre endpoint met trop de temps à répondre (plus de 20 secondes), la livraison est marquée comme échouée et retentée.

Implémenter l’idempotence

Allo garantit la livraison au moins une fois (at-least-once), ce qui signifie que votre endpoint peut recevoir le même événement plusieurs fois. Pour éviter les traitements en double :
  1. Extrayez l’en-tête webhook-id de la requête — il identifie de manière unique chaque livraison.
  2. Vérifiez si vous avez déjà traité cet identifiant (ex. recherche dans votre base de données).
  3. S’il est nouveau, traitez l’événement et stockez l’identifiant.
  4. S’il s’agit d’un doublon, retournez 200 et ignorez le traitement.
app.post("/webhooks/allo", async (req, res) => {
  const webhookId = req.headers["webhook-id"];

  // Vérifier si déjà traité
  if (await db.webhookProcessed(webhookId)) {
    return res.sendStatus(200);
  }

  // Marquer comme traité avant de faire le travail
  await db.markWebhookProcessed(webhookId);

  // Traiter l'événement de manière asynchrone
  queue.add("process-webhook", req.body);

  res.sendStatus(200);
});

Utiliser HTTPS

Votre URL de webhook doit utiliser HTTPS. Les certificats auto-signés ne sont pas acceptés.

Vérifier les signatures

Vérifiez toujours les signatures webhook en production pour vous assurer que les requêtes proviennent d’Allo.

Gérer la livraison hors ordre

Les événements peuvent arriver dans un ordre différent de celui dans lequel ils se sont produits. Par exemple, tag.added pourrait arriver avant call.completed pour le même appel. Ne supposez pas que les événements arrivent dans l’ordre chronologique. Utilisez le champ timestamp du payload pour déterminer quand l’événement s’est réellement produit.

Surveiller vos endpoints

Vérifiez la santé de vos webhooks depuis Paramètres > Webhooks. Vous pouvez consulter les statistiques de livraison et inspecter les livraisons échouées.

Protéger vos secrets

  • Stockez le secret de signature (whsec_...) dans des variables d’environnement, pas dans le code source.
  • Ne committez jamais de secrets dans le contrôle de version.
  • Effectuez une rotation des secrets s’ils sont compromis.

Désactiver la protection CSRF

Si votre framework web active la protection CSRF par défaut (ex. Django, Rails), désactivez-la pour votre endpoint webhook. Les requêtes webhook n’incluent pas de tokens CSRF et seront rejetées.