CLI commands
ช่องทาง
openclaw channels
จัดการบัญชีช่องแชตและสถานะรันไทม์ของบัญชีเหล่านั้นบน Gateway
เอกสารที่เกี่ยวข้อง:
- คู่มือช่อง: ช่อง
- การกำหนดค่า Gateway: การกำหนดค่า
คำสั่งทั่วไป
openclaw channels listopenclaw channels list --allopenclaw channels statusopenclaw channels capabilitiesopenclaw channels capabilities --channel discord --target channel:123openclaw channels resolve --channel slack "#general" "@jane"openclaw channels logs --channel allopenclaw channels dead-letters list --channel telegram --account defaultchannels list แสดงเฉพาะช่องแชต โดยค่าเริ่มต้นจะแสดงบัญชีที่กำหนดค่าแล้ว พร้อมแท็กสถานะ installed, configured และ enabled สำหรับแต่ละบัญชี (--json สำหรับเอาต์พุตที่เครื่องอ่านได้) ระบุ --all เพื่อแสดงช่องที่มาพร้อมระบบแต่ยังไม่มีบัญชีที่กำหนดค่า รวมถึงช่องในแคตตาล็อกที่ติดตั้งได้แต่ยังไม่มีอยู่บนดิสก์ การตรวจสอบสิทธิ์ของผู้ให้บริการและการใช้งานโมเดลอยู่ในส่วนอื่น ได้แก่ openclaw models auth list สำหรับโปรไฟล์การตรวจสอบสิทธิ์ของผู้ให้บริการ และ openclaw status หรือ openclaw models list สำหรับการใช้งาน/โควตา
สถานะ / ความสามารถ / การแปลงชื่อ / บันทึก
channels status:--channel <name>,--probe,--timeout <ms>(ค่าเริ่มต้น10000),--jsonchannels capabilities:--channel <name>,--account <id>(ต้องใช้--channel),--target <dest>(ต้องใช้--channel),--timeout <ms>(ค่าเริ่มต้น10000, จำกัดสูงสุดที่30000),--jsonchannels resolve <entries...>:--channel <name>,--account <id>,--kind <auto|user|group>(ค่าเริ่มต้นauto),--jsonchannels logs:--channel <name|all>(ค่าเริ่มต้นall),--lines <n>(ค่าเริ่มต้น200),--json
channels status --probe คือเส้นทางแบบสด: บน Gateway ที่เข้าถึงได้ คำสั่งนี้จะเรียกใช้การตรวจสอบ
probeAccount และ auditAccount ซึ่งเป็นทางเลือกสำหรับแต่ละบัญชี ดังนั้นเอาต์พุตจึงอาจมีทั้ง
สถานะการรับส่งและผลการตรวจสอบ เช่น works, probe failed, audit ok หรือ audit failed
หากเข้าถึง Gateway ไม่ได้ channels status จะเปลี่ยนไปใช้ข้อมูลสรุปจากการกำหนดค่าเท่านั้น
แทนเอาต์พุตจากการตรวจสอบแบบสด
Dead letter ขาเข้า
เหตุการณ์ขาเข้าที่ลองซ้ำจนครบนโยบายแล้วจะยังคงอยู่ในฐานข้อมูลสถานะที่ใช้ร่วมกันตามระยะเวลาเก็บรักษารายการที่ล้มเหลวซึ่งมีอยู่ของคิว ตรวจสอบบัญชีช่องหนึ่งบัญชีด้วย:
openclaw channels dead-letters list --channel telegram --account defaultopenclaw channels dead-letters list --channel telegram --account default --jsonมุมมองข้อความจะแสดงรหัสเหตุการณ์ สาเหตุความล้มเหลว จำนวนครั้งที่ลอง และระยะเวลานับจากที่ล้มเหลว เอาต์พุต JSON ยังมีเพย์โหลด เมทาดาทา เลน และเวลาประทับของการลองที่เก็บรักษาไว้เพื่อการวินิจฉัย
หลังจากแก้ไขปัญหาต้นเหตุแล้ว ให้เพิ่มเหตุการณ์หนึ่งรายการกลับเข้าคิวด้วยรหัสเหตุการณ์เดิม:
openclaw channels dead-letters resubmit <event-id> --channel telegram --account defaultเรียกใช้คำสั่งเหล่านี้บนโฮสต์ Gateway เพื่อให้เข้าถึงฐานข้อมูลสถานะที่ใช้ร่วมกันชุดเดียวกับรันไทม์ของช่อง การส่งใหม่จะคงเพย์โหลด เมทาดาทา และเลนไว้ แต่รีเซ็ตตัวนับจำนวนครั้งที่ลองและอายุของคิว คำสั่งจะแทนที่เครื่องหมายล้มเหลวของเหตุการณ์นั้นแบบอะตอมมิก ดังนั้นหากเรียกคำสั่งซ้ำขณะที่เหตุการณ์กำลังรอดำเนินการหรือถูกยึดไปประมวลผล คำสั่งจะปฏิเสธแทนที่จะสร้างการส่งครั้งที่สอง ช่องที่กำลังทำงานจะรับเหตุการณ์นี้ในการระบายข้อมูลขาเข้าครั้งถัดไป เหตุการณ์ที่เสร็จสมบูรณ์แล้วจะยังคงเป็นสถานะสิ้นสุดและไม่สามารถส่งใหม่ได้ แถวที่ล้มเหลวซึ่งสร้างขึ้นก่อนเพิ่มการเก็บรักษาเพย์โหลดยังอาจปรากฏในรายการ แต่การส่งใหม่จะถูกปฏิเสธเนื่องจากไม่มีเพย์โหลดของแถวเหล่านั้น
openclaw health รายงานจำนวน dead letter และระยะเวลาของความล้มเหลวที่เก่าที่สุดต่อบัญชีช่อง openclaw doctor ระบุชื่อบัญชีที่ได้รับผลกระทบและชี้กลับไปยังคำสั่งตรวจสอบ
อย่าใช้ openclaw sessions, sessions.list ของ Gateway หรือเครื่องมือ
sessions_list ของเอเจนต์เป็นสัญญาณสุขภาพของซ็อกเก็ตช่อง ส่วนเหล่านั้นรายงาน
แถวบทสนทนาที่จัดเก็บไว้ ไม่ใช่สถานะรันไทม์ของผู้ให้บริการ หลังจากรีสตาร์ตผู้ให้บริการ Discord
บัญชีที่เชื่อมต่ออยู่แต่ไม่มีการเคลื่อนไหวอาจยังทำงานเป็นปกติ แม้จะไม่มีแถวเซสชัน Discord
ปรากฏขึ้นจนกว่าจะมีเหตุการณ์บทสนทนาขาเข้าหรือขาออกครั้งถัดไป
เพิ่ม / ลบบัญชี
openclaw channels add --channel telegram --token <bot-token>openclaw channels add --channel nostr --private-key "$NOSTR_PRIVATE_KEY"openclaw channels remove --channel telegram --deletechannels remove ทำงานเฉพาะกับ Plugin ช่องที่ติดตั้ง/กำหนดค่าแล้วเท่านั้น สำหรับช่องในแคตตาล็อกที่ติดตั้งได้ ให้ใช้ channels add ก่อน หากไม่มี --delete ระบบจะถามให้ปิดใช้งานบัญชีและเก็บการกำหนดค่าไว้ ส่วน --delete จะลบรายการการกำหนดค่าโดยไม่ถาม
สำหรับ Plugin ช่องที่มีรันไทม์รองรับ channels remove จะขอให้ Gateway ที่กำลังทำงานหยุดบัญชีที่เลือกก่อนอัปเดตการกำหนดค่าด้วย เพื่อให้การปิดใช้งานหรือลบบัญชีไม่ปล่อยให้ตัวรับฟังเดิมทำงานต่อไปจนกว่าจะรีสตาร์ต
แฟล็กการเพิ่มแบบไม่โต้ตอบที่คอร์เป็นเจ้าของ ได้แก่ --account <id>, --name <name>, --token, --token-file และ --use-env (การตรวจสอบสิทธิ์ที่อิงตัวแปรสภาพแวดล้อม เฉพาะบัญชีเริ่มต้น ในกรณีที่รองรับ) Plugin ช่องจะเพิ่มแฟล็กการตั้งค่าของตนเอง รวมถึง --bot-token, --app-token, --secret, --secret-file, --password, --cli-path, --url, --base-url, --workspace, --http-url และ --auth-dir แฟล็กเฉพาะช่องมีดังนี้:
| ช่อง | แฟล็ก |
|---|---|
| Google Chat | --webhook-path, --webhook-url, --audience-type, --audience |
| iMessage | --cli-path, --db-path, --service, --region |
| Matrix | --homeserver, --user-id, --access-token, --password, --device-name, --initial-sync-limit |
| Nostr | --private-key, --relay-urls |
| Signal | --signal-number, --cli-path, --http-url, --http-host, --http-port |
| Tlon | --ship, --url, --code, --group-channels, --dm-allowlist, --auto-discover-channels |
--auth-dir |
หากต้องติดตั้ง Plugin ช่องระหว่างคำสั่งเพิ่มที่ขับเคลื่อนด้วยแฟล็ก OpenClaw จะใช้แหล่งติดตั้งเริ่มต้นของช่องโดยไม่เปิดพรอมต์ติดตั้ง Plugin แบบโต้ตอบ
เมื่อเรียกใช้ openclaw channels add โดยไม่ระบุบัญชี ข้อมูลประจำตัว หรือแฟล็กการกำหนดค่าช่องโดยตรง ตัวช่วยสร้างแบบโต้ตอบสามารถแสดงพรอมต์ได้ ทั้งรหัสช่องแบบอาร์กิวเมนต์ตำแหน่งและ --channel <id> จะเลือกช่องนั้นไว้ล่วงหน้าโดยไม่ข้ามคำแนะนำ:
openclaw channels add telegramopenclaw channels add --channel telegramตัวช่วยสร้างสามารถถามข้อมูลต่อไปนี้:
- รหัสบัญชีสำหรับแต่ละช่องที่เลือก
- ชื่อที่แสดงซึ่งเป็นทางเลือกสำหรับบัญชีเหล่านั้น
Route these channel accounts to agents now?
หากยืนยันให้ผูกตอนนี้ ตัวช่วยสร้างจะถามว่าควรให้เอเจนต์ใดเป็นเจ้าของบัญชีช่องแต่ละบัญชีที่กำหนดค่าไว้ และจะเขียนการผูกเส้นทางที่มีขอบเขตระดับบัญชี
ภายหลังยังสามารถจัดการกฎการกำหนดเส้นทางเดียวกันได้ด้วย openclaw agents bindings, openclaw agents bind และ openclaw agents unbind (ดู เอเจนต์)
เมื่อเพิ่มบัญชีที่ไม่ใช่บัญชีเริ่มต้นให้กับช่องที่ยังใช้การตั้งค่าระดับบนสุดแบบบัญชีเดียว OpenClaw จะเลื่อนค่าระดับบนสุดเหล่านั้นเข้าไปในแมปบัญชีของช่องก่อนเขียนบัญชีใหม่ การเลื่อนจะใช้บัญชีที่มีชื่อเดิมซ้ำเมื่อช่องมีเพียงหนึ่งบัญชี หรือเมื่อ defaultAccount ชี้ไปที่บัญชีหนึ่ง มิฉะนั้นค่าจะถูกใส่ไว้ใน channels.<channel>.accounts.default
ลักษณะการกำหนดเส้นทางยังคงสอดคล้องกัน:
- การผูกเฉพาะช่องที่มีอยู่ (ไม่มี
accountId) จะยังคงจับคู่กับบัญชีเริ่มต้น channels addจะไม่สร้างหรือเขียนการผูกใหม่โดยอัตโนมัติในโหมดไม่โต้ตอบ- การตั้งค่าแบบโต้ตอบสามารถเพิ่มการผูกที่มีขอบเขตระดับบัญชีได้ตามต้องการ
หากการกำหนดค่ามีสถานะแบบผสมอยู่แล้ว (มีบัญชีที่ตั้งชื่อไว้และยังตั้งค่าระดับบนสุดแบบบัญชีเดียวอยู่) ให้เรียกใช้ openclaw doctor --fix เพื่อย้ายค่าที่มีขอบเขตระดับบัญชีเข้าไปในบัญชีที่เลื่อนขึ้นมาซึ่งเลือกไว้สำหรับช่องนั้น
เข้าสู่ระบบและออกจากระบบ (แบบโต้ตอบ)
openclaw channels login --channel whatsappopenclaw channels logout --channel whatsappchannels loginรองรับ--account <id>และ--verbose;channels logoutรองรับ--account <id>channels loginและlogoutสามารถอนุมานช่องได้เมื่อมีเพียงช่องเดียวที่กำหนดค่าไว้และรองรับการดำเนินการนั้น หากมีหลายช่อง ให้ระบุ--channelchannels logoutจะเลือกใช้เส้นทาง Gateway แบบสดเมื่อเข้าถึงได้ เพื่อให้การออกจากระบบหยุดตัวรับฟังที่ทำงานอยู่ก่อนล้างสถานะการตรวจสอบสิทธิ์ของช่อง หากเข้าถึง Gateway ภายในเครื่องไม่ได้ ระบบจะใช้การล้างข้อมูลการตรวจสอบสิทธิ์ภายในเครื่องแทน แต่เมื่อใช้gateway.mode: "remote"ข้อผิดพลาดของ Gateway จะทำให้คำสั่งล้มเหลว- หลังจากเข้าสู่ระบบสำเร็จ CLI จะขอให้ Gateway ภายในเครื่องที่เข้าถึงได้เริ่มบัญชี ส่วนในโหมดระยะไกล CLI จะบันทึกการตรวจสอบสิทธิ์ไว้ภายในเครื่องและแจ้งว่าไม่ได้รีสตาร์ตรันไทม์ระยะไกล
- เรียกใช้
channels loginจากเทอร์มินัลบนโฮสต์ Gateway เอเจนต์execจะบล็อกขั้นตอนการเข้าสู่ระบบแบบโต้ตอบนี้ ควรใช้เครื่องมือเข้าสู่ระบบของเอเจนต์ที่เป็นเนทีฟของช่อง เช่นwhatsapp_loginจากแชตเมื่อมีให้ใช้งาน
การแก้ไขปัญหา
- เรียกใช้
openclaw status --deepเพื่อตรวจสอบในวงกว้าง - ใช้
openclaw doctorเพื่อรับคำแนะนำในการแก้ไข openclaw channels statusจะเปลี่ยนไปใช้ข้อมูลสรุปจากการกำหนดค่าเท่านั้นเมื่อเข้าถึง Gateway ไม่ได้ หากกำหนดค่าข้อมูลประจำตัวของช่องที่รองรับผ่าน SecretRef แต่ไม่พร้อมใช้งานในเส้นทางคำสั่งปัจจุบัน ระบบจะรายงานว่าบัญชีนั้นกำหนดค่าแล้วพร้อมหมายเหตุว่าความสามารถลดลง แทนที่จะแสดงว่ายังไม่ได้กำหนดค่า
การตรวจสอบความสามารถ
ดึงคำแนะนำด้านความสามารถของผู้ให้บริการ (Intent/ขอบเขตเมื่อมีให้ใช้งาน) พร้อมการรองรับฟีเจอร์แบบคงที่:
openclaw channels capabilitiesopenclaw channels capabilities --channel discord --target channel:123หมายเหตุ:
--channelเป็นทางเลือก หากไม่ระบุ ระบบจะแสดงทุกช่อง (รวมถึงช่องที่ Plugin จัดเตรียมให้)--accountใช้ได้กับ--channelเท่านั้น--targetยอมรับchannel:<id>หรือรหัสช่องแบบตัวเลขดิบ และใช้ได้กับ Discord เท่านั้น สำหรับช่องเสียงของ Discord การตรวจสอบสิทธิ์จะทำเครื่องหมายเมื่อไม่มีViewChannel,Connect,Speak,SendMessagesและReadMessageHistory- การตรวจสอบจะแตกต่างกันตามผู้ให้บริการ: ข้อมูลประจำตัวบอต Discord + Intent พร้อมสิทธิ์ของช่องซึ่งเป็นทางเลือก; ขอบเขตของบอต + ผู้ใช้ Slack; แฟล็กบอต Telegram + Webhook; เวอร์ชันดีมอน Signal; โทเค็นแอป Microsoft Teams + บทบาท/ขอบเขตของ Graph (มีคำอธิบายประกอบเมื่อทราบ) ช่องที่ไม่มีการตรวจสอบจะรายงาน
Probe: unavailable
แปลงชื่อเป็นรหัส
แปลงชื่อช่อง/ผู้ใช้เป็นรหัสโดยใช้ไดเรกทอรีของผู้ให้บริการ:
openclaw channels resolve --channel slack "#general" "@jane"openclaw channels resolve --channel discord "My Server/#support" "@someone"openclaw channels resolve --channel matrix "Project Room"หมายเหตุ:
- ใช้
--kind user|group|autoเพื่อบังคับประเภทเป้าหมาย - เมื่อหลายรายการใช้ชื่อเดียวกัน การแก้ชื่อจะให้ความสำคัญกับรายการที่ใช้งานอยู่
channels resolveเป็นแบบอ่านอย่างเดียว หากบัญชีที่เลือกได้รับการกำหนดค่าผ่าน SecretRef แต่ข้อมูลประจำตัวนั้นไม่พร้อมใช้งานในเส้นทางคำสั่งปัจจุบัน คำสั่งจะส่งคืนผลลัพธ์ที่ยังแก้ชื่อไม่ได้ในสถานะลดทอนพร้อมหมายเหตุ แทนที่จะยกเลิกการทำงานทั้งหมดchannels resolveจะไม่ติดตั้ง Plugin ช่องทาง ใช้channels add --channel <name>ก่อนแก้ชื่อสำหรับช่องทางในแค็ตตาล็อกที่สามารถติดตั้งได้