คีย์การกำหนดค่าต่อช่องทางภายใต้Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
channels.* ครอบคลุมการเข้าถึง DM และกลุ่ม,
การตั้งค่าหลายบัญชี, การควบคุมด้วยการกล่าวถึง, และคีย์ต่อช่องทางสำหรับ Slack, Discord,
Telegram, WhatsApp, Matrix, iMessage และ Plugin ช่องทางที่รวมมาอื่นๆ.
สำหรับเอเจนต์, เครื่องมือ, รันไทม์ Gateway, และคีย์ระดับบนสุดอื่นๆ โปรดดู
ข้อมูลอ้างอิงการกำหนดค่า.
ช่องทาง
แต่ละช่องทางจะเริ่มทำงานโดยอัตโนมัติเมื่อมีส่วนการกำหนดค่าของช่องทางนั้นอยู่ (ยกเว้นenabled: false).
การเข้าถึง DM และกลุ่ม
ทุกช่องทางรองรับนโยบาย DM และนโยบายกลุ่ม:| นโยบาย DM | พฤติกรรม |
|---|---|
pairing (ค่าเริ่มต้น) | ผู้ส่งที่ไม่รู้จักจะได้รับรหัสจับคู่แบบใช้ครั้งเดียว; เจ้าของต้องอนุมัติ |
allowlist | เฉพาะผู้ส่งใน allowFrom (หรือที่จัดเก็บรายการอนุญาตที่จับคู่แล้ว) |
open | อนุญาต DM ขาเข้าทั้งหมด (ต้องมี allowFrom: ["*"]) |
disabled | ไม่สนใจ DM ขาเข้าทั้งหมด |
| นโยบายกลุ่ม | พฤติกรรม |
|---|---|
allowlist (ค่าเริ่มต้น) | เฉพาะกลุ่มที่ตรงกับรายการอนุญาตที่กำหนดไว้ |
open | ข้ามรายการอนุญาตของกลุ่ม (การควบคุมด้วยการกล่าวถึงยังคงมีผล) |
disabled | บล็อกข้อความกลุ่ม/ห้องทั้งหมด |
channels.defaults.groupPolicy ตั้งค่าเริ่มต้นเมื่อไม่ได้ตั้งค่า groupPolicy ของผู้ให้บริการ.
รหัสจับคู่จะหมดอายุหลังจาก 1 ชั่วโมง. คำขอจับคู่ DM ที่รอดำเนินการถูกจำกัดไว้ที่ 3 รายการต่อช่องทาง.
หากบล็อกผู้ให้บริการหายไปทั้งหมด (ไม่มี channels.<provider>) นโยบายกลุ่มของรันไทม์จะถอยกลับไปใช้ allowlist (ปิดไว้ก่อนเมื่อผิดพลาด) พร้อมคำเตือนตอนเริ่มทำงาน.การแทนที่โมเดลของช่องทาง
ใช้channels.modelByChannel เพื่อปักหมุด ID ช่องทางเฉพาะกับโมเดล ค่ายอมรับ provider/model หรือนามแฝงโมเดลที่กำหนดค่าไว้ การแมปช่องทางจะมีผลเมื่อเซสชันยังไม่มีการแทนที่โมเดลอยู่แล้ว (เช่น ตั้งค่าผ่าน /model).
ค่าเริ่มต้นของช่องทางและ Heartbeat
ใช้channels.defaults สำหรับพฤติกรรมนโยบายกลุ่มและ Heartbeat ที่ใช้ร่วมกันข้ามผู้ให้บริการ:
channels.defaults.groupPolicy: นโยบายกลุ่มสำรองเมื่อไม่ได้ตั้งค่าgroupPolicyระดับผู้ให้บริการ.channels.defaults.contextVisibility: โหมดการมองเห็นบริบทเสริมเริ่มต้นสำหรับทุกช่องทาง ค่า:all(ค่าเริ่มต้น, รวมบริบทที่ยกคำพูด/เธรด/ประวัติทั้งหมด),allowlist(รวมเฉพาะบริบทจากผู้ส่งที่อยู่ในรายการอนุญาต),allowlist_quote(เหมือน allowlist แต่คงบริบทการยกคำพูด/ตอบกลับที่ระบุชัดเจนไว้). การแทนที่ต่อช่องทาง:channels.<channel>.contextVisibility.channels.defaults.heartbeat.showOk: รวมสถานะช่องทางที่ปกติในเอาต์พุต Heartbeat.channels.defaults.heartbeat.showAlerts: รวมสถานะเสื่อมคุณภาพ/ข้อผิดพลาดในเอาต์พุต Heartbeat.channels.defaults.heartbeat.useIndicator: แสดงเอาต์พุต Heartbeat แบบตัวบ่งชี้ขนาดกะทัดรัด.
WhatsApp หลายบัญชี
WhatsApp หลายบัญชี
- คำสั่งขาออกจะใช้บัญชี
defaultเป็นค่าเริ่มต้นหากมีอยู่; มิฉะนั้นจะใช้ ID บัญชีแรกที่กำหนดค่าไว้ (เรียงลำดับแล้ว). channels.whatsapp.defaultAccountที่ไม่บังคับจะแทนที่การเลือกบัญชีเริ่มต้นสำรองนั้นเมื่อค่าตรงกับ ID บัญชีที่กำหนดค่าไว้.- ไดเรกทอรี auth ของ Baileys แบบบัญชีเดียวเดิมจะถูกย้ายโดย
openclaw doctorไปยังwhatsapp/default. - การแทนที่ต่อบัญชี:
channels.whatsapp.accounts.<id>.sendReadReceipts,channels.whatsapp.accounts.<id>.dmPolicy,channels.whatsapp.accounts.<id>.allowFrom.
Telegram
- โทเคนบอต:
channels.telegram.botTokenหรือchannels.telegram.tokenFile(ไฟล์ปกติเท่านั้น; ปฏิเสธ symlink), โดยใช้TELEGRAM_BOT_TOKENเป็นค่าสำรองสำหรับบัญชีเริ่มต้น. apiRootคือรากของ Telegram Bot API เท่านั้น ใช้https://api.telegram.orgหรือรากแบบโฮสต์เอง/พร็อกซีของคุณ ไม่ใช่https://api.telegram.org/bot<TOKEN>;openclaw doctor --fixจะลบส่วนท้าย/bot<TOKEN>ที่เผลอใส่เข้ามา.channels.telegram.defaultAccountที่ไม่บังคับจะแทนที่การเลือกบัญชีเริ่มต้นเมื่อค่าตรงกับ ID บัญชีที่กำหนดค่าไว้.- ในการตั้งค่าหลายบัญชี (ID บัญชี 2 รายการขึ้นไป), ให้ตั้งค่าเริ่มต้นอย่างชัดเจน (
channels.telegram.defaultAccountหรือchannels.telegram.accounts.default) เพื่อหลีกเลี่ยงการกำหนดเส้นทางสำรอง;openclaw doctorจะเตือนเมื่อค่านี้หายไปหรือไม่ถูกต้อง. configWrites: falseบล็อกการเขียนการกำหนดค่าที่เริ่มจาก Telegram (การย้าย ID supergroup,/config set|unset).- รายการ
bindings[]ระดับบนสุดที่มีtype: "acp"กำหนดค่าการผูก ACP แบบถาวรสำหรับหัวข้อฟอรัม (ใช้chatId:topic:topicIdแบบมาตรฐานในmatch.peer.id). ความหมายของฟิลด์ใช้ร่วมกันใน เอเจนต์ ACP. - ตัวอย่างสตรีมของ Telegram ใช้
sendMessage+editMessageText(ทำงานในแชตโดยตรงและแชตกลุ่ม). - นโยบายการลองใหม่: ดู นโยบายการลองใหม่.
Discord
- โทเค็น:
channels.discord.tokenโดยมีDISCORD_BOT_TOKENเป็น fallback สำหรับบัญชีเริ่มต้น. - การเรียกขาออกโดยตรงที่ระบุ Discord
tokenอย่างชัดเจนจะใช้โทเค็นนั้นสำหรับการเรียก; การตั้งค่าการลองใหม่/นโยบายของบัญชียังคงมาจากบัญชีที่เลือกในสแนปช็อต runtime ที่ใช้งานอยู่. channels.discord.defaultAccountแบบไม่บังคับจะแทนที่การเลือกบัญชีเริ่มต้นเมื่อค่าตรงกับ id บัญชีที่กำหนดค่าไว้.- ใช้
user:<id>(DM) หรือchannel:<id>(ช่องกิลด์) สำหรับเป้าหมายการส่ง; ID ตัวเลขล้วนจะถูกปฏิเสธ. - slug ของกิลด์เป็นตัวพิมพ์เล็กโดยแทนที่ช่องว่างด้วย
-; คีย์ช่องใช้ชื่อแบบ slug (ไม่มี#). แนะนำให้ใช้ ID กิลด์. - ข้อความที่บอทเป็นผู้เขียนจะถูกละเว้นโดยค่าเริ่มต้น.
allowBots: trueเปิดใช้งานข้อความเหล่านั้น; ใช้allowBots: "mentions"เพื่อรับเฉพาะข้อความบอทที่กล่าวถึงบอทเท่านั้น (ข้อความของตัวเองยังคงถูกกรอง). channels.discord.guilds.<id>.ignoreOtherMentions(และการ override ระดับช่อง) จะตัดข้อความที่กล่าวถึงผู้ใช้หรือบทบาทอื่นแต่ไม่ได้กล่าวถึงบอทออก (ยกเว้น @everyone/@here).channels.discord.mentionAliasesแมปข้อความขาออก@handleที่เสถียรไปยัง ID ผู้ใช้ Discord ก่อนส่ง เพื่อให้สามารถกล่าวถึงเพื่อนร่วมทีมที่รู้จักได้อย่างกำหนดซ้ำได้แม้แคชไดเรกทอรีชั่วคราวจะว่างอยู่. การ override รายบัญชีอยู่ใต้channels.discord.accounts.<accountId>.mentionAliases.maxLinesPerMessage(ค่าเริ่มต้น 17) แยกข้อความที่สูงเป็นหลายส่วนแม้มีความยาวต่ำกว่า 2000 อักขระ.channels.discord.threadBindingsควบคุมการกำหนดเส้นทาง Discord ที่ผูกกับเธรด:enabled: การ override ของ Discord สำหรับฟีเจอร์เซสชันที่ผูกกับเธรด (/focus,/unfocus,/agents,/session idle,/session max-age, และการส่ง/กำหนดเส้นทางที่ผูกไว้)idleHours: การ override ของ Discord สำหรับการเลิกโฟกัสอัตโนมัติเมื่อไม่มีการใช้งานเป็นชั่วโมง (0ปิดใช้งาน)maxAgeHours: การ override ของ Discord สำหรับอายุสูงสุดแบบบังคับเป็นชั่วโมง (0ปิดใช้งาน)spawnSessions: สวิตช์สำหรับsessions_spawn({ thread: true })และการสร้าง/ผูกเธรดอัตโนมัติของ ACP thread-spawn (ค่าเริ่มต้น:true)defaultSpawnContext: บริบท subagent แบบเนทีฟสำหรับการ spawn ที่ผูกกับเธรด ("fork"โดยค่าเริ่มต้น)
- รายการ
bindings[]ระดับบนสุดที่มีtype: "acp"กำหนดค่าการผูก ACP แบบถาวรสำหรับช่องและเธรด (ใช้ id ช่อง/เธรดในmatch.peer.id). ความหมายของฟิลด์ใช้ร่วมกันใน ACP Agents. channels.discord.ui.components.accentColorตั้งค่าสี accent สำหรับคอนเทนเนอร์ Discord components v2.channels.discord.voiceเปิดใช้งานการสนทนาในช่องเสียง Discord และการ override แบบไม่บังคับสำหรับ auto-join + LLM + TTS. การกำหนดค่า Discord แบบข้อความอย่างเดียวจะปิดเสียงโดยค่าเริ่มต้น; ตั้งค่าchannels.discord.voice.enabled=trueเพื่อเลือกเปิดใช้งาน.channels.discord.voice.modelสามารถ override โมเดล LLM ที่ใช้สำหรับการตอบกลับในช่องเสียง Discord.channels.discord.voice.daveEncryptionและchannels.discord.voice.decryptionFailureToleranceส่งผ่านไปยังตัวเลือก DAVE ของ@discordjs/voice(trueและ24โดยค่าเริ่มต้น).channels.discord.voice.connectTimeoutMsควบคุมการรอ Ready เริ่มต้นของ@discordjs/voiceสำหรับ/vc joinและความพยายาม auto-join (30000โดยค่าเริ่มต้น).channels.discord.voice.reconnectGraceMsควบคุมระยะเวลาที่เซสชันเสียงซึ่งตัดการเชื่อมต่อสามารถเข้าสู่สัญญาณการเชื่อมต่อใหม่ได้ก่อนที่ OpenClaw จะทำลายเซสชันนั้น (15000โดยค่าเริ่มต้น).- การเล่นเสียงของ Discord จะไม่ถูกขัดจังหวะโดยเหตุการณ์เริ่มพูดของผู้ใช้อื่น. เพื่อหลีกเลี่ยงลูป feedback, OpenClaw จะละเว้นการจับเสียงใหม่ระหว่างที่ TTS กำลังเล่น.
- OpenClaw ยังพยายามกู้คืนการรับเสียงด้วยการออก/เข้าร่วมเซสชันเสียงใหม่หลังจากถอดรหัสล้มเหลวซ้ำ ๆ.
channels.discord.streamingคือคีย์โหมดสตรีมตามมาตรฐาน. Discord มีค่าเริ่มต้นเป็นstreaming.mode: "progress"เพื่อให้ความคืบหน้าของเครื่องมือ/งานปรากฏในข้อความพรีวิวที่แก้ไขเพียงข้อความเดียว; ตั้งค่าstreaming.mode: "off"เพื่อปิดใช้งาน. ค่า legacystreamModeและค่า booleanstreamingยังคงเป็น alias ใน runtime; รันopenclaw doctor --fixเพื่อเขียน config ที่คงอยู่ใหม่.channels.discord.autoPresenceแมปความพร้อมใช้งานของ runtime ไปยัง presence ของบอท (healthy => online, degraded => idle, exhausted => dnd) และอนุญาตให้ override ข้อความสถานะได้แบบไม่บังคับ.channels.discord.dangerouslyAllowNameMatchingเปิดใช้งานการจับคู่ชื่อ/แท็กที่เปลี่ยนแปลงได้อีกครั้ง (โหมดความเข้ากันได้แบบฉุกเฉิน).channels.discord.execApprovals: การส่งคำขออนุมัติ exec แบบเนทีฟของ Discord และการอนุญาตผู้อนุมัติ.enabled:true,false, หรือ"auto"(ค่าเริ่มต้น). ในโหมด auto, การอนุมัติ exec จะเปิดใช้งานเมื่อสามารถ resolve ผู้อนุมัติจากapproversหรือcommands.ownerAllowFrom.approvers: ID ผู้ใช้ Discord ที่ได้รับอนุญาตให้อนุมัติคำขอ exec. fallback เป็นcommands.ownerAllowFromเมื่อไม่ระบุ.agentFilter: allowlist ID agent แบบไม่บังคับ. ละไว้เพื่อส่งต่อการอนุมัติสำหรับ agent ทั้งหมด.sessionFilter: รูปแบบคีย์เซสชันแบบไม่บังคับ (substring หรือ regex).target: ตำแหน่งที่จะส่งพรอมต์อนุมัติ."dm"(ค่าเริ่มต้น) ส่งไปยัง DM ของผู้อนุมัติ,"channel"ส่งไปยังช่องต้นทาง,"both"ส่งไปยังทั้งสองที่. เมื่อ target มี"channel"ปุ่มจะใช้งานได้เฉพาะผู้อนุมัติที่ resolve ได้เท่านั้น.cleanupAfterResolve: เมื่อเป็นtrueจะลบ DM อนุมัติหลังจากอนุมัติ ปฏิเสธ หรือหมดเวลา.
off (ไม่มี), own (ข้อความของบอท, ค่าเริ่มต้น), all (ทุกข้อความ), allowlist (จาก guilds.<id>.users บนทุกข้อความ).
Google Chat
- JSON ของ service account: แบบ inline (
serviceAccount) หรือแบบไฟล์ (serviceAccountFile). - รองรับ SecretRef ของ service account ด้วย (
serviceAccountRef). - fallback ของ env:
GOOGLE_CHAT_SERVICE_ACCOUNTหรือGOOGLE_CHAT_SERVICE_ACCOUNT_FILE. - ใช้
spaces/<spaceId>หรือusers/<userId>สำหรับเป้าหมายการส่ง. channels.googlechat.dangerouslyAllowNameMatchingเปิดใช้งานการจับคู่ email principal ที่เปลี่ยนแปลงได้อีกครั้ง (โหมดความเข้ากันได้แบบฉุกเฉิน).
Slack
- โหมด Socket ต้องมีทั้ง
botTokenและappToken(SLACK_BOT_TOKEN+SLACK_APP_TOKENสำหรับ fallback ของ env บัญชีเริ่มต้น). - โหมด HTTP ต้องมี
botTokenพร้อมsigningSecret(ที่ระดับ root หรือรายบัญชี). socketModeส่งผ่านการปรับแต่ง transport ของ Slack SDK Socket Mode ไปยัง Bolt receiver API สาธารณะ. ใช้เฉพาะเมื่อตรวจสอบ timeout ของ ping/pong หรือพฤติกรรม websocket ที่ค้าง.botToken,appToken,signingSecret, และuserTokenรับสตริง plaintext หรืออ็อบเจกต์ SecretRef.- สแนปช็อตบัญชี Slack เปิดเผยฟิลด์แหล่งที่มา/สถานะราย credential เช่น
botTokenSource,botTokenStatus,appTokenStatus, และในโหมด HTTP คือsigningSecretStatus.configured_unavailableหมายความว่าบัญชีถูก กำหนดค่าผ่าน SecretRef แต่ path ของคำสั่ง/runtime ปัจจุบันไม่สามารถ resolve ค่าความลับได้. configWrites: falseบล็อกการเขียน config ที่เริ่มจาก Slack.channels.slack.defaultAccountแบบไม่บังคับจะแทนที่การเลือกบัญชีเริ่มต้นเมื่อค่าตรงกับ id บัญชีที่กำหนดค่าไว้.channels.slack.streaming.modeคือคีย์โหมดสตรีมของ Slack ตามมาตรฐาน.channels.slack.streaming.nativeTransportควบคุม transport สตรีมมิงแบบเนทีฟของ Slack. ค่า legacystreamMode, ค่า booleanstreaming, และค่าnativeStreamingยังคงเป็น alias ใน runtime; รันopenclaw doctor --fixเพื่อเขียน config ที่คงอยู่ใหม่.unfurlLinksและunfurlMediaส่งผ่าน boolean สำหรับ link และ media unfurl ของchat.postMessageใน Slack สำหรับการตอบกลับของบอท. ละไว้เพื่อคงพฤติกรรมเริ่มต้นของ Slack; ตั้งค่าที่channels.slack.accounts.<accountId>เพื่อ override ค่าเริ่มต้นระดับบนสุดสำหรับบัญชีหนึ่งบัญชี.- ใช้
user:<id>(DM) หรือchannel:<id>สำหรับเป้าหมายการส่ง.
off, own (ค่าเริ่มต้น), all, allowlist (จาก reactionAllowlist).
การแยกเซสชันเธรด: thread.historyScope เป็นแบบรายเธรด (ค่าเริ่มต้น) หรือใช้ร่วมกันทั่วทั้งช่อง. thread.inheritParent คัดลอก transcript ของช่องแม่ไปยังเธรดใหม่.
- การสตรีมแบบเนทีฟของ Slack ร่วมกับสถานะเธรด “is typing…” แบบผู้ช่วยของ Slack ต้องมีเป้าหมายเธรดตอบกลับ. DM ระดับบนสุดยังคงอยู่นอกเธรดโดยค่าเริ่มต้น จึงยังสามารถสตรีมผ่านพรีวิวแบบโพสต์ฉบับร่างแล้วแก้ไขของ Slack แทนการแสดงพรีวิวสตรีม/สถานะแบบเนทีฟสไตล์เธรด.
typingReactionเพิ่ม reaction ชั่วคราวให้กับข้อความ Slack ขาเข้าขณะที่การตอบกลับกำลังทำงาน แล้วลบออกเมื่อเสร็จสิ้น. ใช้ shortcode อีโมจิ Slack เช่น"hourglass_flowing_sand".channels.slack.execApprovals: การส่งคำขออนุมัติ exec แบบเนทีฟของ Slack และการอนุญาตผู้อนุมัติ. ใช้ schema เดียวกับ Discord:enabled(true/false/"auto"),approvers(ID ผู้ใช้ Slack),agentFilter,sessionFilter, และtarget("dm","channel", หรือ"both").
| กลุ่ม action | ค่าเริ่มต้น | หมายเหตุ |
|---|---|---|
| reactions | enabled | React + แสดงรายการ reaction |
| messages | enabled | อ่าน/ส่ง/แก้ไข/ลบ |
| pins | enabled | ปักหมุด/ถอนหมุด/แสดงรายการ |
| memberInfo | enabled | ข้อมูลสมาชิก |
| emojiList | enabled | รายการอีโมจิที่กำหนดเอง |
Mattermost
Mattermost จัดส่งเป็น Plugin ที่บันเดิลมาใน OpenClaw รุ่นปัจจุบัน. บิลด์เก่าหรือ บิลด์แบบกำหนดเองสามารถติดตั้งแพ็กเกจ npm ปัจจุบันด้วยopenclaw plugins install @openclaw/mattermost. ตรวจสอบ
npmjs.com/package/@openclaw/mattermost
สำหรับ dist-tag ปัจจุบันก่อน pin เวอร์ชัน.
oncall (ตอบกลับเมื่อถูก @-mention, ค่าเริ่มต้น), onmessage (ทุกข้อความ), onchar (ข้อความที่ขึ้นต้นด้วยคำนำหน้าทริกเกอร์)
เมื่อเปิดใช้งานคำสั่งเนทีฟของ Mattermost:
commands.callbackPathต้องเป็นพาธ (เช่น/api/channels/mattermost/command) ไม่ใช่ URL แบบเต็มcommands.callbackUrlต้อง resolve ไปยังปลายทาง Gateway ของ OpenClaw และต้องเข้าถึงได้จากเซิร์ฟเวอร์ Mattermost- callback แบบ slash เนทีฟจะตรวจสอบสิทธิ์ด้วยโทเค็นต่อคำสั่งที่ Mattermost ส่งคืน
ระหว่างการลงทะเบียนคำสั่ง slash หากการลงทะเบียนล้มเหลวหรือไม่มี
คำสั่งใดถูกเปิดใช้งาน OpenClaw จะปฏิเสธ callback ด้วย
Unauthorized: invalid command token. - สำหรับโฮสต์ callback แบบส่วนตัว/tailnet/ภายใน Mattermost อาจต้องให้
ServiceSettings.AllowedUntrustedInternalConnectionsรวมโฮสต์/โดเมนของ callback ใช้ค่าโฮสต์/โดเมน ไม่ใช่ URL แบบเต็ม channels.mattermost.configWrites: อนุญาตหรือปฏิเสธการเขียนการกำหนดค่าที่เริ่มจาก Mattermostchannels.mattermost.requireMention: ต้องมี@mentionก่อนตอบกลับในช่องทางchannels.mattermost.groups.<channelId>.requireMention: การแทนที่การ gate ด้วย mention ต่อช่องทาง ("*"สำหรับค่าเริ่มต้น)channels.mattermost.defaultAccountที่เป็นตัวเลือกจะแทนที่การเลือกบัญชีเริ่มต้นเมื่อค่าตรงกับ id บัญชีที่กำหนดค่าไว้
Signal
off, own (ค่าเริ่มต้น), all, allowlist (จาก reactionAllowlist)
channels.signal.account: ปักการเริ่มต้นช่องทางไว้กับตัวตนบัญชี Signal ที่ระบุchannels.signal.configWrites: อนุญาตหรือปฏิเสธการเขียนการกำหนดค่าที่เริ่มจาก Signalchannels.signal.defaultAccountที่เป็นตัวเลือกจะแทนที่การเลือกบัญชีเริ่มต้นเมื่อค่าตรงกับ id บัญชีที่กำหนดค่าไว้
iMessage
OpenClaw จะ spawnimsg rpc (JSON-RPC ผ่าน stdio) ไม่ต้องใช้ daemon หรือพอร์ต นี่คือพาธที่แนะนำสำหรับการตั้งค่า iMessage ใหม่ของ OpenClaw เมื่อโฮสต์สามารถให้สิทธิ์ฐานข้อมูล Messages และ Automation ได้
การรองรับ BlueBubbles ถูกลบออกแล้ว channels.bluebubbles ไม่ใช่พื้นผิว config runtime ที่รองรับบน OpenClaw ปัจจุบัน ย้าย config เก่าไปที่ channels.imessage; ใช้ การลบ BlueBubbles และพาธ imsg iMessage สำหรับเวอร์ชันสั้น และ การย้ายมาจาก BlueBubbles สำหรับตารางแปลแบบเต็ม
หาก Gateway ไม่ได้รันบน Mac ที่ลงชื่อเข้าใช้ Messages ให้คง channels.imessage.enabled=true ไว้และตั้ง channels.imessage.cliPath เป็น SSH wrapper ที่รัน imsg "$@" บน Mac เครื่องนั้น พาธ imsg ในเครื่องตามค่าเริ่มต้นใช้ได้เฉพาะ macOS เท่านั้น
-
channels.imessage.defaultAccountที่เป็นตัวเลือกจะแทนที่การเลือกบัญชีเริ่มต้นเมื่อค่าตรงกับ id บัญชีที่กำหนดค่าไว้ - ต้องใช้ Full Disk Access ไปยัง Messages DB
-
แนะนำให้ใช้เป้าหมาย
chat_id:<id>ใช้imsg chats --limit 20เพื่อแสดงรายการแชท -
cliPathสามารถชี้ไปยัง SSH wrapper ได้; ตั้งremoteHost(hostหรือuser@host) สำหรับการดึงไฟล์แนบผ่าน SCP -
attachmentRootsและremoteAttachmentRootsจำกัดพาธไฟล์แนบขาเข้า (ค่าเริ่มต้น:/Users/*/Library/Messages/Attachments) -
SCP ใช้การตรวจสอบ host-key แบบเข้มงวด ดังนั้นตรวจสอบให้แน่ใจว่า key ของ relay host มีอยู่ใน
~/.ssh/known_hostsแล้ว -
channels.imessage.configWrites: อนุญาตหรือปฏิเสธการเขียนการกำหนดค่าที่เริ่มจาก iMessage -
channels.imessage.actions.*: เปิดใช้งานการกระทำ private API ที่ยังถูก gate โดยimsg status/openclaw channels status --probe -
channels.imessage.includeAttachmentsปิดอยู่ตามค่าเริ่มต้น; ตั้งเป็นtrueก่อนคาดหวังสื่อขาเข้าในรอบของเอเจนต์ -
channels.imessage.catchup.enabled: opt in เพื่อ replay ข้อความขาเข้าที่มาถึงระหว่างที่ Gateway ไม่ทำงาน -
channels.imessage.groups: registry ของกลุ่มและการตั้งค่าต่อกลุ่ม เมื่อใช้groupPolicy: "allowlist"ให้กำหนดค่าคีย์chat_idแบบชัดเจนหรือรายการ wildcard"*"เพื่อให้ข้อความกลุ่มผ่าน gate ของ registry ได้ -
รายการระดับบนสุด
bindings[]ที่มีtype: "acp"สามารถ bind การสนทนา iMessage เข้ากับเซสชัน ACP แบบถาวร ใช้ handle ที่ normalize แล้วหรือเป้าหมายแชทแบบชัดเจน (chat_id:*,chat_guid:*,chat_identifier:*) ในmatch.peer.idความหมายของฟิลด์ที่ใช้ร่วมกัน: เอเจนต์ ACP
ตัวอย่าง SSH wrapper สำหรับ iMessage
ตัวอย่าง SSH wrapper สำหรับ iMessage
Matrix
Matrix รองรับโดย Plugin และกำหนดค่าใต้channels.matrix
- การ auth ด้วยโทเค็นใช้
accessToken; การ auth ด้วยรหัสผ่านใช้userId+password channels.matrix.proxyroute ทราฟฟิก HTTP ของ Matrix ผ่าน proxy HTTP(S) ที่ระบุชัดเจน บัญชีที่ตั้งชื่อไว้สามารถแทนที่ได้ด้วยchannels.matrix.accounts.<id>.proxychannels.matrix.network.dangerouslyAllowPrivateNetworkอนุญาต homeserver ส่วนตัว/ภายในproxyและการ opt-in เครือข่ายนี้เป็นคอนโทรลที่เป็นอิสระจากกันchannels.matrix.defaultAccountเลือกบัญชีที่ต้องการในการตั้งค่าหลายบัญชีchannels.matrix.autoJoinมีค่าเริ่มต้นเป็นoffดังนั้นห้องที่ถูกเชิญและคำเชิญใหม่แบบ DM จะถูกละเว้นจนกว่าคุณจะตั้งautoJoin: "allowlist"พร้อมautoJoinAllowlistหรือautoJoin: "always"channels.matrix.execApprovals: การส่งการอนุมัติ exec แบบเนทีฟของ Matrix และการอนุญาตผู้อนุมัติenabled:true,false, หรือ"auto"(ค่าเริ่มต้น) ในโหมด auto การอนุมัติ exec จะเปิดใช้งานเมื่อ resolve ผู้อนุมัติได้จากapproversหรือcommands.ownerAllowFromapprovers: ID ผู้ใช้ Matrix (เช่น@owner:example.org) ที่ได้รับอนุญาตให้ออกการอนุมัติคำขอ execagentFilter: allowlist ID เอเจนต์ที่เป็นตัวเลือก ละไว้เพื่อส่งต่อการอนุมัติสำหรับเอเจนต์ทั้งหมดsessionFilter: รูปแบบ key ของเซสชันที่เป็นตัวเลือก (substring หรือ regex)target: ตำแหน่งที่จะส่ง prompt การอนุมัติ"dm"(ค่าเริ่มต้น),"channel"(ห้องต้นทาง), หรือ"both"- การแทนที่ต่อบัญชี:
channels.matrix.accounts.<id>.execApprovals
channels.matrix.dm.sessionScopeควบคุมวิธีที่ DM ของ Matrix รวมเป็นเซสชัน:per-user(ค่าเริ่มต้น) ใช้ร่วมกันตาม peer ที่ route แล้ว ส่วนper-roomแยกแต่ละห้อง DM ออกจากกัน- probe สถานะ Matrix และการค้นหา directory แบบ live ใช้นโยบาย proxy เดียวกับทราฟฟิก runtime
- การกำหนดค่า Matrix แบบเต็ม กฎการกำหนดเป้าหมาย และตัวอย่างการตั้งค่ามีเอกสารอยู่ใน Matrix
Microsoft Teams
Microsoft Teams รองรับโดย Plugin และกำหนดค่าใต้channels.msteams
- พาธคีย์หลักที่ครอบคลุมที่นี่:
channels.msteams,channels.msteams.configWrites - config Teams แบบเต็ม (ข้อมูลรับรอง, webhook, นโยบาย DM/กลุ่ม, การแทนที่ต่อทีม/ต่อช่องทาง) มีเอกสารอยู่ใน Microsoft Teams
IRC
IRC รองรับโดย Plugin และกำหนดค่าใต้channels.irc
- พาธคีย์หลักที่ครอบคลุมที่นี่:
channels.irc,channels.irc.dmPolicy,channels.irc.configWrites,channels.irc.nickserv.* channels.irc.defaultAccountที่เป็นตัวเลือกจะแทนที่การเลือกบัญชีเริ่มต้นเมื่อค่าตรงกับ id บัญชีที่กำหนดค่าไว้- การกำหนดค่าช่องทาง IRC แบบเต็ม (host/port/TLS/channels/allowlists/mention gating) มีเอกสารอยู่ใน IRC
หลายบัญชี (ทุกช่องทาง)
รันหลายบัญชีต่อช่องทาง (แต่ละบัญชีมีaccountId ของตัวเอง):
- ใช้
defaultเมื่อไม่ได้ระบุaccountId(CLI + routing) - โทเค็น env ใช้กับบัญชี default เท่านั้น
- การตั้งค่าช่องทางพื้นฐานใช้กับทุกบัญชี เว้นแต่ถูกแทนที่ต่อบัญชี
- ใช้
bindings[].match.accountIdเพื่อ route แต่ละบัญชีไปยังเอเจนต์ต่างกัน - หากคุณเพิ่มบัญชีที่ไม่ใช่ค่าเริ่มต้นผ่าน
openclaw channels add(หรือ onboarding ช่องทาง) ขณะที่ยังอยู่บน config ช่องทางระดับบนสุดแบบบัญชีเดียว OpenClaw จะ promote ค่าบัญชีเดียวระดับบนสุดที่ scoped กับบัญชีเข้าไปใน map บัญชีของช่องทางก่อน เพื่อให้บัญชีเดิมยังทำงานต่อไป ช่องทางส่วนใหญ่จะย้ายค่าเหล่านั้นไปที่channels.<channel>.accounts.default; Matrix สามารถคงเป้าหมายที่ตั้งชื่อไว้/ค่าเริ่มต้นเดิมที่ตรงกันไว้แทนได้ - binding ที่มีอยู่แบบเฉพาะช่องทาง (ไม่มี
accountId) ยังคง match กับบัญชี default; binding ที่ scoped กับบัญชียังคงเป็นตัวเลือก openclaw doctor --fixยังซ่อมรูปทรงแบบผสมด้วยการย้ายค่าบัญชีเดียวระดับบนสุดที่ scoped กับบัญชีเข้าไปในบัญชีที่ถูก promote ซึ่งเลือกไว้สำหรับช่องทางนั้น ช่องทางส่วนใหญ่ใช้accounts.default; Matrix สามารถคงเป้าหมายที่ตั้งชื่อไว้/ค่าเริ่มต้นเดิมที่ตรงกันไว้แทนได้
ช่องทาง Plugin อื่นๆ
ช่องทาง Plugin จำนวนมากกำหนดค่าเป็นchannels.<id> และมีเอกสารในหน้าช่องทางเฉพาะของตนเอง (เช่น Feishu, Matrix, LINE, Nostr, Zalo, Nextcloud Talk, Synology Chat และ Twitch)
ดูดัชนีช่องทางทั้งหมด: ช่องทาง
การ gate mention ในแชทกลุ่ม
ข้อความกลุ่มมีค่าเริ่มต้นเป็น ต้องมี mention (mention จาก metadata หรือรูปแบบ regex ที่ปลอดภัย) ใช้กับแชทกลุ่มของ WhatsApp, Telegram, Discord, Google Chat และ iMessage การตอบกลับที่มองเห็นได้จะถูกควบคุมแยกต่างหาก ห้องกลุ่ม/ช่องมีค่าเริ่มต้นเป็นmessages.groupChat.visibleReplies: "message_tool": OpenClaw ยังคงประมวลผลเทิร์นนั้น แต่การตอบกลับสุดท้ายตามปกติจะยังเป็นแบบส่วนตัว และเอาต์พุตในห้องที่มองเห็นได้ต้องใช้ message(action=send) ตั้งค่าเป็น "automatic" เฉพาะเมื่อต้องการพฤติกรรมแบบเดิมที่โพสต์การตอบกลับปกติกลับไปยังห้อง หากต้องการใช้พฤติกรรมการตอบกลับที่มองเห็นได้แบบใช้เครื่องมือเท่านั้นกับแชทโดยตรงด้วย ให้ตั้งค่า messages.visibleReplies: "message_tool"; ฮาร์เนส Codex ยังใช้พฤติกรรมแบบใช้เครื่องมือเท่านั้นนั้นเป็นค่าเริ่มต้นของแชทโดยตรงเมื่อไม่ได้ตั้งค่า
การตอบกลับที่มองเห็นได้แบบใช้เครื่องมือเท่านั้นต้องใช้โมเดล/รันไทม์ที่เรียกใช้เครื่องมือได้อย่างเชื่อถือได้ หากบันทึกเซสชันแสดงข้อความจากผู้ช่วยพร้อม didSendViaMessagingTool: false แสดงว่าโมเดลสร้างคำตอบสุดท้ายแบบส่วนตัวแทนการเรียกใช้เครื่องมือส่งข้อความ ให้เปลี่ยนไปใช้โมเดลที่เรียกเครื่องมือได้ดีกว่าสำหรับช่องนั้น หรือกำหนด messages.groupChat.visibleReplies: "automatic" เพื่อคืนค่าการตอบกลับสุดท้ายแบบเดิมที่มองเห็นได้
หากเครื่องมือส่งข้อความไม่พร้อมใช้งานภายใต้นโยบายเครื่องมือที่ใช้งานอยู่ OpenClaw จะย้อนกลับไปใช้การตอบกลับที่มองเห็นได้แบบอัตโนมัติ แทนที่จะระงับการตอบกลับอย่างเงียบ ๆ openclaw doctor จะเตือนเกี่ยวกับความไม่ตรงกันนี้
Gateway จะโหลดคอนฟิก messages ใหม่แบบฮอตรีโหลดหลังจากบันทึกไฟล์ รีสตาร์ตเฉพาะเมื่อการเฝ้าดูไฟล์หรือการโหลดคอนฟิกใหม่ถูกปิดใช้งานในการปรับใช้
ประเภทการกล่าวถึง:
- การกล่าวถึงแบบเมทาดาทา: @-mention ดั้งเดิมของแพลตฟอร์ม ถูกละเว้นในโหมดแชทกับตนเองของ WhatsApp
- รูปแบบข้อความ: รูปแบบ regex ที่ปลอดภัยใน
agents.list[].groupChat.mentionPatternsรูปแบบที่ไม่ถูกต้องและการทำซ้ำซ้อนที่ไม่ปลอดภัยจะถูกละเว้น - การควบคุมด้วยการกล่าวถึงจะบังคับใช้เฉพาะเมื่อสามารถตรวจจับได้ (การกล่าวถึงดั้งเดิมหรือมีรูปแบบอย่างน้อยหนึ่งรายการ)
messages.groupChat.historyLimit ตั้งค่าเริ่มต้นส่วนกลาง ช่องต่าง ๆ สามารถเขียนทับด้วย channels.<channel>.historyLimit (หรือต่อบัญชี) ตั้งค่าเป็น 0 เพื่อปิดใช้งาน
messages.visibleReplies เป็นค่าเริ่มต้นส่วนกลางสำหรับเทิร์นจากแหล่งที่มา; messages.groupChat.visibleReplies จะเขียนทับค่านี้สำหรับเทิร์นจากแหล่งที่มาแบบกลุ่ม/ช่อง เมื่อไม่ได้ตั้งค่า messages.visibleReplies ฮาร์เนสสามารถให้ค่าเริ่มต้นของแหล่งที่มา/แชทโดยตรงของตนเองได้; ฮาร์เนส Codex มีค่าเริ่มต้นเป็น message_tool รายการอนุญาตของช่องและการควบคุมด้วยการกล่าวถึงยังคงเป็นตัวตัดสินว่าจะประมวลผลเทิร์นนั้นหรือไม่
ขีดจำกัดประวัติ DM
telegram, whatsapp, discord, slack, signal, imessage, msteams
โหมดแชทกับตนเอง
รวมหมายเลขของคุณเองในallowFrom เพื่อเปิดใช้โหมดแชทกับตนเอง (ละเว้น @-mention ดั้งเดิม ตอบสนองเฉพาะรูปแบบข้อความ):
คำสั่ง (การจัดการคำสั่งแชท)
รายละเอียดคำสั่ง
รายละเอียดคำสั่ง
- บล็อกนี้กำหนดค่าพื้นผิวคำสั่ง สำหรับแคตตาล็อกคำสั่งในตัวและแบบบันเดิลปัจจุบัน โปรดดู คำสั่งสแลช
- หน้านี้เป็น ข้อมูลอ้างอิงคีย์คอนฟิก ไม่ใช่แคตตาล็อกคำสั่งฉบับเต็ม คำสั่งที่ช่อง/Plugin เป็นเจ้าของ เช่น QQ Bot
/bot-ping/bot-help/bot-logs, LINE/card, การจับคู่อุปกรณ์/pair, หน่วยความจำ/dreaming, การควบคุมโทรศัพท์/phone, และ Talk/voiceมีเอกสารอยู่ในหน้าช่อง/Plugin ของตน รวมถึง คำสั่งสแลช - คำสั่งข้อความต้องเป็นข้อความแบบ เดี่ยวทั้งข้อความ ที่ขึ้นต้นด้วย
/ native: "auto"เปิดคำสั่งดั้งเดิมสำหรับ Discord/Telegram และปล่อย Slack ปิดไว้nativeSkills: "auto"เปิดคำสั่ง Skills ดั้งเดิมสำหรับ Discord/Telegram และปล่อย Slack ปิดไว้- เขียนทับต่อช่อง:
channels.discord.commands.native(บูลีนหรือ"auto") สำหรับ Discord ค่าfalseจะข้ามการลงทะเบียนและการล้างคำสั่งดั้งเดิมระหว่างเริ่มต้น - เขียนทับการลงทะเบียน Skills ดั้งเดิมต่อช่องด้วย
channels.<provider>.commands.nativeSkills channels.telegram.customCommandsเพิ่มรายการเมนูบอท Telegram เพิ่มเติมbash: trueเปิดใช้! <cmd>สำหรับเชลล์ของโฮสต์ ต้องมีtools.elevated.enabledและผู้ส่งอยู่ในtools.elevated.allowFrom.<channel>config: trueเปิดใช้/config(อ่าน/เขียนopenclaw.json) สำหรับไคลเอนต์ Gatewaychat.sendการเขียน/config set|unsetแบบถาวรต้องมีoperator.adminด้วย;/config showแบบอ่านอย่างเดียวยังคงพร้อมใช้งานสำหรับไคลเอนต์ตัวดำเนินการปกติที่มีขอบเขตการเขียนmcp: trueเปิดใช้/mcpสำหรับคอนฟิกเซิร์ฟเวอร์ MCP ที่ OpenClaw จัดการภายใต้mcp.serversplugins: trueเปิดใช้/pluginsสำหรับการค้นพบ Plugin การติดตั้ง และการควบคุมเปิด/ปิดchannels.<provider>.configWritesควบคุมการกลายคอนฟิกต่อช่อง (ค่าเริ่มต้น: true)- สำหรับช่องแบบหลายบัญชี
channels.<provider>.accounts.<id>.configWritesยังควบคุมการเขียนที่เล็งไปยังบัญชีนั้นด้วย (เช่น/allowlist --config --account <id>หรือ/config set channels.<provider>.accounts.<id>...) restart: falseปิดใช้งาน/restartและการดำเนินการเครื่องมือรีสตาร์ต Gateway ค่าเริ่มต้น:trueownerAllowFromเป็นรายการอนุญาตเจ้าของแบบชัดเจนสำหรับคำสั่ง/เครื่องมือเฉพาะเจ้าของ แยกจากallowFromownerDisplay: "hash"แฮชรหัสเจ้าของในพรอมป์ระบบ ตั้งค่าownerDisplaySecretเพื่อควบคุมการแฮชallowFromเป็นแบบต่อผู้ให้บริการ เมื่อตั้งค่าแล้ว จะเป็นแหล่งการอนุญาต เพียงแหล่งเดียว (รายการอนุญาต/การจับคู่ของช่อง และuseAccessGroupsจะถูกละเว้น)useAccessGroups: falseอนุญาตให้คำสั่งข้ามนโยบายกลุ่มการเข้าถึงเมื่อไม่ได้ตั้งค่าallowFrom- แผนที่เอกสารคำสั่ง:
ที่เกี่ยวข้อง
- ข้อมูลอ้างอิงการกำหนดค่า — คีย์ระดับบนสุด
- การกำหนดค่า — เอเจนต์
- ภาพรวมช่อง