รับคำตอบ AI แบบ Async
ต้องการให้ AI ของ DealDroid ช่วยคิดคำตอบ แต่ไม่ต้องการให้ระบบของคุณเปิด connect รอ เรามีประมวลผล AI แบบ background? Async Answer API ช่วยให้คุณส่ง request แล้วรับคำตอบจาก AI ผ่าน Webhook ภายหลัง — ไม่ต้องเปิด connection ค้างไว้ขณะที่ AI กำลังคิด!
เหมาะสำหรับ
หัวข้อที่มีชื่อว่า “เหมาะสำหรับ”Async Answer API เหมาะสำหรับกรณีเหล่านี้:
- ⏱️ ระบบที่ต้องการกำหนด timeout สั้นๆ — Webhook receivers, Serverless functions, หรือ API ที่มี timeout limit
- 📬 ระบบที่ต้องการ queue request — สำหรับจัดการ load และ rate limiting
- 🚀 Integration แบบ fire-and-forget — ส่ง request แล้วรอรับผลทาง webhook
- 🔄 Background processing — ประมวลผล AI โดยไม่ block หรือรอ response
เปรียบเทียบ Sync vs Async
หัวข้อที่มีชื่อว่า “เปรียบเทียบ Sync vs Async”| Feature | Sync | Async (หน้านี้) |
|---|---|---|
| Response time | 2-180 วินาที (รอ AI ตอบ) | < 100ms (acknowledge ทันที) |
| AI Response | อยู่ใน HTTP response | ส่งผ่าน Webhook |
| ต้อง config Webhook | ❌ ไม่ต้อง | ✅ ต้องตั้งค่า |
| Use case | Real-time chat, ต้องการคำตอบทันที | Background processing, queuing |
| Timeout handling | ต้องรอจนกว่า AI จะตอบเสร็จ | Return ทันที ไม่มีปัญหา timeout |
เลือกใช้แบบไหนดี? ถ้าระบบของคุณรอได้ 2-180 วินาที ใช้ Sync version จะง่ายกว่า แต่ถ้ามี timeout limit หรือต้องการ queue ระบบ ให้ใช้ Async version
การทำงานในภาพรวม
หัวข้อที่มีชื่อว่า “การทำงานในภาพรวม”เพื่อให้เข้าใจความแตกต่างระหว่าง Sync และ Async มาดูการทำงานของทั้งสองแบบ:
Synchronous (แบบรอคำตอบ)
หัวข้อที่มีชื่อว่า “Synchronous (แบบรอคำตอบ)”Third Party → DealDroid API ⏳ รอ AI คิด (2-180 วินาที) ✅ ได้คำตอบกลับมาทันทีThird Party ← คำตอบจาก AIขั้นตอน:
- Third Party ส่ง request พร้อมคำถาม
- รอ ให้ AI ประมวลผล (2-180 วินาที)
- ได้คำตอบกลับมาในทันทีพร้อม HTTP response
ข้อดี: ง่าย ได้คำตอบทันทีใน response เดียว
ข้อเสีย: ถ้าตั้ง timeout น้อยกว่า 180 วินาที request อาจ timeout ได้
Asynchronous (แบบรับผ่าน Webhook)
หัวข้อที่มีชื่อว่า “Asynchronous (แบบรับผ่าน Webhook)”Third Party → DealDroid API ✅ ได้ requestId ทันที (< 100ms)Third Party ← requestId
... AI ประมวลผลใน background (2-180 วินาที) ...
Third Party ← Webhook: คำตอบพร้อม requestId Webhookขั้นตอน:
- Third Party ส่ง request พร้อมคำถาม
- ได้
requestIdกลับมาทันที (ไม่ต้องรอ AI) - AI ประมวลผลใน background
- เมื่อเสร็จ ระบบส่ง webhook พร้อมคำตอบและ
requestIdกลับไป - Third Party match
requestIdเพื่อรู้ว่าเป็นคำตอบของ request ไหน
ข้อดี: ไม่มีปัญหา timeout, รองรับ queue ได้
ข้อเสีย: ต้องตั้งค่า webhook endpoint และจัดการ async flow
การตั้งค่า (Configuration)
หัวข้อที่มีชื่อว่า “การตั้งค่า (Configuration)”ขั้นตอนที่ 1: เข้าหน้า Integrations
หัวข้อที่มีชื่อว่า “ขั้นตอนที่ 1: เข้าหน้า Integrations”
ไปที่หน้าการตั้งค่าการเชื่อมต่อ:
- เข้าสู่ระบบแดชบอร์ด DealDroid ของคุณ
- ไปที่ Settings > เชื่อมต่อระบบภายนอก (Integrations)
ขั้นตอนที่ 2: ตั้งค่า “When AI Answer Ready”
หัวข้อที่มีชื่อว่า “ขั้นตอนที่ 2: ตั้งค่า “When AI Answer Ready””ในส่วน “When AI Answer Ready” คุณจะพบฟิลด์สำหรับตั้งค่า webhook:
Webhook URL (Required)
หัวข้อที่มีชื่อว่า “Webhook URL (Required)”URL ที่ระบบจะส่ง AI response ไปให้เมื่อประมวลผลเสร็จ
ตัวอย่าง:
https://your-server.com/answer-webhookข้อกำหนด:
- ต้องเป็น HTTPS URL (สำหรับ production)
- ต้องสามารถรับ HTTP POST request
- ต้อง return HTTP 2xx เพื่อ acknowledge (แนะนำ 200 OK)
- ควรตอบกลับภายใน 5 วินาที
เคล็ดลับ:
- ใช้ webhook.site สำหรับทดสอบครั้งแรก
- ตรวจสอบว่า URL เข้าถึงได้จากอินเทอร์เน็ต (ไม่ใช่ localhost)
- สามารถใช้ ngrok สำหรับทดสอบ local development
Webhook Secret (Optional)
หัวข้อที่มีชื่อว่า “Webhook Secret (Optional)”Secret key สำหรับ verify ว่า request มาจาก DealDroid จริง
ตัวอย่าง: your_secure_secret_key_2026
แนวทางปฏิบัติที่ดีที่สุด:
- ใช้ random string ที่มีความยาวอย่างน้อย 32 ตัวอักษร
- เก็บเป็น environment variable บนเซิร์ฟเวอร์ของคุณ
- อย่า commit ลง version control
- หมุนเวียนเป็นระยะเพื่อความปลอดภัย
การทำงาน: ระบบจะ append secret เป็น query parameter:
https://your-server.com/answer-webhook?secret=your-secret-hereหมายเหตุ: แม้ secret จะเป็น optional แต่แนะนำให้ตั้งค่าเสมอเพื่อความปลอดภัย
ขั้นตอนที่ 3: ทดสอบ Webhook
หัวข้อที่มีชื่อว่า “ขั้นตอนที่ 3: ทดสอบ Webhook”หลังจากกรอก Webhook URL แล้ว คุณสามารถทดสอบได้ทันที:
- คลิกปุ่ม “Send Test Answer”
- ระบบจะส่ง test payload ไปยัง webhook URL ที่ตั้งค่าไว้
- ตรวจสอบว่า webhook ของคุณได้รับ request และ return 200 OK
API Reference
หัวข้อที่มีชื่อว่า “API Reference”Endpoint
หัวข้อที่มีชื่อว่า “Endpoint”POST /api/droids/:droidId/endpoint/get-droid-answer-asyncแทนที่ :droidId ด้วย Droid ID จริงของคุณ
Authentication
หัวข้อที่มีชื่อว่า “Authentication”ใช้ Third Party API Key ใน Authorization header:
Authorization: Bearer {your-api-key}วิธีหา API Key: ไปที่ Automation Panel > “When Receive message from Third Party” → คัดลอก Bearer token
Request Body
หัวข้อที่มีชื่อว่า “Request Body”{ "humanMessage": { "content": "สินค้าราคาเท่าไหร่ครับ", "type": "human" }, "chatHistory": [ { "content": "สวัสดีครับ", "type": "human" }, { "content": "สวัสดีครับ ยินดีต้อนรับค่ะ มีอะไรให้ช่วยไหมคะ?", "type": "ai" } ]}พารามิเตอร์
หัวข้อที่มีชื่อว่า “พารามิเตอร์”| Field | Type | Required | Description |
|---|---|---|---|
| humanMessage | object | ✅ Yes | ข้อความจากผู้ใช้ |
| humanMessage.content | string | ✅ Yes | เนื้อหาข้อความ |
| humanMessage.type | string | ❌ No | ประเภทข้อความ (default: “human”) |
| chatHistory | array | ❌ No | ประวัติการสนทนาก่อนหน้า เพื่อให้ AI เข้าใจบริบทมากขึ้น |
Immediate Response
หัวข้อที่มีชื่อว่า “Immediate Response”ระบบจะตอบกลับทันทีหลังรับ request (ภายใน 100ms):
{ "success": true, "requestId": "tpa-cm5xyz123abc456def", "message": "Answer request queued. Response will be sent to your configured webhook."}Response Fields
หัวข้อที่มีชื่อว่า “Response Fields”| Field | Type | Description |
|---|---|---|
| success | boolean | สถานะการรับ request |
| requestId | string | ID สำหรับ track request (ขึ้นต้นด้วย tpa-) |
| message | string | คำอธิบาย บอกว่า request ถูก queue แล้วจะส่ง webhook กลับมา |
Error Responses
หัวข้อที่มีชื่อว่า “Error Responses”400 Bad Request - Webhook ไม่ได้ตั้งค่า
หัวข้อที่มีชื่อว่า “400 Bad Request - Webhook ไม่ได้ตั้งค่า”{ "error": "Bad Request", "message": "thirdPartyAnswerWebhook is not configured. Please set up the webhook URL in Settings > Integrations before using async answer endpoint."}แก้ไข: ไปตั้งค่า Webhook URL ในหน้า Settings > Integrations ก่อน
400 Bad Request - ไม่มี Test Customer
หัวข้อที่มีชื่อว่า “400 Bad Request - ไม่มี Test Customer”{ "error": "Bad Request", "message": "Droid Missing Test Customer Id"}แก้ไข: ตรวจสอบว่า Droid ของคุณมี Test Customer ที่ตั้งค่าไว้
400 Bad Request - รูปแบบ message ผิด
หัวข้อที่มีชื่อว่า “400 Bad Request - รูปแบบ message ผิด”{ "error": "Bad Request", "message": "Invalid humanMessage format"}แก้ไข: ตรวจสอบว่า humanMessage มี content field และเป็น string
401 Unauthorized - API Key ผิด
หัวข้อที่มีชื่อว่า “401 Unauthorized - API Key ผิด”{ "error": "Unauthorized", "message": "Invalid API key"}แก้ไข: ตรวจสอบ Bearer token ใน Authorization header
รูปแบบ Webhook Response
หัวข้อที่มีชื่อว่า “รูปแบบ Webhook Response”เมื่อ AI ประมวลผลเสร็จ (ใช้เวลา 2-180 วินาที) ระบบจะส่ง POST request ไปยัง webhook URL ที่กำหนด
Success Response
หัวข้อที่มีชื่อว่า “Success Response”{ "requestId": "tpa-cm5xyz123abc456def", "droidId": 42, "customerId": 100, "answer": "สินค้านี้ราคา 599 บาทครับ มีโปรโมชั่นลด 10% ถ้าซื้อ 2 ชิ้นขึ้นไปครับ", "intents": ["product_inquiry", "pricing"], "executionTime": 2345, "timestamp": "2026-02-07T10:30:00.000Z"}Webhook Payload Fields
หัวข้อที่มีชื่อว่า “Webhook Payload Fields”| Field | Type | Description |
|---|---|---|
| requestId | string | ID ที่ได้รับตอน submit request (ใช้สำหรับ match) |
| droidId | number | ID ของ Droid ที่ประมวลผล |
| customerId | number | ID ของ Customer (Test Customer) |
| answer | string | คำตอบจาก AI |
| intents | string[] | Intent ที่ตรวจพบในคำตอบ |
| executionTime | number | เวลาที่ใช้ในการประมวลผล (milliseconds) |
| timestamp | string | เวลาที่ส่ง response (ISO 8601 format) |
Error Response
หัวข้อที่มีชื่อว่า “Error Response”เมื่อเกิดข้อผิดพลาดในการประมวลผล:
{ "requestId": "tpa-cm5xyz123abc456def", "droidId": 42, "customerId": 100, "answer": "", "error": "Failed to generate AI response: timeout", "executionTime": 30000, "timestamp": "2026-02-07T10:30:30.000Z"}Error Response Fields
หัวข้อที่มีชื่อว่า “Error Response Fields”| Field | Type | Description |
|---|---|---|
| error | string | ข้อความ error (มีเฉพาะเมื่อเกิดข้อผิดพลาด) |
| answer | string | จะเป็น empty string เมื่อเกิด error |
การจัดการ error: ตรวจสอบว่ามี field
errorหรือไม่ ถ้ามีแสดงว่าเกิดปัญหา ให้ retry หรือ log เพื่อ debug
Webhook URL Format (กับ Secret)
หัวข้อที่มีชื่อว่า “Webhook URL Format (กับ Secret)”ถ้าตั้งค่า secret ไว้ ระบบจะ append เป็น query parameter:
POST https://your-server.com/answer-webhook?secret=your-secret-hereวิธี verify:
// Express.js exampleapp.post("/answer-webhook", (req, res) => { const { secret } = req.query;
if (secret !== process.env.DEALDROID_WEBHOOK_SECRET) { return res.status(401).json({ error: "Invalid secret" }); }
// Process webhook...});คู่มือการทดสอบ (Testing Guide)
หัวข้อที่มีชื่อว่า “คู่มือการทดสอบ (Testing Guide)”วิธีที่ 1: ใช้ webhook.site
หัวข้อที่มีชื่อว่า “วิธีที่ 1: ใช้ webhook.site”webhook.site เป็นเครื่องมือฟรีสำหรับรับและดู webhook request
ขั้นตอน:
หัวข้อที่มีชื่อว่า “ขั้นตอน:”-
เปิด https://webhook.site
ระบบจะสร้าง unique URL ให้อัตโนมัติ เช่น:
https://webhook.site/abc12345-1234-5678-abcd-1234567890ab -
Copy URL ไปใส่ใน DealDroid
- ไปที่ Settings > Integrations
- วาง URL ใน “When AI Answer Ready” > Webhook URL
- คลิก Save
-
ทดสอบด้วยปุ่ม “Send Test Answer”
- คลิกปุ่มบน UI
- กลับไปดูที่ webhook.site จะเห็น request เข้ามา
- ตรวจสอบ payload ที่ได้รับ
-
ทดสอบด้วย API จริง
Terminal window curl -X POST "https://your-domain.com/api/droids/123/endpoint/get-droid-answer-async" \-H "Authorization: Bearer YOUR_API_KEY" \-H "Content-Type: application/json" \-d '{"humanMessage": {"content": "สินค้ามีอะไรบ้างครับ"}}' -
รอดู AI response ที่ webhook.site
- ใช้เวลาประมาณ 2-180 วินาที
- จะเห็น POST request ใหม่เข้ามา
- ดู JSON payload ที่มี
answer,intents,executionTime
วิธีที่ 2: ทดสอบด้วย cURL (สำหรับ developers)
หัวข้อที่มีชื่อว่า “วิธีที่ 2: ทดสอบด้วย cURL (สำหรับ developers)”Request พื้นฐาน:
หัวข้อที่มีชื่อว่า “Request พื้นฐาน:”curl -X POST "https://your-domain.com/api/droids/123/endpoint/get-droid-answer-async" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "humanMessage": { "content": "สวัสดีครับ" } }'Request พร้อม chat history:
หัวข้อที่มีชื่อว่า “Request พร้อม chat history:”curl -X POST "https://your-domain.com/api/droids/123/endpoint/get-droid-answer-async" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "humanMessage": { "content": "สินค้าราคาเท่าไหร่" }, "chatHistory": [ {"content": "มีสินค้าอะไรบ้าง", "type": "human"}, {"content": "เรามีสินค้า A, B, C ครับ", "type": "ai"} ] }'Response ที่ได้ (ทันที):
หัวข้อที่มีชื่อว่า “Response ที่ได้ (ทันที):”{ "success": true, "requestId": "tpa-cm5xyz123abc456def", "message": "Answer request queued. Response will be sent to your configured webhook."}วิธีที่ 3: Debug Webhooks Page
หัวข้อที่มีชื่อว่า “วิธีที่ 3: Debug Webhooks Page”
ดูประวัติการส่ง webhook ทั้งหมดได้ที่:
/droids/{droidId}/debug/webhooksข้อมูลที่แสดง:
- ✅ Webhook URL ที่ส่งไป
- ✅ HTTP Status ที่ได้รับ (200, 404, 500, etc.)
- ✅ Request payload ที่ส่งไป
- ✅ Response body ที่ได้รับกลับมา
- ✅ Response time (เวลาที่ใช้)
- ✅ Error message (ถ้ามี)
- ✅ Timestamp ของแต่ละ request
กรณีใช้งาน:
- Debug เมื่อ webhook ไม่ทำงาน
- ตรวจสอบ payload ที่ส่งไปจริง
- ดู error message จากเซิร์ฟเวอร์ของคุณ
- ติดตามประวัติ webhook ย้อนหลัง
คำแนะนำสำคัญ
หัวข้อที่มีชื่อว่า “คำแนะนำสำคัญ”1. Return 200 อย่างรวดเร็ว ⚡
หัวข้อที่มีชื่อว่า “1. Return 200 อย่างรวดเร็ว ⚡”// ✅ ดี - Return ทันที แล้วค่อย processres.status(200).json({ received: true });setImmediate(() => processAnswer(data));
// ❌ ไม่ดี - Process ก่อนแล้วค่อย return (ช้า)await processAnswer(data);res.status(200).json({ received: true });ทำไม? ถ้า webhook ของคุณใช้เวลานาน DealDroid อาจ timeout และ retry ส่งซ้ำ
2. Verify Secret ทุกครั้ง 🔒
หัวข้อที่มีชื่อว่า “2. Verify Secret ทุกครั้ง 🔒”// ✅ ดี - Verify ก่อนทำอะไรif (secret !== process.env.DEALDROID_WEBHOOK_SECRET) { return res.status(401).json({ error: "Invalid secret" });}
// ❌ อันตราย - ไม่ verify (ใครก็เรียกได้)// ไม่มีการตรวจสอบ secretทำไม? เพื่อป้องกันไม่ให้คนอื่นส่ง fake webhook มา
3. ใช้ requestId เพื่อป้องกัน Deduplicate 🔄
หัวข้อที่มีชื่อว่า “3. ใช้ requestId เพื่อป้องกัน Deduplicate 🔄”// ✅ ดี - ตรวจสอบว่าเคย process แล้วหรือยังconst exists = await db.webhooks.findOne({ requestId });if (exists) { console.log(`[${requestId}] Already processed, skipping`); return res.status(200).json({ received: true, duplicate: true });}
await db.webhooks.create({ requestId, answer, processedAt: new Date() });ทำไม? ในกรณีที่เกิด retry webhook อาจถูกส่งซ้ำ ต้องป้องกันไม่ให้ process ซ้ำ
Webhook Log Retention (การเก็บประวัติ Webhook)
หัวข้อที่มีชื่อว่า “Webhook Log Retention (การเก็บประวัติ Webhook)”ระยะเวลาเก็บข้อมูล
หัวข้อที่มีชื่อว่า “ระยะเวลาเก็บข้อมูล”- Webhook logs จะถูกเก็บไว้ 7 วัน
- หลังจาก 7 วัน logs จะถูกลบอัตโนมัติ
- ระบบจะ cleanup ด้วย scheduled command
การดู Logs
หัวข้อที่มีชื่อว่า “การดู Logs”ดู webhook logs ได้ 2 ทาง:
-
หน้า Debug Webhooks -
/droids/{droidId}/debug/webhooks- แสดง request/response ทั้งหมด
- Filter ตาม status, date range
- ดูรายละเอียดแต่ละ webhook
-
Server Logs - สำหรับ admin
- ใช้ command:
node ace cleanup:webhook-logs(manual) - Cron job รันอัตโนมัติทุกวัน
- ใช้ command:
Best Practices สำหรับ Logging
หัวข้อที่มีชื่อว่า “Best Practices สำหรับ Logging”- เก็บ log ในฝั่งคุณด้วย - อย่าพึ่ง DealDroid logs อย่างเดียว
- Export สำคัญ - ถ้ามี webhook สำคัญให้ export เก็บไว้
- Track requestId - ใช้ requestId เพื่อ match ระหว่างสองระบบ
คำถามที่พบบ่อย (FAQ)
หัวข้อที่มีชื่อว่า “คำถามที่พบบ่อย (FAQ)”Q: ทำไมต้องใช้ Async แทน Sync?
หัวข้อที่มีชื่อว่า “Q: ทำไมต้องใช้ Async แทน Sync?”A: ใช้ Async เมื่อ:
- ระบบของคุณมี timeout น้อยกว่า 180 วินาที (เช่น Serverless functions)
- ต้องการ queue requests เพื่อจัดการ load
- ต้องการ fire-and-forget pattern (ส่งแล้วทำงานอื่นต่อ)
ถ้าระบบของคุณรอได้และต้องการคำตอบทันที ใช้ Sync version จะง่ายกว่า
Q: Webhook URL ต้องเป็น HTTPS เท่านั้นหรือ?
หัวข้อที่มีชื่อว่า “Q: Webhook URL ต้องเป็น HTTPS เท่านั้นหรือ?”A: ใช่ สำหรับ production ต้องเป็น HTTPS เพื่อความปลอดภัย อย่างไรก็ตาม สำหรับการทดสอบใน development คุณสามารถใช้:
- webhook.site (HTTPS โดยอัตโนมัติ)
- ngrok สำหรับ tunnel localhost (ให้ HTTPS URL)
Q: จะเกิดอะไรถ้า webhook ของผมไม่ตอบ 200 OK?
หัวข้อที่มีชื่อว่า “Q: จะเกิดอะไรถ้า webhook ของผมไม่ตอบ 200 OK?”A: DealDroid จะ retry ส่ง webhook อีกครั้ง (ตาม retry policy) ถ้ายังไม่สำเร็จจะบันทึกเป็น failed log คุณสามารถดูได้ในหน้า Debug Webhooks
Tips: ให้ webhook ของคุณ return 200 OK เร็วที่สุด (ภายใน 1-2 วินาที) แล้วค่อย process ใน background
Q: ผมจะรู้ได้อย่างไรว่า webhook มาจาก DealDroid จริง?
หัวข้อที่มีชื่อว่า “Q: ผมจะรู้ได้อย่างไรว่า webhook มาจาก DealDroid จริง?”A: ใช้ Webhook Secret ที่ตั้งค่าไว้ ระบบจะส่งมาเป็น query parameter ?secret=your-secret ตรวจสอบ secret นี้บนเซิร์ฟเวอร์ของคุณเสอ:
if (req.query.secret !== process.env.DEALDROID_WEBHOOK_SECRET) { return res.status(401).json({ error: "Invalid secret" });}Q: Webhook อาจถูกส่งซ้ำหรือไม่?
หัวข้อที่มีชื่อว่า “Q: Webhook อาจถูกส่งซ้ำหรือไม่?”A: ได้ ในกรณีที่:
- Webhook ของคุณไม่ return 200 OK
- เกิด network timeout
- DealDroid retry เนื่องจาก error
แก้ไข: ใช้ requestId เพื่อ deduplicate - ตรวจสอบว่า requestId นี้เคย process แล้วหรือยัง ถ้าเคย process แล้วให้ skip
Q: AI ใช้เวลากี่วินาทีในการตอบ?
หัวข้อที่มีชื่อว่า “Q: AI ใช้เวลากี่วินาทีในการตอบ?”A: โดยปกติจะใช้เวลา 10-180 วินาที ขึ้นอยู่กับ:
- ความซับซ้อนของคำถาม
- ขนาดของ chat history
- Load ของระบบ AI ขณะนั้น
คุณสามารถดูเวลาจริงได้จาก field executionTime ใน webhook response (หน่วยเป็น milliseconds)
Q: ผมสามารถทดสอบโดยไม่ต้องมี webhook endpoint จริงได้ไหม?
หัวข้อที่มีชื่อว่า “Q: ผมสามารถทดสอบโดยไม่ต้องมี webhook endpoint จริงได้ไหม?”A: ได้! ใช้ webhook.site:
- เปิด webhook.site -> ได้ unique URL
- Copy URL ไปใส่ใน Settings > Integrations
- ส่ง request ไปที่ API
- กลับไปดู webhook.site จะเห็น payload ที่ส่งมา
Q: ผมจะดู log ของ webhook ที่ส่งไปได้ที่ไหน?
หัวข้อที่มีชื่อว่า “Q: ผมจะดู log ของ webhook ที่ส่งไปได้ที่ไหน?”A: มี 2 วิธี:
1. จากหน้า Integrations (ทางลัด)

คลิกที่ link “ดูประวัติการส่ง webhook” ในหน้า Settings > Integrations ส่วน “When AI Answer Ready”
2. เข้าหน้า Debug Webhooks โดยตรง
ไปที่ /droids/{droidId}/debug/webhooks
ข้อมูลที่จะเห็น:
- ทุก webhook ที่ส่งไป (7 วันล่าสุด)
- HTTP status ที่ได้รับ
- Request/Response payload
- Error message (ถ้ามี)
- Response time
Q: ผมสามารถเปลี่ยน webhook URL ได้ไหม?
หัวข้อที่มีชื่อว่า “Q: ผมสามารถเปลี่ยน webhook URL ได้ไหม?”A: ได้ ไปที่ Settings > Integrations แล้วแก้ไข Webhook URL แต่ควร:
- ทดสอบ URL ใหม่ด้วยปุ่ม “Send Test Answer” ก่อน
- ตรวจสอบว่า URL เข้าถึงได้จากอินเทอร์เน็ต
- อัปเดต secret (ถ้ามีการเปลี่ยนแปลง)
Q: จะเกิดอะไรถ้า API Key ของผมถูกโจรกรรม?
หัวข้อที่มีชื่อว่า “Q: จะเกิดอะไรถ้า API Key ของผมถูกโจรกรรม?”A: สร้าง API Key ใหม่ทันทีที่:
- เปิด Automation Panel
- ไปที่ “When Receive message from Third Party”
- คลิก Regenerate เพื่อสร้าง token ใหม่
- อัปเดตแอปพลิเคชันของคุณด้วย token ใหม่
⚠️ คำเตือน: Token เก่าจะใช้งานไม่ได้ทันทีหลังสร้างใหม่
เสร็จสิ้น! 🎉
หัวข้อที่มีชื่อว่า “เสร็จสิ้น! 🎉”คุณพร้อมใช้ Async Answer API แล้ว!
ด้วย Async Answer API คุณสามารถ:
- ✅ ใช้ AI ของ DealDroid แม้ระบบมี timeout สั้น
- ✅ Queue requests เพื่อจัดการ load ได้ดีขึ้น
- ✅ ประมวลผล AI แบบ background ไม่ block system
- ✅ Track และ debug ผ่านหน้า Debug Webhooks
ขั้นตอนถัดไป:
- ตั้งค่า Webhook URL ใน Settings > Integrations
- ทดสอบด้วย webhook.site
- สร้าง webhook receiver ตามแนวทาง Best Practices
- เริ่มส่ง request และรอรับ AI response!
ต้องการความช่วยเหลือหรือไม่? เรายินดีสนับสนุนคุณ! 😊