channels.*. Bao gồm quyền truy cập DM và nhóm,
thiết lập nhiều tài khoản, kiểm soát bằng lượt nhắc, và các khóa theo kênh cho Slack, Discord,
Telegram, WhatsApp, Matrix, iMessage, và các Plugin kênh đi kèm khác.
Đối với tác nhân, công cụ, thời gian chạy Gateway và các khóa cấp cao khác, xem
Tham chiếu cấu hình.
Kênh
Mỗi kênh tự động khởi động khi phần cấu hình của kênh đó tồn tại (trừ khienabled: false).
Quyền truy cập DM và nhóm
Tất cả kênh đều hỗ trợ chính sách DM và chính sách nhóm:| Chính sách DM | Hành vi |
|---|---|
pairing (mặc định) | Người gửi lạ nhận mã ghép đôi một lần; chủ sở hữu phải phê duyệt |
allowlist | Chỉ người gửi trong allowFrom (hoặc kho cho phép đã ghép đôi) |
open | Cho phép mọi DM gửi đến (yêu cầu allowFrom: ["*"]) |
disabled | Bỏ qua mọi DM gửi đến |
| Chính sách nhóm | Hành vi |
|---|---|
allowlist (mặc định) | Chỉ các nhóm khớp với danh sách cho phép đã cấu hình |
open | Bỏ qua danh sách cho phép của nhóm (vẫn áp dụng kiểm soát bằng lượt nhắc) |
disabled | Chặn mọi tin nhắn nhóm/phòng |
channels.defaults.groupPolicy đặt giá trị mặc định khi groupPolicy của nhà cung cấp chưa được đặt.
Mã ghép đôi hết hạn sau 1 giờ. Các yêu cầu ghép đôi DM đang chờ được giới hạn ở 3 cho mỗi kênh.
Nếu toàn bộ khối nhà cung cấp bị thiếu (channels.<provider> không có), chính sách nhóm khi chạy sẽ quay về allowlist (đóng khi lỗi) kèm cảnh báo lúc khởi động.Ghi đè mô hình theo kênh
Dùngchannels.modelByChannel để ghim ID kênh cụ thể hoặc đối tác nhắn tin trực tiếp vào một mô hình. Giá trị chấp nhận provider/model hoặc bí danh mô hình đã cấu hình. Ánh xạ kênh áp dụng khi một phiên chưa có ghi đè mô hình (ví dụ, được đặt qua /model).
Đối với cuộc trò chuyện nhóm/luồng, khóa là ID nhóm, ID chủ đề, hoặc tên kênh theo từng kênh. Đối với cuộc trò chuyện nhắn tin trực tiếp (DM), khóa là định danh đối tác được dẫn xuất từ danh tính người gửi của kênh (nativeDirectUserId, origin.from, origin.to, OriginatingTo, From, hoặc SenderId). Dạng khóa chính xác phụ thuộc vào kênh:
| Kênh | Dạng khóa DM | Ví dụ |
|---|---|---|
| Slack | user:U... | user:U12345 |
| Telegram | ID người dùng thô | 123456789 |
| Discord | ID người dùng thô | 987654321 |
| số điện thoại hoặc JID | 15551234567 | |
| Matrix | ID người dùng Matrix | @user:matrix.org |
| Feishu | feishu:ou_... | feishu:ou_a8b6cab7e945387de5f253775d9b4d85 |
Mặc định kênh và Heartbeat
Dùngchannels.defaults cho chính sách nhóm dùng chung và hành vi Heartbeat trên nhiều nhà cung cấp:
channels.defaults.groupPolicy: chính sách nhóm dự phòng khigroupPolicycấp nhà cung cấp chưa được đặt.channels.defaults.contextVisibility: chế độ hiển thị ngữ cảnh bổ sung mặc định cho tất cả kênh. Giá trị:all(mặc định, bao gồm mọi ngữ cảnh trích dẫn/luồng/lịch sử),allowlist(chỉ bao gồm ngữ cảnh từ người gửi trong danh sách cho phép),allowlist_quote(giống allowlist nhưng giữ ngữ cảnh trích dẫn/trả lời rõ ràng). Ghi đè theo kênh:channels.<channel>.contextVisibility.channels.defaults.heartbeat.showOk: bao gồm trạng thái kênh khỏe mạnh trong đầu ra Heartbeat.channels.defaults.heartbeat.showAlerts: bao gồm trạng thái suy giảm/lỗi trong đầu ra Heartbeat.channels.defaults.heartbeat.useIndicator: hiển thị đầu ra Heartbeat kiểu chỉ báo gọn.
- Các mục
bindings[]cấp cao nhất vớitype: "acp"cấu hình liên kết ACP bền vững cho DM và nhóm WhatsApp. Dùng số trực tiếp E.164 hoặc JID nhóm WhatsApp trongmatch.peer.id. Ngữ nghĩa trường được chia sẻ trong Tác nhân ACP.
WhatsApp nhiều tài khoản
WhatsApp nhiều tài khoản
- Lệnh gửi ra mặc định dùng tài khoản
defaultnếu có; nếu không thì dùng id tài khoản đã cấu hình đầu tiên (đã sắp xếp). channels.whatsapp.defaultAccounttùy chọn ghi đè lựa chọn tài khoản mặc định dự phòng đó khi khớp với một id tài khoản đã cấu hình.- Thư mục xác thực Baileys một tài khoản cũ được
openclaw doctordi chuyển vàowhatsapp/default. - Ghi đè theo tài khoản:
channels.whatsapp.accounts.<id>.sendReadReceipts,channels.whatsapp.accounts.<id>.dmPolicy,channels.whatsapp.accounts.<id>.allowFrom.
Telegram
- Token bot:
channels.telegram.botTokenhoặcchannels.telegram.tokenFile(chỉ tệp thông thường; từ chối symlink), vớiTELEGRAM_BOT_TOKENlàm dự phòng cho tài khoản mặc định. apiRootchỉ là gốc Telegram Bot API. Dùnghttps://api.telegram.orghoặc gốc tự lưu trữ/proxy của bạn, không dùnghttps://api.telegram.org/bot<TOKEN>;openclaw doctor --fixxóa hậu tố/bot<TOKEN>vô tình ở cuối.channels.telegram.defaultAccounttùy chọn ghi đè lựa chọn tài khoản mặc định khi khớp với một id tài khoản đã cấu hình.- Trong thiết lập nhiều tài khoản (từ 2 id tài khoản trở lên), đặt mặc định rõ ràng (
channels.telegram.defaultAccounthoặcchannels.telegram.accounts.default) để tránh định tuyến dự phòng;openclaw doctorcảnh báo khi mục này bị thiếu hoặc không hợp lệ. configWrites: falsechặn các thao tác ghi cấu hình do Telegram khởi tạo (di chuyển ID supergroup,/config set|unset).- Các mục
bindings[]cấp cao nhất vớitype: "acp"cấu hình liên kết ACP bền vững cho chủ đề diễn đàn (dùngchatId:topic:topicIdchuẩn trongmatch.peer.id). Ngữ nghĩa trường được chia sẻ trong Tác nhân ACP. - Bản xem trước luồng Telegram dùng
sendMessage+editMessageText(hoạt động trong cuộc trò chuyện trực tiếp và nhóm). - Chính sách thử lại: xem Chính sách thử lại.
Discord
- Token:
channels.discord.token, vớiDISCORD_BOT_TOKENlàm phương án dự phòng cho tài khoản mặc định. - Các lệnh gọi đi trực tiếp cung cấp
tokenDiscord rõ ràng sẽ dùng token đó cho lệnh gọi; thiết lập thử lại/chính sách của tài khoản vẫn lấy từ tài khoản đã chọn trong ảnh chụp runtime đang hoạt động. channels.discord.defaultAccounttùy chọn ghi đè lựa chọn tài khoản mặc định khi khớp với một id tài khoản đã cấu hình.- Dùng
user:<id>(DM) hoặcchannel:<id>(kênh guild) cho mục tiêu gửi; ID số trần sẽ bị từ chối. - Slug guild dùng chữ thường và thay khoảng trắng bằng
-; khóa kênh dùng tên đã slug hóa (không có#). Nên ưu tiên ID guild. - Tin nhắn do bot tạo bị bỏ qua theo mặc định.
allowBots: truebật các tin nhắn đó; dùngallowBots: "mentions"để chỉ chấp nhận tin nhắn bot có nhắc đến bot (tin nhắn của chính bot vẫn bị lọc). - Các kênh hỗ trợ tin nhắn vào do bot tạo có thể dùng bảo vệ vòng lặp bot chung. Đặt
channels.defaults.botLoopProtectioncho ngân sách cặp nền tảng, rồi chỉ ghi đè kênh hoặc tài khoản khi một bề mặt cần giới hạn khác. channels.discord.guilds.<id>.ignoreOtherMentions(và ghi đè kênh) loại bỏ tin nhắn có nhắc đến người dùng hoặc vai trò khác nhưng không nhắc đến bot (ngoại trừ @everyone/@here).channels.discord.mentionAliasesánh xạ văn bản@handlegửi đi ổn định sang ID người dùng Discord trước khi gửi, để có thể nhắc đến đồng đội đã biết một cách xác định ngay cả khi bộ nhớ đệm thư mục tạm thời trống. Ghi đè theo tài khoản nằm dướichannels.discord.accounts.<accountId>.mentionAliases.maxLinesPerMessage(mặc định 17) tách các tin nhắn cao ngay cả khi dưới 2000 ký tự.channels.discord.suppressEmbedsmặc định làtrue, nên URL gửi đi sẽ không mở rộng thành bản xem trước liên kết Discord trừ khi bị tắt. Payloadembedsrõ ràng vẫn gửi bình thường; lệnh gọi công cụ theo từng tin nhắn có thể ghi đè bằngsuppressEmbeds.channels.discord.threadBindingskiểm soát định tuyến gắn với thread của Discord:enabled: ghi đè Discord cho các tính năng phiên gắn với thread (/focus,/unfocus,/agents,/session idle,/session max-age, và gửi/định tuyến đã ràng buộc)idleHours: ghi đè Discord cho tự động bỏ focus do không hoạt động, tính bằng giờ (0sẽ tắt)maxAgeHours: ghi đè Discord cho tuổi tối đa cứng, tính bằng giờ (0sẽ tắt)spawnSessions: công tắc chosessions_spawn({ thread: true })và tạo/ràng buộc thread tự động khi ACP spawn thread (mặc định:true)defaultSpawnContext: ngữ cảnh subagent gốc cho các spawn gắn với thread (mặc định là"fork")
- Các mục
bindings[]cấp cao nhất vớitype: "acp"cấu hình các ràng buộc ACP bền vững cho kênh và thread (dùng id kênh/thread trongmatch.peer.id). Ngữ nghĩa trường được dùng chung trong ACP Agents. channels.discord.ui.components.accentColorđặt màu nhấn cho container thành phần Discord v2.channels.discord.agentComponents.ttlMskiểm soát thời gian các callback thành phần Discord đã gửi còn được đăng ký. Mặc định là1800000(30 phút), tối đa là86400000(24 giờ), và ghi đè theo tài khoản nằm dướichannels.discord.accounts.<accountId>.agentComponents.ttlMs. Giá trị dài hơn giữ cho các nút/chọn/biểu mẫu cũ dùng được lâu hơn, nên ưu tiên TTL ngắn nhất phù hợp với workflow.channels.discord.voicebật hội thoại kênh thoại Discord và ghi đè tự động tham gia + LLM + TTS tùy chọn. Cấu hình Discord chỉ văn bản mặc định tắt thoại; đặtchannels.discord.voice.enabled=trueđể chọn bật.channels.discord.voice.modeltùy chọn ghi đè mô hình LLM dùng cho phản hồi kênh thoại Discord.channels.discord.voice.daveEncryptionvàchannels.discord.voice.decryptionFailureToleranceđược chuyển tiếp tới tùy chọn DAVE của@discordjs/voice(mặc định làtruevà24).channels.discord.voice.connectTimeoutMskiểm soát thời gian chờ Ready ban đầu của@discordjs/voicecho các lần thử/vc joinvà tự động tham gia (mặc định là30000).channels.discord.voice.reconnectGraceMskiểm soát khoảng thời gian một phiên thoại đã ngắt kết nối có thể dùng để vào tín hiệu kết nối lại trước khi OpenClaw hủy phiên đó (mặc định là15000).- Phát lại thoại Discord không bị ngắt bởi sự kiện bắt đầu nói của người dùng khác. Để tránh vòng lặp phản hồi âm thanh, OpenClaw bỏ qua thu thoại mới khi TTS đang phát.
- OpenClaw cũng cố gắng khôi phục nhận thoại bằng cách rời/tham gia lại một phiên thoại sau các lỗi giải mã lặp lại.
channels.discord.streaminglà khóa chế độ stream chính tắc. Discord mặc định làstreaming.mode: "progress"để tiến độ công cụ/công việc xuất hiện trong một tin nhắn xem trước được chỉnh sửa; đặtstreaming.mode: "off"để tắt. Các giá trịstreamModecũ vàstreamingkiểu boolean vẫn là bí danh runtime; chạyopenclaw doctor --fixđể viết lại cấu hình đã lưu.channels.discord.autoPresenceánh xạ trạng thái sẵn sàng của runtime sang hiện diện bot (healthy => online, degraded => idle, exhausted => dnd) và cho phép ghi đè văn bản trạng thái tùy chọn.channels.discord.dangerouslyAllowNameMatchingbật lại khớp tên/thẻ có thể thay đổi (chế độ tương thích phá kính).channels.discord.execApprovals: gửi phê duyệt exec kiểu gốc Discord và ủy quyền người phê duyệt.enabled:true,false, hoặc"auto"(mặc định). Ở chế độ tự động, phê duyệt exec kích hoạt khi có thể phân giải người phê duyệt từapprovershoặccommands.ownerAllowFrom.approvers: ID người dùng Discord được phép phê duyệt yêu cầu exec. Dự phòng vềcommands.ownerAllowFromkhi bị bỏ qua.agentFilter: danh sách cho phép ID agent tùy chọn. Bỏ qua để chuyển tiếp phê duyệt cho mọi agent.sessionFilter: mẫu khóa phiên tùy chọn (chuỗi con hoặc regex).target: nơi gửi lời nhắc phê duyệt."dm"(mặc định) gửi tới DM của người phê duyệt,"channel"gửi tới kênh khởi nguồn,"both"gửi tới cả hai. Khi target bao gồm"channel", các nút chỉ dùng được bởi người phê duyệt đã phân giải.cleanupAfterResolve: khitrue, xóa DM phê duyệt sau khi phê duyệt, từ chối hoặc hết thời gian chờ.
off (không có), own (tin nhắn của bot, mặc định), all (mọi tin nhắn), allowlist (từ guilds.<id>.users trên mọi tin nhắn).
Google Chat
- JSON tài khoản dịch vụ: nội tuyến (
serviceAccount) hoặc dựa trên tệp (serviceAccountFile). - SecretRef tài khoản dịch vụ cũng được hỗ trợ (
serviceAccountRef). - Phương án dự phòng env:
GOOGLE_CHAT_SERVICE_ACCOUNThoặcGOOGLE_CHAT_SERVICE_ACCOUNT_FILE. - Dùng
spaces/<spaceId>hoặcusers/<userId>cho mục tiêu gửi. channels.googlechat.dangerouslyAllowNameMatchingbật lại khớp principal email có thể thay đổi (chế độ tương thích phá kính).
Slack
- Chế độ Socket yêu cầu cả
botTokenvàappToken(SLACK_BOT_TOKEN+SLACK_APP_TOKENcho dự phòng env của tài khoản mặc định). - Chế độ HTTP yêu cầu
botTokencùng vớisigningSecret(ở cấp gốc hoặc theo từng tài khoản). socketModetruyền phần tinh chỉnh transport Slack SDK Socket Mode sang API Bolt receiver công khai. Chỉ dùng khi điều tra timeout ping/pong hoặc hành vi websocket lỗi thời.clientPingTimeoutmặc định là15000;serverPingTimeoutvàpingPongLoggingEnabledchỉ được truyền khi được cấu hình.botToken,appToken,signingSecret, vàuserTokenchấp nhận chuỗi văn bản thuần hoặc đối tượng SecretRef.- Snapshot tài khoản Slack hiển thị các trường nguồn/trạng thái theo từng thông tin xác thực như
botTokenSource,botTokenStatus,appTokenStatus, và, trong chế độ HTTP,signingSecretStatus.configured_unavailablenghĩa là tài khoản được cấu hình thông qua SecretRef nhưng đường dẫn lệnh/runtime hiện tại không thể phân giải giá trị bí mật. configWrites: falsechặn các lần ghi cấu hình do Slack khởi tạo.channels.slack.defaultAccounttùy chọn ghi đè lựa chọn tài khoản mặc định khi khớp với một ID tài khoản đã cấu hình.channels.slack.streaming.modelà khóa chế độ stream Slack chuẩn.channels.slack.streaming.nativeTransportkiểm soát transport streaming gốc của Slack. Các giá trị legacystreamMode, booleanstreaming, vànativeStreamingvẫn là alias runtime; chạyopenclaw doctor --fixđể ghi lại cấu hình đã lưu.unfurlLinksvàunfurlMediatruyền các boolean unfurl liên kết và media củachat.postMessagetrong Slack cho phản hồi bot.unfurlLinksmặc định làfalseđể liên kết bot gửi đi không mở rộng nội tuyến trừ khi được bật;unfurlMediabị bỏ qua trừ khi được cấu hình. Đặt một trong hai giá trị tạichannels.slack.accounts.<accountId>để ghi đè giá trị cấp cao nhất cho một tài khoản.- Dùng
user:<id>(DM) hoặcchannel:<id>cho đích gửi.
off, own (mặc định), all, allowlist (từ reactionAllowlist).
Cô lập phiên theo luồng: thread.historyScope là theo từng luồng (mặc định) hoặc dùng chung trên toàn kênh. thread.inheritParent sao chép bản ghi hội thoại của kênh cha sang các luồng mới.
- Slack native streaming cùng trạng thái luồng kiểu trợ lý Slack “is typing…” yêu cầu đích là một luồng trả lời. DM cấp cao nhất mặc định vẫn nằm ngoài luồng, nên chúng vẫn có thể stream qua bản xem trước bài nháp đăng-và-sửa của Slack thay vì hiển thị bản xem trước native stream/trạng thái kiểu luồng.
typingReactionthêm một phản ứng tạm thời vào tin nhắn Slack đến trong khi phản hồi đang chạy, rồi gỡ bỏ khi hoàn tất. Dùng shortcode emoji Slack như"hourglass_flowing_sand".channels.slack.execApprovals: gửi approval-client gốc Slack và ủy quyền người phê duyệt exec. Cùng schema như Discord:enabled(true/false/"auto"),approvers(ID người dùng Slack),agentFilter,sessionFilter, vàtarget("dm","channel", hoặc"both"). Phê duyệt Plugin có thể dùng đường dẫn native-client này cho yêu cầu bắt nguồn từ Slack khi người phê duyệt Plugin Slack phân giải được; gửi phê duyệt Plugin gốc Slack cũng có thể được bật thông quaapprovals.plugincho phiên bắt nguồn từ Slack hoặc đích Slack. Phê duyệt Plugin dùng người phê duyệt Plugin Slack từallowFromvà định tuyến mặc định, không dùng người phê duyệt exec.
| Nhóm hành động | Mặc định | Ghi chú |
|---|---|---|
| reactions | bật | Phản ứng + liệt kê phản ứng |
| messages | bật | Đọc/gửi/sửa/xóa |
| pins | bật | Ghim/bỏ ghim/liệt kê |
| memberInfo | bật | Thông tin thành viên |
| emojiList | bật | Danh sách emoji tùy chỉnh |
Mattermost
Mattermost được phát hành như một Plugin đi kèm trong các bản phát hành OpenClaw hiện tại. Các bản dựng cũ hơn hoặc tùy chỉnh có thể cài một gói npm hiện tại bằngopenclaw plugins install @openclaw/mattermost. Kiểm tra
npmjs.com/package/@openclaw/mattermost
để xem các dist-tag hiện tại trước khi ghim một phiên bản.
oncall (phản hồi khi được @-mention, mặc định), onmessage (mọi tin nhắn), onchar (tin nhắn bắt đầu bằng tiền tố kích hoạt).
Khi lệnh gốc Mattermost được bật:
commands.callbackPathphải là một đường dẫn (ví dụ/api/channels/mattermost/command), không phải URL đầy đủ.commands.callbackUrlphải phân giải tới endpoint Gateway OpenClaw và có thể truy cập được từ máy chủ Mattermost.- Callback slash gốc được xác thực bằng token theo từng lệnh do Mattermost trả về
trong quá trình đăng ký slash command. Nếu đăng ký thất bại hoặc không có
lệnh nào được kích hoạt, OpenClaw từ chối callback với
Unauthorized: invalid command token. - Với các máy chủ callback riêng tư/tailnet/nội bộ, Mattermost có thể yêu cầu
ServiceSettings.AllowedUntrustedInternalConnectionsbao gồm host/domain callback. Dùng giá trị host/domain, không dùng URL đầy đủ. channels.mattermost.configWrites: cho phép hoặc từ chối các lần ghi cấu hình do Mattermost khởi tạo.channels.mattermost.requireMention: yêu cầu@mentiontrước khi trả lời trong kênh.channels.mattermost.groups.<channelId>.requireMention: ghi đè kiểm soát mention theo từng kênh ("*"cho mặc định).channels.mattermost.defaultAccounttùy chọn ghi đè lựa chọn tài khoản mặc định khi khớp với một ID tài khoản đã cấu hình.
Signal
off, own (mặc định), all, allowlist (từ reactionAllowlist).
channels.signal.account: ghim quá trình khởi động kênh vào một danh tính tài khoản Signal cụ thể.channels.signal.configWrites: cho phép hoặc từ chối các lần ghi cấu hình do Signal khởi tạo.channels.signal.defaultAccounttùy chọn ghi đè lựa chọn tài khoản mặc định khi khớp với một ID tài khoản đã cấu hình.
iMessage
OpenClaw khởi chạyimsg rpc (JSON-RPC qua stdio). Không cần daemon hoặc cổng. Đây là đường dẫn được ưu tiên cho các thiết lập iMessage OpenClaw mới khi host có thể cấp quyền với cơ sở dữ liệu Messages và Automation.
Hỗ trợ BlueBubbles đã bị gỡ bỏ. channels.bluebubbles không phải là bề mặt cấu hình runtime được hỗ trợ trên OpenClaw hiện tại. Di chuyển cấu hình cũ sang channels.imessage; dùng Gỡ bỏ BlueBubbles và đường dẫn imsg iMessage cho bản ngắn và Chuyển từ BlueBubbles cho bảng chuyển đổi đầy đủ.
Nếu Gateway không chạy trên máy Mac Messages đã đăng nhập, giữ channels.imessage.enabled=true và đặt channels.imessage.cliPath thành một SSH wrapper chạy imsg "$@" trên máy Mac đó. Đường dẫn imsg cục bộ mặc định chỉ dành cho macOS.
Trước khi dựa vào SSH wrapper để gửi trong production, hãy xác minh một lệnh imsg send gửi ra thông qua đúng wrapper đó. Một số trạng thái TCC của macOS gán Messages Automation cho /usr/libexec/sshd-keygen-wrapper, điều này có thể làm cho việc đọc và probe hoạt động trong khi gửi thất bại với AppleEvents -1743; xem Gửi qua SSH wrapper thất bại với AppleEvents -1743.
-
channels.imessage.defaultAccounttùy chọn ghi đè lựa chọn tài khoản mặc định khi khớp với một ID tài khoản đã cấu hình. - Yêu cầu Full Disk Access tới DB Messages.
-
Ưu tiên đích
chat_id:<id>. Dùngimsg chats --limit 20để liệt kê các cuộc trò chuyện. -
cliPathcó thể trỏ tới một SSH wrapper; đặtremoteHost(hosthoặcuser@host) để lấy tệp đính kèm qua SCP. -
attachmentRootsvàremoteAttachmentRootsgiới hạn đường dẫn tệp đính kèm đến (mặc định:/Users/*/Library/Messages/Attachments). -
SCP dùng kiểm tra host-key nghiêm ngặt, vì vậy hãy đảm bảo host key của relay đã tồn tại trong
~/.ssh/known_hosts. -
channels.imessage.configWrites: cho phép hoặc từ chối các lần ghi cấu hình do iMessage khởi tạo. -
channels.imessage.sendTransport: transport gửi RPCimsgưu tiên cho phản hồi gửi ra thông thường.auto(mặc định) dùng cầu nối IMCore cho các cuộc trò chuyện hiện có khi nó đang chạy, rồi fallback sang AppleScript;bridgeyêu cầu gửi qua private-API;applescriptép dùng đường dẫn tự động hóa Messages công khai. -
channels.imessage.actions.*: bật các hành động private API cũng được kiểm soát bởiimsg status/openclaw channels status --probe. -
channels.imessage.includeAttachmentsmặc định tắt; đặt thànhtruetrước khi mong đợi media đến trong lượt tác nhân. -
Khôi phục tin nhắn đến sau khi bridge/gateway khởi động lại là tự động (khử trùng lặp GUID cộng với hàng rào tuổi backlog lỗi thời). Các cấu hình
channels.imessage.catchup.enabled: truehiện có vẫn được tôn trọng như một hồ sơ tương thích đã ngừng khuyến nghị. -
channels.imessage.groups: registry nhóm và cài đặt theo từng nhóm. VớigroupPolicy: "allowlist", cấu hình khóachat_idrõ ràng hoặc mục wildcard"*"để tin nhắn nhóm có thể vượt qua cổng registry. -
Các mục
bindings[]cấp cao nhất vớitype: "acp"có thể liên kết cuộc trò chuyện iMessage với phiên ACP bền vững. Dùng handle đã chuẩn hóa hoặc đích trò chuyện rõ ràng (chat_id:*,chat_guid:*,chat_identifier:*) trongmatch.peer.id. Ngữ nghĩa trường dùng chung: Tác nhân ACP.
Ví dụ SSH wrapper iMessage
Ví dụ SSH wrapper iMessage
Matrix
Matrix được hỗ trợ bởi Plugin và được cấu hình dướichannels.matrix.
- Xác thực bằng token dùng
accessToken; xác thực bằng mật khẩu dùnguserId+password. channels.matrix.proxyđịnh tuyến lưu lượng HTTP của Matrix qua một proxy HTTP(S) rõ ràng. Các tài khoản được đặt tên có thể ghi đè bằngchannels.matrix.accounts.<id>.proxy.channels.matrix.network.dangerouslyAllowPrivateNetworkcho phép homeserver riêng tư/nội bộ.proxyvà tùy chọn tham gia mạng này là các điều khiển độc lập.channels.matrix.defaultAccountchọn tài khoản ưu tiên trong thiết lập nhiều tài khoản.channels.matrix.autoJoinmặc định làoff, nên các phòng được mời và lời mời kiểu DM mới sẽ bị bỏ qua cho đến khi bạn đặtautoJoin: "allowlist"vớiautoJoinAllowlisthoặcautoJoin: "always".channels.matrix.execApprovals: phân phối phê duyệt exec gốc Matrix và ủy quyền người phê duyệt.enabled:true,false, hoặc"auto"(mặc định). Ở chế độ tự động, phê duyệt exec được kích hoạt khi có thể phân giải người phê duyệt từapprovershoặccommands.ownerAllowFrom.approvers: ID người dùng Matrix (ví dụ@owner:example.org) được phép phê duyệt yêu cầu exec.agentFilter: allowlist ID agent tùy chọn. Bỏ qua để chuyển tiếp phê duyệt cho tất cả agent.sessionFilter: mẫu khóa phiên tùy chọn (chuỗi con hoặc regex).target: nơi gửi lời nhắc phê duyệt."dm"(mặc định),"channel"(phòng khởi nguồn), hoặc"both".- Ghi đè theo tài khoản:
channels.matrix.accounts.<id>.execApprovals.
channels.matrix.dm.sessionScopekiểm soát cách các DM Matrix được nhóm thành phiên:per-user(mặc định) chia sẻ theo peer được định tuyến, cònper-roomcô lập từng phòng DM.- Các phép thăm dò trạng thái Matrix và tra cứu thư mục trực tiếp dùng cùng chính sách proxy như lưu lượng runtime.
- Cấu hình Matrix đầy đủ, quy tắc nhắm mục tiêu và ví dụ thiết lập được ghi lại trong Matrix.
Microsoft Teams
Microsoft Teams được hỗ trợ bằng Plugin và được cấu hình trongchannels.msteams.
- Các đường dẫn khóa lõi được đề cập ở đây:
channels.msteams,channels.msteams.configWrites. - Cấu hình Teams đầy đủ (thông tin xác thực, webhook, chính sách DM/nhóm, ghi đè theo team/theo kênh) được ghi lại trong Microsoft Teams.
IRC
IRC được hỗ trợ bằng Plugin và được cấu hình trongchannels.irc.
- Các đường dẫn khóa lõi được đề cập ở đây:
channels.irc,channels.irc.dmPolicy,channels.irc.configWrites,channels.irc.nickserv.*. channels.irc.defaultAccounttùy chọn ghi đè lựa chọn tài khoản mặc định khi nó khớp với một ID tài khoản đã cấu hình.- Cấu hình kênh IRC đầy đủ (host/port/TLS/kênh/allowlist/chặn theo mention) được ghi lại trong IRC.
Nhiều tài khoản (tất cả kênh)
Chạy nhiều tài khoản cho mỗi kênh (mỗi tài khoản cóaccountId riêng):
defaultđược dùng khi bỏ quaaccountId(CLI + định tuyến).- Token môi trường chỉ áp dụng cho tài khoản default.
- Thiết lập kênh cơ sở áp dụng cho tất cả tài khoản trừ khi bị ghi đè theo tài khoản.
- Dùng
bindings[].match.accountIdđể định tuyến từng tài khoản đến một agent khác nhau. - Nếu bạn thêm một tài khoản không phải mặc định qua
openclaw channels add(hoặc onboarding kênh) trong khi vẫn dùng cấu hình kênh cấp cao một tài khoản, OpenClaw sẽ nâng các giá trị một tài khoản cấp cao thuộc phạm vi tài khoản vào bản đồ tài khoản của kênh trước để tài khoản ban đầu tiếp tục hoạt động. Hầu hết kênh chuyển chúng vàochannels.<channel>.accounts.default; Matrix có thể giữ lại một mục tiêu được đặt tên/mặc định hiện có nếu khớp. - Các binding chỉ theo kênh hiện có (không có
accountId) tiếp tục khớp với tài khoản mặc định; binding theo phạm vi tài khoản vẫn là tùy chọn. openclaw doctor --fixcũng sửa các hình dạng lẫn lộn bằng cách chuyển các giá trị một tài khoản cấp cao thuộc phạm vi tài khoản vào tài khoản đã nâng được chọn cho kênh đó. Hầu hết kênh dùngaccounts.default; Matrix có thể giữ lại một mục tiêu được đặt tên/mặc định hiện có nếu khớp.
Kênh Plugin khác
Nhiều kênh Plugin được cấu hình dưới dạngchannels.<id> và được ghi lại trong các trang kênh chuyên biệt của chúng (ví dụ Feishu, Matrix, LINE, Nostr, Zalo, Nextcloud Talk, Synology Chat và Twitch).
Xem chỉ mục kênh đầy đủ: Kênh.
Chặn mention trong trò chuyện nhóm
Tin nhắn nhóm mặc định là yêu cầu mention (mention metadata hoặc mẫu regex an toàn). Áp dụng cho các cuộc trò chuyện nhóm WhatsApp, Telegram, Discord, Google Chat và iMessage. Phản hồi hiển thị được kiểm soát riêng. Yêu cầu trực tiếp từ nhóm, kênh và WebChat nội bộ thông thường mặc định dùng phân phối cuối tự động: văn bản cuối của assistant được đăng qua đường dẫn phản hồi hiển thị cũ. Chọnmessages.visibleReplies: "message_tool" hoặc messages.groupChat.visibleReplies: "message_tool" khi đầu ra hiển thị chỉ nên được đăng sau khi agent gọi message(action=send). Nếu mô hình trả về văn bản cuối mà không gọi công cụ nhắn tin trong chế độ chỉ dùng công cụ đã chọn, văn bản cuối đó vẫn riêng tư và nhật ký chi tiết của gateway ghi lại metadata payload đã bị chặn.
Phản hồi hiển thị chỉ dùng công cụ yêu cầu một mô hình/runtime gọi công cụ đáng tin cậy, và được khuyến nghị cho các phòng chia sẻ xung quanh trên các mô hình thế hệ mới nhất như GPT 5.5. Một số mô hình yếu hơn có thể trả lời văn bản cuối nhưng không hiểu rằng đầu ra hiển thị tại nguồn phải được gửi bằng message(action=send). Với các mô hình đó, dùng "automatic" để lượt assistant cuối là đường dẫn phản hồi hiển thị. Nếu nhật ký phiên hiển thị văn bản assistant với didSendViaMessagingTool: false, mô hình đã tạo văn bản cuối riêng tư thay vì gọi công cụ nhắn tin. Chuyển sang mô hình gọi công cụ mạnh hơn cho kênh đó, kiểm tra nhật ký chi tiết gateway để xem tóm tắt payload bị chặn, hoặc đặt messages.groupChat.visibleReplies: "automatic" để dùng phản hồi cuối hiển thị cho mọi yêu cầu nhóm/kênh.
Nếu công cụ nhắn tin không khả dụng theo chính sách công cụ đang hoạt động, OpenClaw sẽ quay về phản hồi hiển thị tự động thay vì âm thầm chặn phản hồi. openclaw doctor cảnh báo về sự không khớp này.
Quy tắc này áp dụng cho văn bản cuối thông thường của agent. Binding hội thoại do Plugin sở hữu dùng phản hồi do Plugin sở hữu trả về làm phản hồi hiển thị cho các lượt bound-thread đã được nhận; Plugin không cần gọi message(action=send) cho các phản hồi binding đó.
Khắc phục sự cố: @mention nhóm kích hoạt đang nhập rồi im lặng (không có lỗi)
Triệu chứng: một @mention nhóm/kênh hiển thị chỉ báo đang nhập và nhật ký gateway báo dispatch complete (queuedFinal=false, replies=0), nhưng không có tin nhắn nào xuất hiện trong phòng. DM đến cùng agent vẫn trả lời bình thường.
Nguyên nhân: chế độ phản hồi hiển thị của nhóm/kênh phân giải thành "message_tool", nên OpenClaw chạy lượt nhưng chặn văn bản cuối của assistant trừ khi agent gọi message(action=send). Không có hợp đồng NO_REPLY trong chế độ này; không có lệnh gọi công cụ nhắn tin nghĩa là không có phản hồi nguồn. Không có lỗi vì việc chặn là hành vi đã cấu hình. Các lượt nhóm và kênh thông thường mặc định là "automatic", nên triệu chứng này chỉ xuất hiện khi messages.groupChat.visibleReplies (hoặc messages.visibleReplies toàn cục) được đặt rõ ràng thành "message_tool". Harness defaultVisibleReplies không áp dụng ở đây — bộ phân giải nhóm/kênh bỏ qua nó; nó chỉ ảnh hưởng đến các cuộc trò chuyện trực tiếp/nguồn (harness Codex chặn các kết quả cuối của trò chuyện trực tiếp theo cách đó).
Cách sửa: chọn một mô hình gọi công cụ mạnh hơn, xóa ghi đè "message_tool" rõ ràng để quay về mặc định "automatic", hoặc đặt messages.groupChat.visibleReplies: "automatic" để buộc phản hồi hiển thị cho mọi yêu cầu nhóm/kênh. Gateway tải nóng cấu hình messages sau khi tệp được lưu; chỉ khởi động lại gateway khi tính năng theo dõi tệp hoặc tải lại cấu hình bị tắt trong triển khai.
Loại mention:
- Mention metadata: @-mention gốc của nền tảng. Bị bỏ qua trong chế độ tự trò chuyện của WhatsApp.
- Mẫu văn bản: Mẫu regex an toàn trong
agents.list[].groupChat.mentionPatterns. Mẫu không hợp lệ và lặp lồng nhau không an toàn bị bỏ qua. - Chặn mention chỉ được thực thi khi có thể phát hiện (mention gốc hoặc ít nhất một mẫu).
messages.groupChat.historyLimit đặt mặc định toàn cục. Các kênh có thể ghi đè bằng channels.<channel>.historyLimit (hoặc theo tài khoản). Đặt 0 để tắt.
messages.groupChat.unmentionedInbound: "room_event" gửi tin nhắn nhóm/kênh luôn bật nhưng không được mention dưới dạng ngữ cảnh phòng yên lặng trên các kênh được hỗ trợ. Tin nhắn được mention, lệnh và tin nhắn trực tiếp vẫn là yêu cầu của người dùng. Xem Sự kiện phòng xung quanh để có ví dụ Discord, Slack và Telegram đầy đủ.
messages.visibleReplies là mặc định sự kiện nguồn toàn cục; messages.groupChat.visibleReplies ghi đè nó cho sự kiện nguồn nhóm/kênh. Khi messages.visibleReplies chưa được đặt, trò chuyện trực tiếp/nguồn dùng mặc định runtime hoặc harness đã chọn, nhưng các lượt trực tiếp WebChat nội bộ dùng phân phối cuối tự động để giữ tương đương prompt Pi/Codex. Đặt messages.visibleReplies: "message_tool" để cố ý yêu cầu message(action=send) cho đầu ra hiển thị. Allowlist kênh và chặn mention vẫn quyết định một sự kiện có được xử lý hay không.
Giới hạn lịch sử DM
telegram, whatsapp, discord, slack, signal, imessage, msteams.
Chế độ tự trò chuyện
Bao gồm số của chính bạn trongallowFrom để bật chế độ tự trò chuyện (bỏ qua @-mention gốc, chỉ phản hồi các mẫu văn bản):
Lệnh (xử lý lệnh trò chuyện)
Command details
Command details
- Khối này cấu hình các bề mặt lệnh. Để xem danh mục lệnh tích hợp sẵn + đi kèm hiện tại, xem Lệnh Slash.
- Trang này là tham chiếu khóa cấu hình, không phải danh mục lệnh đầy đủ. Các lệnh do kênh/Plugin sở hữu như QQ Bot
/bot-ping/bot-help/bot-logs, LINE/card, ghép đôi thiết bị/pair, bộ nhớ/dreaming, điều khiển điện thoại/phone, và Talk/voiceđược ghi trong tài liệu trang kênh/Plugin tương ứng cùng với Lệnh Slash. - Lệnh văn bản phải là thông điệp độc lập với
/ở đầu. native: "auto"bật lệnh gốc cho Discord/Telegram, để Slack tắt.nativeSkills: "auto"bật lệnh kỹ năng gốc cho Discord/Telegram, để Slack tắt.- Ghi đè theo từng kênh:
channels.discord.commands.native(bool hoặc"auto"). Với Discord,falsebỏ qua đăng ký lệnh gốc và dọn dẹp trong khi khởi động. - Ghi đè đăng ký kỹ năng gốc theo từng kênh bằng
channels.<provider>.commands.nativeSkills. channels.telegram.customCommandsthêm các mục menu bot Telegram bổ sung.bash: truebật! <cmd>cho shell máy chủ. Yêu cầutools.elevated.enabledvà người gửi nằm trongtools.elevated.allowFrom.<channel>.config: truebật/config(đọc/ghiopenclaw.json). Với các ứng dụng kháchchat.sendcủa Gateway, các lượt ghi/config set|unsetcó lưu bền vững cũng yêu cầuoperator.admin;/config showchỉ đọc vẫn khả dụng cho các ứng dụng khách operator thông thường có phạm vi ghi.mcp: truebật/mcpcho cấu hình máy chủ MCP do OpenClaw quản lý dướimcp.servers.plugins: truebật/pluginscho các điều khiển khám phá, cài đặt, và bật/tắt Plugin.channels.<provider>.configWriteskiểm soát các thay đổi cấu hình theo từng kênh (mặc định: true).- Với các kênh nhiều tài khoản,
channels.<provider>.accounts.<id>.configWritescũng kiểm soát các lượt ghi nhắm tới tài khoản đó (ví dụ/allowlist --config --account <id>hoặc/config set channels.<provider>.accounts.<id>...). restart: falsetắt/restartvà các hành động công cụ khởi động lại Gateway. Mặc định:true.ownerAllowFromlà allowlist chủ sở hữu tường minh cho các lệnh chỉ dành cho chủ sở hữu và các hành động kênh được giới hạn bởi chủ sở hữu. Nó tách biệt vớiallowFrom.ownerDisplay: "hash"băm id chủ sở hữu trong prompt hệ thống. ĐặtownerDisplaySecretđể kiểm soát việc băm.allowFromlà theo từng provider. Khi được đặt, đây là nguồn ủy quyền duy nhất (allowlist/ghép đôi của kênh vàuseAccessGroupsbị bỏ qua).useAccessGroups: falsecho phép lệnh bỏ qua các chính sách nhóm truy cập khiallowFromchưa được đặt.- Sơ đồ tài liệu lệnh:
Liên quan
- Tham chiếu cấu hình — khóa cấp cao nhất
- Cấu hình — agent
- Tổng quan về kênh