संदर्भ
Webhooks
HMAC-हस्ताक्षरित पेलोड के साथ वार्तालाप और संदेश इवेंट्स की सदस्यता लें।
Webhooks आपको AskAIs Customer Service इवेंट्स को अपने सिस्टम में मिरर करने देते हैं — CRM, एनालिटिक्स, Slack, और कुछ भी जो HTTP बोलता है।
webhook बनाना
सेटिंग्स → Webhooks → नया webhook पर जाएँ। इवेंट्स चुनें, अपना URL पेस्ट करें, सहेजें। आपको पेलोड पर हस्ताक्षर करने के लिए उपयोग होने वाला एक सीक्रेट मिलेगा।
इवेंट प्रकार
conversation.createdconversation.updated— स्थिति, प्राथमिकता, असाइनमेंटconversation.resolvedmessage.created— कोई भी संदेश, कोई भी प्रेषकcontact.createdcontact.updated
पेलोड का स्वरूप
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 */ }
}हस्ताक्षर सत्यापित करना
webhook सीक्रेट के साथ timestamp + "." + rawBody पर HMAC-SHA256 की गणना करें। इसकी तुलना X-SingLink-Signature हेडर से करें (टाइमिंग-सुरक्षित रूप से)।
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));
}पुनः प्रयास
हम गैर-2xx प्रतिक्रियाओं को एक्सपोनेंशियल बैकऑफ़ के साथ पुनः प्रयास करते हैं: 1s, 10s, 1m, 10m, 1h। 5 प्रयासों के बाद इवेंट को विफल के रूप में चिह्नित किया जाता है; आप विफलताओं को एडमिन में देख सकते हैं।
टेस्ट ping
प्रत्येक webhook में एक टेस्ट भेजें बटन होता है जो एक डमी webhook.ping इवेंट पोस्ट करता है। लाइव होने से पहले यह सत्यापित करने के लिए उपयोगी है कि आपका एंडपॉइंट हस्ताक्षर स्वीकार करता है।