Nodes and media
การปลุกด้วยเสียง
คำปลุกเป็นรายการส่วนกลางรายการเดียวที่ Gateway เป็นเจ้าของ — ไม่มีรายการที่กำหนดเองแยกตาม Node Node หรือ UI ของแอปใดๆ สามารถแก้ไขรายการนี้ได้ โดย Gateway จะบันทึกการเปลี่ยนแปลงและเผยแพร่ไปยังไคลเอนต์ที่เชื่อมต่อทั้งหมด
- macOS: สวิตช์เปิด/ปิด Voice Wake ภายในเครื่อง ต้องใช้ macOS 26 ขึ้นไป โปรดดูรายละเอียดรันไทม์/PTT ที่ การปลุกด้วยเสียง (macOS)
- iOS: สวิตช์เปิด/ปิด Voice Wake ภายในเครื่องใน Settings
- Android: สวิตช์เปิด/ปิด Voice Wake ภายในเครื่องและเครื่องมือแก้ไขคำปลุกใน Settings → Voice ต้องใช้การรู้จำเสียงพูดบนอุปกรณ์ของ Android
การจัดเก็บ
คำปลุกและกฎการกำหนดเส้นทางอยู่ในฐานข้อมูลสถานะของ Gateway ซึ่งโดยค่าเริ่มต้นคือ ~/.openclaw/state/openclaw.sqlite (เขียนทับได้ด้วย OPENCLAW_STATE_DIR) ในตาราง voicewake_triggers, voicewake_routing_config, voicewake_routing_routes ส่วน settings/voicewake.json และ settings/voicewake-routing.json แบบเดิมเป็นเพียงอินพุตสำหรับการย้ายข้อมูล openclaw doctor --fix เท่านั้น — รันไทม์จะไม่อ่านข้อมูลเหล่านี้
โปรโตคอล
รายการตัวกระตุ้น
| เมธอด | พารามิเตอร์ | ผลลัพธ์ |
|---|---|---|
voicewake.get |
ไม่มี | { triggers: string[] } |
voicewake.set |
{ triggers: string[] } |
{ triggers: string[] } |
voicewake.set ปรับอินพุตให้เป็นรูปแบบมาตรฐาน โดยตัดช่องว่างรอบข้อความ ทิ้งรายการว่าง เก็บตัวกระตุ้นไว้ไม่เกิน 32 รายการ และตัดแต่ละรายการให้เหลือไม่เกิน 64 หน่วยโค้ด UTF-16 โดยไม่แยกคู่เซอร์โรเกต หากผลลัพธ์ว่างเปล่า ระบบจะกลับไปใช้ค่าเริ่มต้นในตัว (openclaw, claude, computer)
การกำหนดเส้นทาง (ตัวกระตุ้นไปยังเป้าหมาย)
| เมธอด | พารามิเตอร์ | ผลลัพธ์ |
|---|---|---|
voicewake.routing.get |
ไม่มี | { config: VoiceWakeRoutingConfig } |
voicewake.routing.set |
{ config: VoiceWakeRoutingConfig } |
{ config: VoiceWakeRoutingConfig } |
{ "version": 1, "defaultTarget": { "mode": "current" }, "routes": [{ "trigger": "robot wake", "target": { "sessionKey": "agent:main:main" } }], "updatedAtMs": 1730000000000}target ของแต่ละเส้นทางรองรับเพียงหนึ่งรายการต่อไปนี้เท่านั้น:
{ "mode": "current" }{ "agentId": "main" }{ "sessionKey": "agent:main:main" }
ข้อจำกัด: มีเส้นทางได้ไม่เกิน 32 เส้นทาง และข้อความตัวกระตุ้นยาวได้ไม่เกิน 64 อักขระ ตัวกระตุ้นของเส้นทางจะถูกปรับให้เป็นรูปแบบมาตรฐานเพื่อการจับคู่และตรวจหารายการซ้ำ โดยแปลงเป็นตัวพิมพ์เล็ก ลบเครื่องหมายวรรคตอนที่ต้นและท้ายของแต่ละคำ และยุบช่องว่าง ("Hey, Bot!!" และ "hey bot" จะตรงกันและถูกนับเป็นรายการซ้ำ) — การปรับรูปแบบนี้เข้มงวดกว่าการตัดช่องว่างรอบข้อความแบบธรรมดาที่ใช้กับรายการตัวกระตุ้นส่วนกลางข้างต้น
เหตุการณ์
| เหตุการณ์ | เพย์โหลด |
|---|---|
voicewake.changed |
{ triggers: string[] } |
voicewake.routing.changed |
{ config: VoiceWakeRoutingConfig } |
ทั้งสองเหตุการณ์จะถูกเผยแพร่ไปยังไคลเอนต์ WebSocket ทุกตัวที่มีขอบเขตสิทธิ์อ่าน (แอป macOS, WebChat และอื่นๆ ที่คล้ายกัน) รวมถึง Node ที่เชื่อมต่อทั้งหมด นอกจากนี้ Node จะได้รับทั้งสองเหตุการณ์เป็นการส่งสแนปช็อตเริ่มต้นทันทีหลังจากเชื่อมต่อ
พฤติกรรมของไคลเอนต์
- macOS: เรียก
voicewake.set/voicewake.getและรอฟังvoicewake.changedเพื่อให้ข้อมูลตรงกับไคลเอนต์อื่น - iOS: เรียก
voicewake.set/voicewake.getและรอฟังvoicewake.changedเพื่อให้การตรวจจับคำปลุกภายในเครื่องตอบสนองได้รวดเร็ว - Android: เรียก
voicewake.set/voicewake.getรอฟังvoicewake.changedและประกาศvoiceWakeขณะเปิดใช้งาน การรู้จำจะทำงานบนอุปกรณ์และเฉพาะเมื่อแอปอยู่เบื้องหน้าเท่านั้น โดยจะหยุดชั่วคราวเมื่อ Talk, การป้อนตามคำบอกด้วยตนเอง, การบันทึกข้อความเสียง หรือการอ่านข้อความออกเสียงกำลังใช้เสียงอยู่