2.9 KiB
2.9 KiB
| read_when | summary | title | x-i18n | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
อะแดปเตอร์ RPC สำหรับ CLI ภายนอก (`signal-cli`, `imsg` แบบ legacy) และแพตเทิร์นของ gateway | อะแดปเตอร์ RPC |
|
OpenClaw เชื่อมต่อ CLI ภายนอกผ่าน JSON-RPC ปัจจุบันมีการใช้ 2 รูปแบบ
รูปแบบ A: HTTP daemon (signal-cli)
signal-cliทำงานเป็น daemon พร้อม JSON-RPC ผ่าน HTTP- event stream เป็น SSE (
/api/v1/events) - health probe:
/api/v1/check - OpenClaw เป็นเจ้าของวงจรชีวิตเมื่อ
channels.signal.autoStart=true
ดู Signal สำหรับการตั้งค่าและ endpoint
รูปแบบ B: stdio child process (legacy: imsg)
หมายเหตุ: สำหรับการตั้งค่า iMessage ใหม่ ให้ใช้ BlueBubbles แทน
- OpenClaw จะ spawn
imsg rpcเป็น child process (การเชื่อมต่อ iMessage แบบ legacy) - JSON-RPC เป็นแบบคั่นบรรทัดผ่าน stdin/stdout (หนึ่ง JSON object ต่อหนึ่งบรรทัด)
- ไม่ต้องใช้พอร์ต TCP และไม่ต้องมี daemon
เมธอดหลักที่ใช้:
watch.subscribe→ การแจ้งเตือน (method: "message")watch.unsubscribesendchats.list(probe/diagnostics)
ดู iMessage สำหรับการตั้งค่าแบบ legacy และการระบุปลายทาง (chat_id ควรใช้เป็นหลัก)
แนวทางสำหรับอะแดปเตอร์
- Gateway เป็นเจ้าของโพรเซส (การเริ่ม/หยุดผูกกับวงจรชีวิตของ provider)
- ควรทำให้ RPC client ทนทาน: มี timeout, รีสตาร์ตเมื่อโพรเซสออก
- ควรใช้ ID ที่เสถียร (เช่น
chat_id) มากกว่าสตริงที่ใช้แสดงผล