แก้ปัญหาที่พบบ่อย
หาอาการที่ตรงกับที่เจอ แล้วดูสาเหตุและวิธีแก้ในแถวเดียวกัน
Request ไม่ผ่าน
หัวข้อที่มีชื่อว่า “Request ไม่ผ่าน”body ของ error ทุกตัวมี code ดูรายการทั้งหมดได้ในตาราง Error code
| อาการ | สาเหตุ | วิธีแก้ |
|---|---|---|
401 API key is required |
ไม่ได้ส่ง header X-API-Key มา |
ส่ง header นี้ทุกครั้งที่เรียก /api/* |
401 Invalid API key |
key ผิด มีช่องว่างเกินมา หรือมีคนสร้าง key ใหม่ใน dashboard ไปแล้ว | คัดลอก key ปัจจุบันจาก ระบบ → นักพัฒนา → API Key |
400 property maxAttempts should not exist (หรือ field อื่น) |
ส่งค่าการตั้ง schedule ไปที่ สร้าง Campaign | endpoint สร้างรับแค่ agentId, name และ recipients ค่าการตั้ง schedule ให้ส่งไปที่ เริ่ม Campaign |
400 Recipient validation failed |
recipient อย่างน้อย 1 คนไม่ตรงกับ paramsSchema ของ agent ระบบจึงไม่สร้างอะไรเลย |
ดูใน errors แต่ละบรรทัดบอกแถวและ field ที่ผิด ดู paramsSchema |
409 CAMPAIGN_NAME_TAKEN |
ชื่อ campaign ต้องไม่ซ้ำกันภายในองค์กร | เติมวันที่หรือเลขรอบต่อท้ายชื่อ |
409 Campaign has already been started… |
เรียก Start กับ campaign ที่ไม่ได้เป็น DRAFT |
campaign หนึ่งเริ่มได้ครั้งเดียว ถ้าจะโทรหาคนกลุ่มเดิมอีก ให้สร้าง campaign ใหม่ |
403 Your organization is not allowed to make calls. |
องค์กรของคุณปิดสิทธิ์การโทรอยู่ | ติดต่อ Gowajee |
400 Unknown caller ID: … |
เบอร์ใน callerIds ไม่ใช่เบอร์ขององค์กร หรือเขียนไม่ตรงกับที่ลงทะเบียนไว้ |
คัดลอกให้ตรงตามที่แสดงใน ระบบ → ตั้งค่า → เบอร์โทรศัพท์ |
400 Unknown voice: … |
key ใน ttsVoiceKeys สะกดผิด หรือ voice นั้นเลิกใช้แล้ว |
ใช้ voiceKey จาก voice catalog |
404 CAMPAIGN_NOT_FOUND, CALL_NOT_FOUND… |
ไม่มี ID นี้ หรือ ID เป็นขององค์กรอื่น | เช็ก ID อีกครั้ง และเช็กว่าใช้ API key ถูกตัว |
400 INVALID_ID |
ID ใน path ไม่ใช่ UUID เช่น ส่งชื่อ campaign หรือ string ว่างมา | ส่ง id ให้ตรงกับที่ API ตอบกลับมา |
409 INVALID_CAMPAIGN_STATE |
status ปัจจุบันของ campaign สั่ง pause, resume หรือ cancel ไม่ได้ | ดู เงื่อนไขการเปลี่ยน Status |
400 timeWindows.0.time.0.start must be HH:MM… |
ชั่วโมงมีหลักเดียว เช่น 9:00 |
ใส่ 2 หลักเสมอ เช่น 09:00 |
Campaign ไม่โทรหาใครเลย
หัวข้อที่มีชื่อว่า “Campaign ไม่โทรหาใครเลย”ไล่เช็กตามลำดับนี้
- Status ยังเป็น
DRAFTอยู่หรือเปล่า การสร้าง campaign ไม่ได้เริ่มโทรให้ ต้องเรียก Start ด้วย - เวลาเริ่ม
startDateTimeเป็น UTC ค่า2026-10-01T09:00:00Zคือ 16:00 เวลากรุงเทพฯ ไม่ใช่ 09:00 - ช่วงเวลาโทร ตอนนี้อยู่ใน
timeWindowsตามเวลากรุงเทพฯ หรือเปล่า วันที่ไม่ได้ใส่ไว้ ระบบจะไม่โทรเลย - เวลาสิ้นสุด ถ้าเลย
endDateTimeไปแล้ว campaign จะเป็นEXPIRED - หยุดชั่วคราว campaign ที่เป็น
PAUSEDจะรอจนกว่าคุณจะ resume
scheduler รันราวทุก 30 วินาที จึงควรเผื่อเวลาสัก 1 นาทีหลังถึงเวลาเริ่ม
Retry ทำงานไม่เป็นอย่างที่คิด
หัวข้อที่มีชื่อว่า “Retry ทำงานไม่เป็นอย่างที่คิด”| อาการ | สาเหตุ | วิธีแก้ |
|---|---|---|
400 retryInterval must be at least 300000 ms (5 minutes)… |
retryInterval มีหน่วยเป็นมิลลิวินาที และถ้าเปิด retry ไว้ ต้องไม่ต่ำกว่า 5 นาที ค่า 2 คือ 2 ms |
2 ชั่วโมง = 7200000 หรือไม่ต้องส่งมา ระบบจะใช้ 1 ชั่วโมง ดู Retry |
| ไม่มี retry เลย | maxAttempts มี default เป็น 1 (โทรครั้งเดียว ไม่ retry) |
ส่ง maxAttempts: 3 เพื่อโทรครั้งแรกและ retry อีก 2 ครั้ง |
| retry ไปเกิดตอนเช้าวันถัดไป | ถึงรอบ retry ตอนที่อยู่นอกช่วงเวลาโทร | ระบบทำงานถูกต้องแล้ว retry จะรอช่วงเวลาโทรถัดไป |
| บางคนไม่เคยได้ retry | คนนั้นติดต่อได้แล้ว 1 ครั้ง (COMPLETED รวมถึงเข้า voicemail) |
ระบบทำงานถูกต้องแล้ว |
| retry หยุดไป | campaign เป็น PAUSED อยู่ |
Resume campaign แล้ว retry ที่ถึงเวลาจะทำงานต่อ |
ระบบโทรหาบางคนอีกรอบ ทั้งที่ตั้ง maxAttempts: 1 |
call ของคนนั้นจบเป็น CANCELLED เพราะรอใน queue นานเกินไป กรณีนี้ไม่นับเป็นจำนวนครั้ง |
ระบบทำงานถูกต้องแล้ว |
ปัญหาเรื่อง webhook
หัวข้อที่มีชื่อว่า “ปัญหาเรื่อง webhook”| อาการ | สาเหตุ | วิธีแก้ |
|---|---|---|
| ไม่มีอะไรส่งมาเลย | ยังไม่ได้บันทึก webhook URL หรือ URL เข้าถึงจากอินเทอร์เน็ตไม่ได้ | ตั้งค่าที่ ระบบ → นักพัฒนา → Webhook URL URL ต้องเข้าถึงได้จากภายนอก และควรใช้ HTTPS |
ไม่มีอะไรส่งมาเลย และ URL ของคุณ redirect ต่อ (เช่น จาก http:// ไป https://) |
ระบบไม่ตาม redirect และนับ 3xx เป็นการส่งไม่สำเร็จ |
บันทึก URL ปลายทางให้ตรงกับที่ server รอรับทุกส่วน (scheme, host, path และ / ท้าย URL) |
| ผลบางรายการไม่มาเลย | server ของคุณล่มหรือตอบช้า Gowajee จะลองส่ง 3 ครั้ง (รอ 1 วินาที แล้วรออีก 2 วินาที) แต่ละครั้งมี timeout 10 วินาที จากนั้นจะหยุดส่ง | ตอบ 2xx ให้เร็วแล้วค่อยประมวลผลทีหลัง และใช้ polling เป็นตัวสำรอง |
| บาง call ไม่มี webhook ส่งมา | call ที่เป็น EXPIRED, call ที่หยุดไปเพราะยกเลิก campaign, call ที่เป็น ANALYSIS_FAILED และ call ที่ COMPLETED แต่ไม่ได้วิเคราะห์ (ไม่มีไฟล์บันทึกเสียงหรือ transcript หรือ agent หยุดเพราะ error) จะไม่มี webhook |
อ่าน call เหล่านี้ด้วย polling ดู ส่งมาตอนไหน |
| call เดียวกันส่งมา 2 ครั้ง | เป็นการส่งซ้ำ หรือเป็นการวิเคราะห์ซ้ำ (isReAnalysis: true) |
upsert ด้วย call.id |
callDuration ทำให้ parser พัง |
ค่านี้เป็น string เช่น "120.120" |
แปลงด้วย parseFloat / float() |
ไฟล์บันทึกเสียงและข้อมูล
หัวข้อที่มีชื่อว่า “ไฟล์บันทึกเสียงและข้อมูล”| อาการ | สาเหตุ | วิธีแก้ |
|---|---|---|
เปิดลิงก์ไฟล์บันทึกเสียงแล้วได้ 403 จาก storage |
ลิงก์ไฟล์บันทึกเสียงหมดอายุภายใน 1 ชั่วโมง | ขอลิงก์ใหม่จาก /record-url ทุกครั้งที่ต้องใช้ |
404 RECORDING_NOT_FOUND |
call นั้นต่อสายไม่ติด (NO_ANSWER, BUSY…) หรือยังโทรอยู่ |
มีไฟล์เสียงเฉพาะ call ที่ต่อสายติดแล้วเท่านั้น |
410 RECORDING_DELETED |
นโยบายเก็บข้อมูลลบไฟล์บันทึกเสียงไปแล้ว หรือมีคนลบ campaign ของ call นั้นไปแล้ว | กู้คืนไม่ได้ ไฟล์ไหนต้องเก็บไว้ ให้บันทึกไว้เอง |
tel หน้าตาเป็น 08xxxxxx78 และชื่อว่างเปล่า |
นโยบายเก็บข้อมูลขององค์กรลบข้อมูลส่วนบุคคลไปแล้ว | ดู dataExpired ใน call และ webhook หรือ personalDataMasked ในข้อมูล recipient ถ้าต้องใช้ข้อมูลนานกว่านั้น ให้เก็บสำเนาไว้เอง |
เลข 0 ตัวหน้าของเบอร์โทรหายไป |
ส่ง tel มาเป็น number ใน JSON |
ส่ง tel เป็น string เสมอ เช่น "0812345678" |
| เวลาเพี้ยนไป 7 ชั่วโมง | timestamp ใน API เป็น UTC | แปลงเป็นเวลากรุงเทพฯ (UTC+7) ก่อนแสดงผล |
ยังแก้ไม่ได้ ส่ง campaign ID, call ID หรือ sessionId พร้อม request และ response ที่ได้จริงมาให้ทีม support ของ Gowajee