CLI commands

ช่องทาง

openclaw channels

จัดการบัญชีช่องแชตและสถานะรันไทม์ของบัญชีเหล่านั้นบน Gateway

เอกสารที่เกี่ยวข้อง:

คำสั่งทั่วไป

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

channels list แสดงเฉพาะช่องแชต โดยค่าเริ่มต้นจะแสดงบัญชีที่กำหนดค่าแล้ว พร้อมแท็กสถานะ installed, configured และ enabled สำหรับแต่ละบัญชี (--json สำหรับเอาต์พุตที่เครื่องอ่านได้) ระบุ --all เพื่อแสดงช่องที่มาพร้อมระบบแต่ยังไม่มีบัญชีที่กำหนดค่า รวมถึงช่องในแคตตาล็อกที่ติดตั้งได้แต่ยังไม่มีอยู่บนดิสก์ การตรวจสอบสิทธิ์ของผู้ให้บริการและการใช้งานโมเดลอยู่ในส่วนอื่น ได้แก่ openclaw models auth list สำหรับโปรไฟล์การตรวจสอบสิทธิ์ของผู้ให้บริการ และ openclaw status หรือ openclaw models list สำหรับการใช้งาน/โควตา

สถานะ / ความสามารถ / การแปลงชื่อ / บันทึก

  • channels status: --channel <name>, --probe, --timeout <ms> (ค่าเริ่มต้น 10000), --json
  • channels capabilities: --channel <name>, --account <id> (ต้องใช้ --channel), --target <dest> (ต้องใช้ --channel), --timeout <ms> (ค่าเริ่มต้น 10000, จำกัดสูงสุดที่ 30000), --json
  • channels resolve <entries...>: --channel <name>, --account <id>, --kind <auto|user|group> (ค่าเริ่มต้น auto), --json
  • channels 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 ขาเข้า

เหตุการณ์ขาเข้าที่ลองซ้ำจนครบนโยบายแล้วจะยังคงอยู่ในฐานข้อมูลสถานะที่ใช้ร่วมกันตามระยะเวลาเก็บรักษารายการที่ล้มเหลวซึ่งมีอยู่ของคิว ตรวจสอบบัญชีช่องหนึ่งบัญชีด้วย:

bash
openclaw channels dead-letters list --channel telegram --account defaultopenclaw channels dead-letters list --channel telegram --account default --json

มุมมองข้อความจะแสดงรหัสเหตุการณ์ สาเหตุความล้มเหลว จำนวนครั้งที่ลอง และระยะเวลานับจากที่ล้มเหลว เอาต์พุต JSON ยังมีเพย์โหลด เมทาดาทา เลน และเวลาประทับของการลองที่เก็บรักษาไว้เพื่อการวินิจฉัย

หลังจากแก้ไขปัญหาต้นเหตุแล้ว ให้เพิ่มเหตุการณ์หนึ่งรายการกลับเข้าคิวด้วยรหัสเหตุการณ์เดิม:

bash
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 ปรากฏขึ้นจนกว่าจะมีเหตุการณ์บทสนทนาขาเข้าหรือขาออกครั้งถัดไป

เพิ่ม / ลบบัญชี

bash
openclaw channels add --channel telegram --token <bot-token>openclaw channels add --channel nostr --private-key "$NOSTR_PRIVATE_KEY"openclaw channels remove --channel telegram --delete

channels 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
WhatsApp --auth-dir

หากต้องติดตั้ง Plugin ช่องระหว่างคำสั่งเพิ่มที่ขับเคลื่อนด้วยแฟล็ก OpenClaw จะใช้แหล่งติดตั้งเริ่มต้นของช่องโดยไม่เปิดพรอมต์ติดตั้ง Plugin แบบโต้ตอบ

เมื่อเรียกใช้ openclaw channels add โดยไม่ระบุบัญชี ข้อมูลประจำตัว หรือแฟล็กการกำหนดค่าช่องโดยตรง ตัวช่วยสร้างแบบโต้ตอบสามารถแสดงพรอมต์ได้ ทั้งรหัสช่องแบบอาร์กิวเมนต์ตำแหน่งและ --channel <id> จะเลือกช่องนั้นไว้ล่วงหน้าโดยไม่ข้ามคำแนะนำ:

bash
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 เพื่อย้ายค่าที่มีขอบเขตระดับบัญชีเข้าไปในบัญชีที่เลื่อนขึ้นมาซึ่งเลือกไว้สำหรับช่องนั้น

เข้าสู่ระบบและออกจากระบบ (แบบโต้ตอบ)

bash
openclaw channels login --channel whatsappopenclaw channels logout --channel whatsapp
  • channels login รองรับ --account <id> และ --verbose; channels logout รองรับ --account <id>
  • channels login และ logout สามารถอนุมานช่องได้เมื่อมีเพียงช่องเดียวที่กำหนดค่าไว้และรองรับการดำเนินการนั้น หากมีหลายช่อง ให้ระบุ --channel
  • channels 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/ขอบเขตเมื่อมีให้ใช้งาน) พร้อมการรองรับฟีเจอร์แบบคงที่:

bash
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

แปลงชื่อเป็นรหัส

แปลงชื่อช่อง/ผู้ใช้เป็นรหัสโดยใช้ไดเรกทอรีของผู้ให้บริการ:

bash
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> ก่อนแก้ชื่อสำหรับช่องทางในแค็ตตาล็อกที่สามารถติดตั้งได้

ที่เกี่ยวข้อง

Was this useful?
On this page

On this page