Référence
Webhooks
Abonnez-vous aux événements de conversation et de message avec des charges utiles signées par HMAC.
Les webhooks vous permettent de répliquer les événements AskAIs Customer Service dans vos propres systèmes — CRM, analytics, Slack, tout ce qui parle HTTP.
Créer un webhook
Accédez à Paramètres → Webhooks → Nouveau webhook. Choisissez les événements, collez votre URL, enregistrez. Vous obtiendrez un secret utilisé pour signer les charges utiles.
Types d'événements
conversation.createdconversation.updated— statut, priorité, assignationconversation.resolvedmessage.created— tout message, tout expéditeurcontact.createdcontact.updated
Format de la charge utile
POST https://your-app.com/webhooks/singlink
Content-Type: application/json
X-SingLink-Event: message.created
X-SingLink-Signature: sha256=ab12cd34...
X-SingLink-Timestamp: 1747300800
{
"id": "evt_01HX...",
"type": "message.created",
"tenantId": "tnt_01HX...",
"data": { /* event-specific payload */ }
}Vérifier les signatures
Calculez le HMAC-SHA256 sur timestamp + "." + rawBodyavec le secret du webhook. Comparez-le à l'en-tête X-SingLink-Signature (de manière sûre face au temps).
import { createHmac, timingSafeEqual } from "node:crypto";
function verify(req, secret) {
const ts = req.headers["x-singlink-timestamp"];
const sig = req.headers["x-singlink-signature"];
const expected = "sha256=" + createHmac("sha256", secret)
.update(ts + "." + req.rawBody)
.digest("hex");
return timingSafeEqual(Buffer.from(sig), Buffer.from(expected));
}Nouvelles tentatives
Nous réessayons les réponses non-2xx avec un backoff exponentiel : 1s, 10s, 1m, 10m, 1h. Après 5 tentatives, l'événement est marqué comme échoué ; vous pouvez voir les échecs dans l'administration.
Ping de test
Chaque webhook dispose d'un bouton Envoyer un test qui poste un événement webhook.ping factice. Utile pour vérifier que votre point de terminaison accepte les signatures avant la mise en production.