ข้ามไปยังเนื้อหา

แก้ปัญหาที่พบบ่อย

หาอาการที่ตรงกับที่เจอ แล้วดูสาเหตุและวิธีแก้ในแถวเดียวกัน

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

ไล่เช็กตามลำดับนี้

  1. Status ยังเป็น DRAFT อยู่หรือเปล่า การสร้าง campaign ไม่ได้เริ่มโทรให้ ต้องเรียก Start ด้วย
  2. เวลาเริ่ม startDateTime เป็น UTC ค่า 2026-10-01T09:00:00Z คือ 16:00 เวลากรุงเทพฯ ไม่ใช่ 09:00
  3. ช่วงเวลาโทร ตอนนี้อยู่ใน timeWindows ตามเวลากรุงเทพฯ หรือเปล่า วันที่ไม่ได้ใส่ไว้ ระบบจะไม่โทรเลย
  4. เวลาสิ้นสุด ถ้าเลย endDateTime ไปแล้ว campaign จะเป็น EXPIRED
  5. หยุดชั่วคราว campaign ที่เป็น PAUSED จะรอจนกว่าคุณจะ resume

scheduler รันราวทุก 30 วินาที จึงควรเผื่อเวลาสัก 1 นาทีหลังถึงเวลาเริ่ม

อาการ สาเหตุ วิธีแก้
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 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