ข้อมูลอ้างอิง
Webhooks
สมัครรับอีเวนต์ของการสนทนาและข้อความด้วยเพย์โหลดที่ลงนามด้วย HMAC
Webhooks ช่วยให้คุณสะท้อนอีเวนต์ของ AskAIs Customer Service ไปยังระบบของคุณเอง — CRM, การวิเคราะห์, Slack หรืออะไรก็ตามที่สื่อสารผ่าน HTTP
การสร้าง webhook
ไปที่ การตั้งค่า → Webhooks → Webhook ใหม่ เลือกอีเวนต์ วาง URL ของคุณ แล้วบันทึก คุณจะได้รับ secret ที่ใช้สำหรับลงนามเพย์โหลด
ประเภทอีเวนต์
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 */ }
}การตรวจสอบลายเซ็น
คำนวณ HMAC-SHA256 จาก timestamp + "." + rawBody ด้วย secret ของ webhook แล้วเปรียบเทียบกับเฮดเดอร์ 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 จำลอง มีประโยชน์สำหรับการตรวจสอบว่าปลายทางของคุณยอมรับ ลายเซ็นก่อนที่จะใช้งานจริง