Skip to content

ควบคุมสายที่กำลังสนทนา ​

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 ทันทีหากหลุด

พักสายและกลับมาคุยต่อ ​

การพักสายทำสองอย่าง คือปิดเสียงทั้งสองฝั่ง และเปิดเพลงรอสาย ส่วนการปิดเสียงจะทำงาน แม้ไม่ได้ตั้งค่าเพลงรอสายไว้ ผู้โทรที่ถูกพักสายจึงไม่ได้ยินเสียงในห้องของเจ้าหน้าที่

bash
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"}'
json
{ "status": "ok", "held": true }

ส่ง "muted": false ที่ route เดิมเพื่อกลับมาคุยต่อ

ฟิลด์ชนิดหมายเหตุ
mutedbooltrue พักสาย false กลับมาคุยต่อ
participant_identitystringไม่บังคับ จำกัดการพักสายเฉพาะผู้เข้าร่วมรายเดียว
track_sidstringไม่บังคับ จำกัดเฉพาะ track เดียว
holder_identitystringไม่บังคับ บันทึกลงในประวัติการโทร

โหมดหัวหน้างาน ​

bash
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"}'
json
{ "mode": "whisper" }

ส่ง exclude_identities เพื่อยกเว้นผู้เข้าร่วมที่ไม่ต้องการให้โหมดมีผล

วางสาย กับ ปิดบังคับ ​

hangup ใช้จบสายที่กำลังคุยอยู่ โดยลบห้องและปิด session ใช้ตอนที่ยังเชื่อมต่อกันอยู่

force-close ใช้ปิด session ตาม uuid สำหรับกรณีที่ห้องหายไปแล้วแต่ session ยังไม่ปิด เป็นทางแก้ไม่ใช่วิธีจบสายตามปกติ

bash
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 ​

go
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)