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.

Repondre rapidement

Retournez un code de statut 200 des que vous recevez le webhook. Effectuez votre traitement de maniere asynchrone — ecrivez l’evenement dans une file d’attente ou une base de donnees, puis traitez-le en arriere-plan. Si votre endpoint met trop de temps a repondre (plus de 20 secondes), la livraison est marquee comme echouee et une nouvelle tentative est effectuee.

Implementer l’idempotence

Allo garantit une livraison at-least-once (au moins une fois), ce qui signifie que votre endpoint peut recevoir le meme evenement plusieurs fois. Pour eviter les traitements en double :
  1. Extrayez l’en-tete webhook-id de la requete — il identifie de maniere unique chaque livraison.
  2. Verifiez si vous avez deja traite cet identifiant (par ex., recherche dans votre base de donnees).
  3. S’il est nouveau, traitez l’evenement 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"];

  // Check if already processed
  if (await db.webhookProcessed(webhookId)) {
    return res.sendStatus(200);
  }

  // Mark as processed before doing work
  await db.markWebhookProcessed(webhookId);

  // Process the event asynchronously
  queue.add("process-webhook", req.body);

  res.sendStatus(200);
});

Utiliser HTTPS

L’URL de votre webhook doit utiliser HTTPS. Les certificats auto-signes ne sont pas acceptes.

Verifier les signatures

Verifiez toujours les signatures webhook en production pour vous assurer que les requetes proviennent bien d’Allo.

Gerer la livraison dans le desordre

Les evenements peuvent arriver dans un ordre different de celui dans lequel ils se sont produits. Par exemple, tag.added pourrait arriver avant call.completed pour le meme appel. Ne supposez pas que les evenements arrivent dans l’ordre chronologique. Utilisez le champ timestamp dans le payload pour determiner quand l’evenement s’est reellement produit.

Surveiller vos endpoints

Verifiez la sante de vos webhooks depuis Parametres > Webhooks. Vous pouvez consulter les statistiques de livraison et inspecter les livraisons echouees.

Proteger 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 controle de version.
  • Effectuez une rotation des secrets s’ils sont compromis.

Desactiver la protection CSRF

Si votre framework web active la protection CSRF par defaut (par ex., Django, Rails), desactivez-la pour votre endpoint webhook. Les requetes webhook n’incluent pas de tokens CSRF et seront rejetees.