Référence
Webhooks
Pulsr pousse ce qui se passe après une requête (rapports de remise, messages entrants, événements d’appel) vers un endpoint HTTPS chez vous, sous forme de POST avec un corps JSON.
Ce que vous pouvez recevoir
| Événement | Où définir l’URL | Guide |
|---|---|---|
| Rapports de remise SMS | webhooks.delivery.url à chaque envoi | Rapports de remise |
| SMS entrants | Sur votre numéro, dans le tableau de bord | Recevoir des SMS |
| Rapports de remise et de lecture RCS | webhooks.delivery.url et webhooks.seen.url à chaque envoi | RCS |
| RCS entrants et clics sur les boutons | Sur votre expéditeur RCS, dans le tableau de bord | RCS |
| Événements d’appel | Un abonnement aux événements sur votre configuration d’appels | Voix |
Écrire un handler
Les webhooks de messages contiennent un tableau results : une même requête peut porter plusieurs événements ; les événements d’appel arrivent un par requête. Un bon handler vérifie que la requête vient de Pulsr, enregistre ou met en file les événements, et répond 200 immédiatement.
app/webhooks/pulsr/route.ts
Sécuriser votre endpoint
- Utilisez HTTPS. Les URL de webhook doivent être accessibles publiquement en HTTPS, avec un certificat valide.
- Ajoutez un secret dans l’URL. Générez une longue valeur aléatoire, ajoutez-la en paramètre (
https://yourapp.com/webhooks/pulsr?token=…) et comparez-la en temps constant, comme dans le handler ci-dessus. Faites-la tourner comme n’importe quel secret. - Ne faites jamais confiance aveuglément au contenu. Retrouvez le
messageIddans vos propres données avant d’agir sur un événement.
Acquitter et dédoublonner
- Répondez vite. Renvoyez un statut
2xxdès que les événements sont enregistrés. Faites le travail long (base de données, e-mails, appels à vos propres API) dans une tâche en arrière-plan. - Attendez-vous à des doublons. Si votre endpoint expire ou échoue, le même événement peut être renvoyé. Rendez le traitement idempotent en vous appuyant sur le
messageId(ou lecallIdpour la voix) et le statut. - Ne comptez pas sur l’ordre. Les événements peuvent arriver dans le désordre. Comparez les horodatages comme
doneAtavant de remplacer un statut récent par un plus ancien.
Tester en local
Pulsr a besoin d’une URL publique pour joindre votre machine. Lancez un tunnel comme ngrok http 3000 ou cloudflared tunnel --url http://localhost:3000, puis utilisez l’adresse HTTPS affichée comme URL de webhook.