ควบคุมสายที่กำลังสนทนา
Endpoint กลุ่มนี้ทำงานกับสายที่กำลังสนทนาอยู่ และอ้างอิงด้วยชื่อห้อง (room name) ของ LiveKit ไม่ใช่ session id เพราะห้องคือสิ่งที่มีอยู่จริงขณะที่ทั้งสองฝ่ายยังคุยกัน
| การทำงาน | Route | ใช้สำหรับ |
|---|---|---|
| พักสาย | POST /voice/calls/{roomName}/hold | พักสายผู้โทร หรือกลับมาคุยต่อ |
| โหมด | POST /voice/calls/{roomName}/mode | สลับโหมดการฟังของหัวหน้างาน |
| วางสาย | POST /voice/calls/{roomName}/hangup | จบสายและปิด session |
| ล็อกห้อง | POST /voice/calls/{roomName}/lock | ไม่ให้มีผู้เข้าร่วมเพิ่ม |
| นำออก | DELETE /voice/calls/{roomName}/participants/{identity} | นำผู้เข้าร่วมออกหนึ่งราย |
| ปิดบังคับ | POST /voice/calls/{uuid}/force-close | ปิด session ที่ห้องหายไปแล้ว |
API key ควบคุมสายที่กำลังสนทนาได้
Key ถือสิทธิ์ของเจ้าของ key บน route กลุ่มนี้ ผู้ที่ได้ key ไปสามารถวางสาย หรือเข้าแทรกสายที่กำลังคุยอยู่ได้ เก็บไว้ฝั่งเซิร์ฟเวอร์เท่านั้น และเปลี่ยน key ทันทีหากหลุด
พักสายและกลับมาคุยต่อ
การพักสายทำสองอย่าง คือปิดเสียงทั้งสองฝั่ง และเปิดเพลงรอสาย ส่วนการปิดเสียงจะทำงาน แม้ไม่ได้ตั้งค่าเพลงรอสายไว้ ผู้โทรที่ถูกพักสายจึงไม่ได้ยินเสียงในห้องของเจ้าหน้าที่
curl -X POST "$ME_BASE/voice/calls/$ROOM/hold" \
-H "API-Key: $ME_API_KEY" \
-H "X-TenantID: $ME_TENANT" \
-H "Content-Type: application/json" \
-d '{"muted": true, "holder_identity": "agent-42"}'{ "status": "ok", "held": true }ส่ง "muted": false ที่ route เดิมเพื่อกลับมาคุยต่อ
| ฟิลด์ | ชนิด | หมายเหตุ |
|---|---|---|
muted | bool | true พักสาย false กลับมาคุยต่อ |
participant_identity | string | ไม่บังคับ จำกัดการพักสายเฉพาะผู้เข้าร่วมรายเดียว |
track_sid | string | ไม่บังคับ จำกัดเฉพาะ track เดียว |
holder_identity | string | ไม่บังคับ บันทึกลงในประวัติการโทร |
โหมดหัวหน้างาน
curl -X POST "$ME_BASE/voice/calls/$ROOM/mode" \
-H "API-Key: $ME_API_KEY" \
-H "X-TenantID: $ME_TENANT" \
-H "Content-Type: application/json" \
-d '{"mode": "whisper", "identity": "supervisor-7"}'{ "mode": "whisper" }ส่ง exclude_identities เพื่อยกเว้นผู้เข้าร่วมที่ไม่ต้องการให้โหมดมีผล
วางสาย กับ ปิดบังคับ
hangup ใช้จบสายที่กำลังคุยอยู่ โดยลบห้องและปิด session ใช้ตอนที่ยังเชื่อมต่อกันอยู่
force-close ใช้ปิด session ตาม uuid สำหรับกรณีที่ห้องหายไปแล้วแต่ session ยังไม่ปิด เป็นทางแก้ไม่ใช่วิธีจบสายตามปกติ
curl -X POST "$ME_BASE/voice/calls/$ROOM/hangup" \
-H "API-Key: $ME_API_KEY" \
-H "X-TenantID: $ME_TENANT" \
-H "Content-Type: application/json" -d '{}'Go SDK
out, err := c.Calls.Hold(ctx, roomName, &sdk.HoldRequest{Muted: true})
_, err = c.Calls.SetMode(ctx, roomName, &sdk.ModeRequest{Mode: "whisper"})
_, err = c.Calls.Hangup(ctx, roomName, nil)