ตั้งเวลาและตัวเลือกการโทร
การตั้งค่าทุกอย่างในหน้านี้ส่งมาใน request เดียว คือ
POST /api/campaign/:id/schedule ส่งครั้งเดียวกับ campaign ที่เป็น DRAFT
field ที่บังคับมีแค่ startDateTime field ไหนไม่ส่งมา ระบบจะใช้ค่า default ตามตารางด้านล่าง
สรุปการตั้งค่า
หัวข้อที่มีชื่อว่า “สรุปการตั้งค่า”| อยากกำหนดอะไร | Field | ถ้าไม่ส่งมา | อ่านต่อ |
|---|---|---|---|
| เริ่มโทรได้เมื่อไรและต้องหยุดเมื่อไร | startDateTime, endDateTime |
ไม่มีกำหนดสิ้นสุด | เวลาเริ่มและเวลาสิ้นสุด |
| โทรได้วันไหน เวลาไหน | timeWindows |
จ.–ศ. 09:00–19:00, ส.–อา. 10:00–19:00 | ช่วงเวลาโทร |
| โทรหาแต่ละคนกี่ครั้ง และเว้นนานเท่าไร | maxAttempts, retryInterval |
โทร 1 ครั้ง ไม่ retry | Retry |
| ลูกค้าเห็นเบอร์ไหนโทรเข้ามา | callerIds |
เบอร์ของ agent ถ้าไม่มีจะใช้เบอร์กลางของ Gowajee | เบอร์โทรออก |
| agent พูดด้วย voice ไหน | ttsVoiceKeys |
voice ที่ตั้งไว้ใน agent | Voice |
| ข้ามคนที่เพิ่งโทรหาไปไม่นาน | removeDuplicates |
ปิด | ตัด recipient ที่ซ้ำ |
ตัวอย่าง request ที่ใช้ครบทุก field
{ "startDateTime": "2026-10-01T02:00:00.000Z", "endDateTime": "2026-10-07T11:00:00.000Z", "timeWindows": [ { "dayOfWeek": 1, "time": [{ "start": "09:00", "end": "12:00" }, { "start": "13:00", "end": "18:00" }] }, { "dayOfWeek": 2, "time": [{ "start": "09:00", "end": "18:00" }] }, { "dayOfWeek": 3, "time": [{ "start": "09:00", "end": "18:00" }] }, { "dayOfWeek": 4, "time": [{ "start": "09:00", "end": "18:00" }] }, { "dayOfWeek": 5, "time": [{ "start": "09:00", "end": "18:00" }] } ], "maxAttempts": 3, "retryInterval": 7200000, "callerIds": ["+6621234567", "+6621234568"], "ttsVoiceKeys": ["nicha", "suda"]}เวลาเริ่มและเวลาสิ้นสุด
หัวข้อที่มีชื่อว่า “เวลาเริ่มและเวลาสิ้นสุด”| Field | Format | ความหมาย |
|---|---|---|
startDateTime |
ISO-8601, UTC | เวลาที่เร็วที่สุดที่โทร call แรกได้ ถ้าใส่เวลาในอดีต ระบบจะถือว่า “เริ่มทันที” |
endDateTime |
ISO-8601, UTC หรือ null |
เส้นตาย คนที่ยังไม่ได้โทรหาภายในเวลานี้จะเป็น EXPIRED และ campaign ก็จะเป็น EXPIRED ด้วย ถ้าส่ง null หรือไม่ส่งมา แปลว่าไม่มีกำหนดสิ้นสุด |
พอสั่งเริ่มแล้ว campaign จะเป็น SCHEDULED scheduler ของ Gowajee เช็กทุก ๆ ประมาณ 30 วินาที เมื่อเลย
startDateTime มาแล้ว และ ตอนนั้นอยู่ในช่วงเวลาโทร campaign จะเปลี่ยนเป็น RUNNING แล้วเริ่มโทร ช่วงพักระหว่าง
ช่วงเวลาโทรก็ยังนับเป็น RUNNING
ช่วงเวลาโทร
หัวข้อที่มีชื่อว่า “ช่วงเวลาโทร”timeWindows กำหนด วัน และ ช่วงเวลาในแต่ละวัน ที่เริ่มโทรได้ เวลาทั้งหมดเป็น เวลาไทย (UTC+7) แบบ 24
ชั่วโมงในรูป HH:MM
"timeWindows": [ { "dayOfWeek": 1, "time": [{ "start": "09:00", "end": "12:00" }, { "start": "13:00", "end": "18:00" }] }, { "dayOfWeek": 6, "time": [{ "start": "10:00", "end": "15:00" }] }]ตัวอย่างนี้โทรได้วันจันทร์ 09:00–12:00 กับ 13:00–18:00 (เว้นช่วงพักเที่ยง) และวันเสาร์ 10:00–15:00 วันอื่นไม่โทรเลย
dayOfWeek |
1 | 2 | 3 | 4 | 5 | 6 | 7 |
|---|---|---|---|---|---|---|---|
| วัน | จ. | อ. | พ. | พฤ. | ศ. | ส. | อา. |
เงื่อนไข
- วันที่ไม่มีในรายการ ระบบจะไม่โทร
- ใส่ทุกช่วงเวลาของวันเดียวกันไว้ใน array
timeของ object เดียว ถ้าส่งdayOfWeekเดียวกันมาสองครั้ง ระบบจะใช้แค่ตัวแรก startต้องมาก่อนendช่วงเวลาจึงข้ามเที่ยงคืนไม่ได้- ชั่วโมงต้องมีสองหลัก เช่น
09:00ไม่ใช่9:00ถ้าส่ง9:00จะได้400 - แต่ละวันต้องมีอย่างน้อยหนึ่งช่วงเวลา ถ้าส่ง
"time": []จะได้400 - ช่วงเวลาโทรกำหนดแค่ว่า call เริ่ม ได้เมื่อไร call ที่เริ่มตอน 17:59 คุยเลย 18:00 ไปได้
- ถ้าไม่ส่ง
timeWindowsมา ระบบจะใช้ default คือ จ.–ศ. 09:00–19:00 และ ส.–อา. 10:00–19:00
ถ้า call จบด้วย NO_ANSWER, BUSY หรือ FAILED Gowajee โทรหาคนนั้นซ้ำ (retry) ให้ได้
| Field | Default | ความหมาย |
|---|---|---|
maxAttempts |
1 |
จำนวน call ทั้งหมดต่อ recipient หนึ่งคน นับรวมครั้งแรกด้วย 3 คือโทรครั้งแรก แล้ว retry ได้อีกไม่เกิน 2 ครั้ง ส่วน 1 คือไม่ retry เลย |
retryInterval |
3600000 (1 ชั่วโมง) ถ้า maxAttempts มากกว่า 1 ถ้าไม่ใช่จะเป็น 0 |
เวลารอขั้นต่ำนับจากที่ call ก่อนหน้าจบ จนถึงการโทรครั้งถัดไป หน่วยเป็น มิลลิวินาที ถ้า maxAttempts มากกว่า 1 ต้องตั้งอย่างน้อย 300000 (5 นาที) |
call ที่จบด้วย CANCELLED เช่น เพราะรออยู่ในคิวนานเกินไป ระบบก็จะโทรซ้ำให้เหมือนกัน กรณีนี้ไม่นับเป็นหนึ่งครั้งของ
maxAttempts จึงโทรซ้ำให้แม้ตั้ง maxAttempts เป็น 1
ตัวอย่างลำดับการโทร
หัวข้อที่มีชื่อว่า “ตัวอย่างลำดับการโทร”ตั้ง maxAttempts: 3, retryInterval: 7200000 (2 ชั่วโมง) และช่วงเวลาโทรวันธรรมดา 09:00–18:00
| ครั้งที่ | จบตอน | ผล | จากนั้น |
|---|---|---|---|
| 1 | จ. 09:05 | NO_ANSWER |
retry ได้หลัง 11:05 |
| 2 | จ. 11:06 | BUSY |
retry ได้หลัง 13:06 |
| 3 | จ. 13:09 | COMPLETED |
จบ ติดต่อได้แล้ว |
เวลารอนับจากตอนที่ call ครั้งก่อน จบ ไม่ได้นับจากตอนที่เริ่มโทร
ถ้าครั้งที่ 2 จบตอน 17:30 รอบ retry จะตรงกับ 19:30 เป็นเวลานอกช่วงเวลาโทร ระบบจึงรอโทรตอน 09:00 ของวันทำการถัดไป
ระบบจะไม่โทรหาคนนั้นอีกเมื่อ
- เคยติดต่อได้แล้ว (
COMPLETEDรวมถึงกรณีเข้า voicemail) ไม่ว่าจะเป็นครั้งไหนใน campaign นี้ - โทรครบ
maxAttemptsแล้ว หรือ - campaign ถูกยกเลิกหรือหมดอายุ (expired) ไปแล้ว
การ pause ไม่ได้หยุด retry ถาวร ระหว่างที่ campaign เป็น PAUSED retry จะรอไว้ก่อน แล้วโทรต่อหลังสั่ง
resume
เบอร์โทรออก
หัวข้อที่มีชื่อว่า “เบอร์โทรออก”เบอร์โทรขององค์กรจัดเก็บอย่างไร
หัวข้อที่มีชื่อว่า “เบอร์โทรขององค์กรจัดเก็บอย่างไร”| คำ | คืออะไร |
|---|---|
| SIP account | การเชื่อมต่อกับผู้ให้บริการสายโทรศัพท์ (ค่ายโทรศัพท์ของคุณ หรือของ Gowajee) ในหนึ่ง SIP account มีเบอร์โทรได้หนึ่งเบอร์หรือมากกว่า |
| Caller ID | เบอร์โทรหนึ่งเบอร์ใน SIP account เป็นเบอร์ที่ลูกค้าเห็นบนหน้าจอ |
| Outbound Default | caller ID ที่ตั้งเป็นเบอร์ default ของ SIP account นั้น (ใน dashboard ภาษาไทยแสดงเป็น ค่าเริ่มต้นขาออก) |
ดูทั้งหมดได้ใน dashboard ที่ ระบบ → ตั้งค่า → เบอร์โทรศัพท์
เลือกเบอร์ด้วย callerIds
หัวข้อที่มีชื่อว่า “เลือกเบอร์ด้วย callerIds”ส่งเบอร์โทรมา ให้ตรงกับที่แสดง ในหน้าเบอร์โทรศัพท์
| ส่งมาแบบไหน | ผลที่ได้ |
|---|---|
เบอร์เดียว: ["+6621234567"] |
ทุก call ใช้เบอร์นั้น |
หลายเบอร์: ["+6621234567", "+6621234568", "0812345678"] |
สุ่ม แต่ละ call จะสุ่มเลือกมาหนึ่งเบอร์ |
[] (array ว่าง) |
ได้ 400 ถ้าอยากใช้เบอร์ default ให้ไม่ต้องส่ง field นี้มา |
- ถ้าส่งมาหลายเบอร์ retry จะไม่ใช้เบอร์เดียวกับที่โทรหาคนนั้นครั้งล่าสุด คนที่ไม่รับสายจากเบอร์แรกจะเห็นเบอร์อื่นในครั้งถัดไป
- เบอร์ที่ส่งมาจะอยู่คนละ SIP account กันก็ได้
- ถ้าส่งเบอร์ที่ไม่ใช่เบอร์ขององค์กรมา จะได้
400 Unknown caller ID: <number>
ถ้าไม่ส่ง callerIds
หัวข้อที่มีชื่อว่า “ถ้าไม่ส่ง callerIds”ระบบจะใช้ค่าแรกที่มีอยู่ตามลำดับนี้
sipCallerIdจาก field แบบเดิมด้านล่าง- เบอร์โทรออก default ของ agent (Gowajee ตั้งไว้ใน configuration ของ agent)
- ถ้าส่งมาแค่
sipAccountIdจะใช้เบอร์ Outbound Default ของ SIP account นั้น - เบอร์กลางของ Gowajee
Field แบบเดิม: sipAccountId และ sipCallerId
หัวข้อที่มีชื่อว่า “Field แบบเดิม: sipAccountId และ sipCallerId”integration รุ่นเก่าล็อกทุก call ไว้กับเบอร์เดียวด้วย ID สองตัว (ไม่ใช่เบอร์โทร) คือ sipAccountId (SIP account)
และ sipCallerId (caller ID หนึ่งเบอร์ใน account นั้น) คัดลอก ID ทั้งสองได้จากหน้าเบอร์โทรศัพท์ สอง field นี้ยังใช้ได้
แต่ callerIds ทำงานเดียวกันโดยใช้เบอร์โทรตรง ๆ และสุ่มเบอร์ได้ด้วย integration ใหม่จึงควรใช้ callerIds
เลือก voice ด้วย ttsVoiceKeys
หัวข้อที่มีชื่อว่า “เลือก voice ด้วย ttsVoiceKeys”| ส่งมาแบบไหน | ผลที่ได้ |
|---|---|
voice เดียว: ["nicha"] |
ทุก call ใช้ voice นั้น |
หลาย voice: ["nicha", "suda", "kanya"] |
สุ่ม แต่ละ call จะสุ่มเลือกมาหนึ่ง voice และใช้ voice นั้นไปตลอดทั้ง call retry นับเป็น call ใหม่ จึงสุ่มใหม่อีกรอบ |
[] (array ว่าง) |
ได้ 400 ถ้าอยากใช้ voice ที่ตั้งไว้ใน agent ให้ไม่ต้องส่ง field นี้มา |
- ถ้าส่ง
ttsVoiceKeysมา call ทั้งหมดใน campaign จะเปลี่ยนไปใช้ voice ชุด TTS V2 ตามตารางด้านล่าง แม้ agent จะตั้งไว้ให้ใช้ voice engine อื่นก็ตาม - key ที่ส่งมาซ้ำจะนับเป็นค่าเดียว
- ถ้าใช้ voice ผู้ชาย ข้อความที่ Gowajee ใส่ให้เอง (เช่น คำพูดคั่นระหว่างรอ) จะใช้ ครับ แทน ค่ะ / คะ แต่ระบบไม่แปลง ประโยคในบทของ agent ถ้าบทเขียนด้วย ค่ะ ส่วนใหญ่ voice ผู้ชายก็จะยังพูดว่า ค่ะ อยู่ ให้ใช้บทเวอร์ชันผู้ชายคู่กับ voice ผู้ชาย
- ถ้าส่ง key ที่ไม่มีอยู่หรือเลิกใช้แล้ว จะได้
400 Unknown voice: <key> - ถ้าไม่ส่งมา ระบบจะใช้ voice ที่ตั้งไว้ใน agent ถ้าเปิด สุ่มเสียง (Shuffle voices) ไว้ใน configuration ของ agent แต่ละ call จะสุ่มจากรายการ voice ของ agent ถ้าไม่ได้เปิด ทุก call จะใช้ voice เดียวของ agent
ฟังแล้วเลือก voice
หัวข้อที่มีชื่อว่า “ฟังแล้วเลือก voice”voiceKey |
ชื่อ | เพศ | หมายเหตุ |
|---|---|---|---|
nicha |
Nicha | หญิง | แนะนำ |
supannee |
Supannee | หญิง | |
suda |
Suda | หญิง | |
kanya |
Kanya | หญิง | |
narin |
Narin | หญิง | |
nisa |
Nisa | หญิง | |
taste |
Taste | หญิง | |
beer |
Beer | ชาย | แนะนำ |
thaksin |
Thaksin | ชาย | |
chakrit |
Chakrit | ชาย | |
krit |
Krit | ชาย | |
somchai |
Somchai | ชาย | |
carmen |
Carmen | หญิง | สำเนียงไทยแบบชาวต่างชาติ |
reflective |
Reflective Woman | หญิง | สำเนียงไทยแบบชาวต่างชาติ |
ตารางนี้อัปเดตล่าสุดเดือนกันยายน 2026 ดูรายการล่าสุดได้จาก GET /voice-demo/catalog
endpoint นี้เป็นแบบสาธารณะ ไม่ต้องใช้ API key
ตัด recipient ที่ซ้ำ
หัวข้อที่มีชื่อว่า “ตัด recipient ที่ซ้ำ”ถ้าองค์กรเปิด แจ้งเตือนการโทรซ้ำ ไว้ (ใน dashboard ที่ ระบบ → ตั้งค่า → ทั่วไป → แจ้งเตือนการโทรซ้ำ) ให้ใส่
"removeDuplicates": true มาด้วย ก่อนเริ่มโทร Gowajee จะตัดทุกคนที่ agent ตัวเดียวกัน เคยโทรติดเบอร์นั้นแล้วภายใน
ช่วงเวลาแจ้งเตือนขององค์กร (เช่น “ภายในเดือนนี้”) ออก response จะบอกจำนวนคนที่ตัดออกไว้ เช่น
"removedRecipients": 12
- นับเฉพาะ call ที่เป็น
COMPLETEDเบอร์ที่เคยโทรไปแต่ติดต่อไม่ได้ (NO_ANSWER,BUSY…) จะยังอยู่ในรายชื่อ - เบอร์โทรต้องตรงกัน ทุกตัวอักษร แบบเทียบเป็นข้อความ ในกรณีนี้
0812345678กับ+66812345678ถือเป็นคนละเบอร์
Error (400) |
สาเหตุ |
|---|---|
Duplicate call alert is not enabled for this organization |
องค์กรยังไม่ได้เปิดฟีเจอร์นี้ |
All recipients are duplicates within the configured window |
ตัดแล้วจะไม่เหลือใครให้โทรเลย campaign จะยังเป็น DRAFT |
ตัวอย่างการตั้งค่า
หัวข้อที่มีชื่อว่า “ตัวอย่างการตั้งค่า”{ "startDateTime": "2026-10-01T02:00:00.000Z" }วันธรรมดา 09:00–19:00 วันเสาร์อาทิตย์ 10:00–19:00 โทรคนละ 1 ครั้ง ใช้เบอร์และ voice ของ agent
{ "startDateTime": "2026-10-01T02:00:00.000Z", "timeWindows": [ { "dayOfWeek": 1, "time": [{ "start": "09:00", "end": "17:00" }] }, { "dayOfWeek": 2, "time": [{ "start": "09:00", "end": "17:00" }] }, { "dayOfWeek": 3, "time": [{ "start": "09:00", "end": "17:00" }] }, { "dayOfWeek": 4, "time": [{ "start": "09:00", "end": "17:00" }] }, { "dayOfWeek": 5, "time": [{ "start": "09:00", "end": "17:00" }] } ], "maxAttempts": 3, "retryInterval": 10800000}โทรเฉพาะวันธรรมดา 09:00–17:00 สูงสุด 3 ครั้ง แต่ละครั้งห่างกันอย่างน้อย 3 ชั่วโมง
{ "startDateTime": "2026-10-01T02:00:00.000Z", "maxAttempts": 2, "retryInterval": 14400000, "callerIds": ["+6621234567", "+6621234568", "+6621234569"], "ttsVoiceKeys": ["nicha", "suda", "kanya"]}แต่ละ call ใช้หนึ่งใน 3 เบอร์ และหนึ่งใน 3 voice ผู้หญิง ส่วน retry จะโทรจากเบอร์อื่น
{ "startDateTime": "2026-10-01T02:00:00.000Z", "endDateTime": "2026-10-03T11:00:00.000Z", "maxAttempts": 3, "retryInterval": 3600000}ทุกอย่างหยุดตอน 18:00 ตามเวลาไทยของวันที่ 3 ตุลาคม คนที่ยังไม่ได้โทรหาภายในเวลานั้นจะเป็น EXPIRED