channels.*. Mencakup akses DM dan grup,
penyiapan multi-akun, gerbang mention, dan kunci per-channel untuk Slack, Discord,
Telegram, WhatsApp, Matrix, iMessage, dan Plugin channel bawaan lainnya.
Untuk agen, tool, runtime gateway, dan kunci level atas lainnya, lihat
Referensi konfigurasi.
Channel
Setiap channel dimulai secara otomatis saat bagian config-nya ada (kecualienabled: false).
Akses DM dan grup
Semua channel mendukung kebijakan DM dan kebijakan grup:| Kebijakan DM | Perilaku |
|---|---|
pairing (default) | Pengirim yang tidak dikenal mendapat kode pairing sekali pakai; pemilik harus menyetujuinya |
allowlist | Hanya pengirim dalam allowFrom (atau store allow berpasangan) |
open | Izinkan semua DM masuk (memerlukan allowFrom: ["*"]) |
disabled | Abaikan semua DM masuk |
| Kebijakan grup | Perilaku |
|---|---|
allowlist (default) | Hanya grup yang cocok dengan allowlist yang dikonfigurasi |
open | Lewati allowlist grup (gerbang mention tetap berlaku) |
disabled | Blokir semua pesan grup/room |
channels.defaults.groupPolicy menetapkan default saat groupPolicy provider tidak diatur.
Kode pairing kedaluwarsa setelah 1 jam. Permintaan pairing DM yang tertunda dibatasi hingga 3 per channel.
Jika blok provider sama sekali tidak ada (channels.<provider> tidak ada), kebijakan grup runtime fallback ke allowlist (fail-closed) dengan peringatan saat startup.Override model channel
Gunakanchannels.modelByChannel untuk menetapkan ID channel tertentu ke sebuah model. Nilai menerima provider/model atau alias model yang dikonfigurasi. Pemetaan channel diterapkan saat sesi belum memiliki override model (misalnya, diatur melalui /model).
Default channel dan Heartbeat
Gunakanchannels.defaults untuk kebijakan grup bersama dan perilaku Heartbeat di seluruh provider:
channels.defaults.groupPolicy: fallback kebijakan grup saatgroupPolicylevel provider tidak diatur.channels.defaults.contextVisibility: mode visibilitas konteks tambahan default untuk semua channel. Nilai:all(default, sertakan semua konteks kutipan/thread/riwayat),allowlist(hanya sertakan konteks dari pengirim yang ada di allowlist),allowlist_quote(sama seperti allowlist tetapi pertahankan konteks kutip/balas eksplisit). Override per-channel:channels.<channel>.contextVisibility.channels.defaults.heartbeat.showOk: sertakan status channel sehat dalam output Heartbeat.channels.defaults.heartbeat.showAlerts: sertakan status terdegradasi/error dalam output Heartbeat.channels.defaults.heartbeat.useIndicator: render output Heartbeat bergaya indikator yang ringkas.
WhatsApp multi-akun
WhatsApp multi-akun
- Perintah keluar secara default menggunakan akun
defaultjika ada; jika tidak, id akun terkonfigurasi pertama (diurutkan). channels.whatsapp.defaultAccountopsional menimpa pemilihan akun default fallback itu jika cocok dengan id akun yang dikonfigurasi.- Direktori auth Baileys single-account lama dimigrasikan oleh
openclaw doctorkewhatsapp/default. - Override per-akun:
channels.whatsapp.accounts.<id>.sendReadReceipts,channels.whatsapp.accounts.<id>.dmPolicy,channels.whatsapp.accounts.<id>.allowFrom.
Telegram
- Token bot:
channels.telegram.botTokenatauchannels.telegram.tokenFile(hanya file biasa; symlink ditolak), denganTELEGRAM_BOT_TOKENsebagai fallback untuk akun default. channels.telegram.defaultAccountopsional menimpa pemilihan akun default saat cocok dengan id akun yang dikonfigurasi.- Dalam penyiapan multi-akun (2+ id akun), atur default eksplisit (
channels.telegram.defaultAccountatauchannels.telegram.accounts.default) untuk menghindari perutean fallback;openclaw doctormemperingatkan jika ini hilang atau tidak valid. configWrites: falsememblokir penulisan config yang diprakarsai Telegram (migrasi ID supergroup,/config set|unset).- Entri
bindings[]level atas dengantype: "acp"mengonfigurasi binding ACP persisten untuk topik forum (gunakanchatId:topic:topicIdkanonis dalammatch.peer.id). Semantik field dibagikan di ACP Agents. - Pratinjau stream Telegram menggunakan
sendMessage+editMessageText(berfungsi di chat langsung maupun grup). - Kebijakan retry: lihat Kebijakan retry.
Discord
- Token:
channels.discord.token, denganDISCORD_BOT_TOKENsebagai fallback untuk akun default. - Panggilan keluar langsung yang memberikan
tokenDiscord eksplisit akan menggunakan token tersebut untuk panggilan itu; pengaturan retry/kebijakan akun tetap berasal dari akun yang dipilih dalam snapshot runtime aktif. channels.discord.defaultAccountopsional menimpa pemilihan akun default saat cocok dengan id akun yang dikonfigurasi.- Gunakan
user:<id>(DM) atauchannel:<id>(channel guild) untuk target pengiriman; ID numerik tanpa prefiks ditolak. - Slug guild menggunakan huruf kecil dengan spasi diganti
-; kunci channel menggunakan nama yang sudah di-slug (tanpa#). Lebih baik gunakan ID guild. - Pesan yang ditulis bot diabaikan secara default.
allowBots: truemengaktifkannya; gunakanallowBots: "mentions"untuk hanya menerima pesan bot yang menyebut bot (pesan milik sendiri tetap difilter). channels.discord.guilds.<id>.ignoreOtherMentions(dan override channel) membuang pesan yang menyebut pengguna atau role lain tetapi tidak menyebut bot (tidak termasuk @everyone/@here).maxLinesPerMessage(default 17) membagi pesan yang tinggi bahkan saat panjangnya di bawah 2000 karakter.channels.discord.threadBindingsmengontrol perutean terikat thread Discord:enabled: override Discord untuk fitur sesi terikat thread (/focus,/unfocus,/agents,/session idle,/session max-age, dan pengiriman/perutean terikat)idleHours: override Discord untuk auto-unfocus karena tidak aktif dalam jam (0menonaktifkan)maxAgeHours: override Discord untuk usia maksimum keras dalam jam (0menonaktifkan)spawnSubagentSessions: sakelar opt-in untuk pembuatan/binding thread otomatissessions_spawn({ thread: true })
- Entri
bindings[]level atas dengantype: "acp"mengonfigurasi binding ACP persisten untuk channel dan thread (gunakan id channel/thread dimatch.peer.id). Semantik field dibagikan di ACP Agents. channels.discord.ui.components.accentColormenetapkan warna aksen untuk container Discord components v2.channels.discord.voicemengaktifkan percakapan channel suara Discord dan override auto-join + TTS opsional.channels.discord.voice.daveEncryptiondanchannels.discord.voice.decryptionFailureTolerancediteruskan ke opsi DAVE@discordjs/voice(defaulttruedan24).- OpenClaw juga berupaya memulihkan penerimaan suara dengan keluar/masuk kembali ke sesi suara setelah kegagalan dekripsi berulang.
channels.discord.streamingadalah kunci mode stream kanonis. NilaistreamModelama dan booleanstreamingdimigrasikan otomatis.channels.discord.autoPresencememetakan ketersediaan runtime ke presence bot (sehat => online, terdegradasi => idle, habis => dnd) dan mengizinkan override teks status opsional.channels.discord.dangerouslyAllowNameMatchingmengaktifkan kembali pencocokan nama/tag yang dapat berubah (mode kompatibilitas darurat).channels.discord.execApprovals: pengiriman persetujuan exec native Discord dan otorisasi penyetuju.enabled:true,false, atau"auto"(default). Dalam mode auto, persetujuan exec aktif saat penyetuju dapat di-resolve dariapproversataucommands.ownerAllowFrom.approvers: ID pengguna Discord yang diizinkan menyetujui permintaan exec. Fallback kecommands.ownerAllowFromsaat dihilangkan.agentFilter: allowlist ID agen opsional. Hilangkan untuk meneruskan persetujuan bagi semua agen.sessionFilter: pola kunci sesi opsional (substring atau regex).target: tempat mengirim prompt persetujuan."dm"(default) mengirim ke DM penyetuju,"channel"mengirim ke channel asal,"both"mengirim ke keduanya. Saat target mencakup"channel", tombol hanya dapat digunakan oleh penyetuju yang berhasil di-resolve.cleanupAfterResolve: saattrue, menghapus DM persetujuan setelah persetujuan, penolakan, atau timeout.
off (tidak ada), own (pesan bot, default), all (semua pesan), allowlist (dari guilds.<id>.users pada semua pesan).
Google Chat
- JSON service account: inline (
serviceAccount) atau berbasis file (serviceAccountFile). - SecretRef service account juga didukung (
serviceAccountRef). - Fallback env:
GOOGLE_CHAT_SERVICE_ACCOUNTatauGOOGLE_CHAT_SERVICE_ACCOUNT_FILE. - Gunakan
spaces/<spaceId>atauusers/<userId>untuk target pengiriman. channels.googlechat.dangerouslyAllowNameMatchingmengaktifkan kembali pencocokan principal email yang dapat berubah (mode kompatibilitas darurat).
Slack
- Socket mode memerlukan
botTokendanappToken(SLACK_BOT_TOKEN+SLACK_APP_TOKENuntuk fallback env akun default). - HTTP mode memerlukan
botTokenplussigningSecret(di root atau per akun). botToken,appToken,signingSecret, danuserTokenmenerima string plaintext atau objek SecretRef.- Snapshot akun Slack mengekspos field sumber/status per-kredensial seperti
botTokenSource,botTokenStatus,appTokenStatus, dan, dalam mode HTTP,signingSecretStatus.configured_unavailableberarti akun dikonfigurasi melalui SecretRef tetapi jalur perintah/runtime saat ini tidak dapat me-resolve nilai secret. configWrites: falsememblokir penulisan config yang diprakarsai Slack.channels.slack.defaultAccountopsional menimpa pemilihan akun default saat cocok dengan id akun yang dikonfigurasi.channels.slack.streaming.modeadalah kunci mode stream Slack kanonis.channels.slack.streaming.nativeTransportmengontrol transport streaming native Slack. Nilai lamastreamMode, booleanstreaming, dannativeStreamingdimigrasikan otomatis.- Gunakan
user:<id>(DM) atauchannel:<id>untuk target pengiriman.
off, own (default), all, allowlist (dari reactionAllowlist).
Isolasi sesi thread: thread.historyScope bersifat per-thread (default) atau dibagikan di seluruh channel. thread.inheritParent menyalin transkrip channel induk ke thread baru.
- Streaming native Slack plus status thread gaya asisten Slack “is typing…” memerlukan target balasan thread. DM level atas tetap off-thread secara default, jadi menggunakan
typingReactionatau pengiriman normal alih-alih pratinjau bergaya thread. typingReactionmenambahkan reaksi sementara ke pesan Slack masuk saat balasan sedang berjalan, lalu menghapusnya saat selesai. Gunakan shortcode emoji Slack seperti"hourglass_flowing_sand".channels.slack.execApprovals: pengiriman persetujuan exec native Slack dan otorisasi penyetuju. Skemanya sama seperti Discord:enabled(true/false/"auto"),approvers(ID pengguna Slack),agentFilter,sessionFilter, dantarget("dm","channel", atau"both").
| Grup aksi | Default | Catatan |
|---|---|---|
| reactions | enabled | React + daftar reaksi |
| messages | enabled | Baca/kirim/edit/hapus |
| pins | enabled | Pin/unpin/daftar |
| memberInfo | enabled | Info anggota |
| emojiList | enabled | Daftar emoji kustom |
Mattermost
Mattermost dikirim sebagai Plugin:openclaw plugins install @openclaw/mattermost.
oncall (merespons pada @-mention, default), onmessage (setiap pesan), onchar (pesan yang dimulai dengan prefiks pemicu).
Saat command native Mattermost diaktifkan:
commands.callbackPathharus berupa path (misalnya/api/channels/mattermost/command), bukan URL lengkap.commands.callbackUrlharus di-resolve ke endpoint gateway OpenClaw dan dapat dijangkau dari server Mattermost.- Callback slash native diautentikasi dengan token per-command yang dikembalikan
oleh Mattermost selama pendaftaran slash command. Jika pendaftaran gagal atau tidak ada
command yang diaktifkan, OpenClaw menolak callback dengan
Unauthorized: invalid command token. - Untuk host callback privat/tailnet/internal, Mattermost mungkin memerlukan
ServiceSettings.AllowedUntrustedInternalConnectionsuntuk menyertakan host/domain callback. Gunakan nilai host/domain, bukan URL lengkap. channels.mattermost.configWrites: izinkan atau tolak penulisan config yang diprakarsai Mattermost.channels.mattermost.requireMention: memerlukan@mentionsebelum membalas di channel.channels.mattermost.groups.<channelId>.requireMention: override gerbang mention per-channel ("*"untuk default).channels.mattermost.defaultAccountopsional menimpa pemilihan akun default saat cocok dengan id akun yang dikonfigurasi.
Signal
off, own (default), all, allowlist (dari reactionAllowlist).
channels.signal.account: tetapkan startup channel ke identitas akun Signal tertentu.channels.signal.configWrites: izinkan atau tolak penulisan config yang diprakarsai Signal.channels.signal.defaultAccountopsional menimpa pemilihan akun default saat cocok dengan id akun yang dikonfigurasi.
BlueBubbles
BlueBubbles adalah jalur iMessage yang direkomendasikan (didukung Plugin, dikonfigurasi di bawahchannels.bluebubbles).
- Path kunci inti yang dicakup di sini:
channels.bluebubbles,channels.bluebubbles.dmPolicy. channels.bluebubbles.defaultAccountopsional menimpa pemilihan akun default saat cocok dengan id akun yang dikonfigurasi.- Entri
bindings[]level atas dengantype: "acp"dapat mengikat percakapan BlueBubbles ke sesi ACP persisten. Gunakan handle atau string target BlueBubbles (chat_id:*,chat_guid:*,chat_identifier:*) dimatch.peer.id. Semantik field bersama: ACP Agents. - Konfigurasi channel BlueBubbles lengkap didokumentasikan di BlueBubbles.
iMessage
OpenClaw menjalankanimsg rpc (JSON-RPC melalui stdio). Tidak memerlukan daemon atau port.
-
channels.imessage.defaultAccountopsional menimpa pemilihan akun default saat cocok dengan id akun yang dikonfigurasi. - Memerlukan Full Disk Access ke DB Messages.
-
Lebih baik gunakan target
chat_id:<id>. Gunakanimsg chats --limit 20untuk mencantumkan chat. -
cliPathdapat menunjuk ke wrapper SSH; aturremoteHost(hostatauuser@host) untuk pengambilan lampiran SCP. -
attachmentRootsdanremoteAttachmentRootsmembatasi path lampiran masuk (default:/Users/*/Library/Messages/Attachments). -
SCP menggunakan strict host-key checking, jadi pastikan host key relay sudah ada di
~/.ssh/known_hosts. -
channels.imessage.configWrites: izinkan atau tolak penulisan config yang diprakarsai iMessage. -
Entri
bindings[]level atas dengantype: "acp"dapat mengikat percakapan iMessage ke sesi ACP persisten. Gunakan handle yang dinormalisasi atau target chat eksplisit (chat_id:*,chat_guid:*,chat_identifier:*) dimatch.peer.id. Semantik field bersama: ACP Agents.
Contoh wrapper SSH iMessage
Contoh wrapper SSH iMessage
Matrix
Matrix didukung Plugin dan dikonfigurasi di bawahchannels.matrix.
- Auth token menggunakan
accessToken; auth password menggunakanuserId+password. channels.matrix.proxymerutekan traffic HTTP Matrix melalui proxy HTTP(S) eksplisit. Akun bernama dapat menimpanya denganchannels.matrix.accounts.<id>.proxy.channels.matrix.network.dangerouslyAllowPrivateNetworkmengizinkan homeserver privat/internal.proxydan opt-in jaringan ini adalah kontrol yang terpisah.channels.matrix.defaultAccountmemilih akun yang diutamakan dalam penyiapan multi-akun.channels.matrix.autoJoindefault-nyaoff, sehingga room yang diundang dan undangan gaya DM baru diabaikan sampai Anda mengaturautoJoin: "allowlist"denganautoJoinAllowlistatauautoJoin: "always".channels.matrix.execApprovals: pengiriman persetujuan exec native Matrix dan otorisasi penyetuju.enabled:true,false, atau"auto"(default). Dalam mode auto, persetujuan exec aktif saat penyetuju dapat di-resolve dariapproversataucommands.ownerAllowFrom.approvers: ID pengguna Matrix (misalnya@owner:example.org) yang diizinkan menyetujui permintaan exec.agentFilter: allowlist ID agen opsional. Hilangkan untuk meneruskan persetujuan bagi semua agen.sessionFilter: pola kunci sesi opsional (substring atau regex).target: tempat mengirim prompt persetujuan."dm"(default),"channel"(room asal), atau"both".- Override per-akun:
channels.matrix.accounts.<id>.execApprovals.
channels.matrix.dm.sessionScopemengontrol cara DM Matrix dikelompokkan ke dalam sesi:per-user(default) dibagikan menurut peer yang dirutekan, sedangkanper-roommengisolasi setiap room DM.- Probe status Matrix dan pencarian direktori live menggunakan kebijakan proxy yang sama dengan traffic runtime.
- Konfigurasi Matrix lengkap, aturan penargetan, dan contoh penyiapan didokumentasikan di Matrix.
Microsoft Teams
Microsoft Teams didukung Plugin dan dikonfigurasi di bawahchannels.msteams.
- Path kunci inti yang dicakup di sini:
channels.msteams,channels.msteams.configWrites. - Config Teams lengkap (kredensial, webhook, kebijakan DM/grup, override per-tim/per-channel) didokumentasikan di Microsoft Teams.
IRC
IRC didukung Plugin dan dikonfigurasi di bawahchannels.irc.
- Path kunci inti yang dicakup di sini:
channels.irc,channels.irc.dmPolicy,channels.irc.configWrites,channels.irc.nickserv.*. channels.irc.defaultAccountopsional menimpa pemilihan akun default saat cocok dengan id akun yang dikonfigurasi.- Konfigurasi channel IRC lengkap (host/port/TLS/channel/allowlist/gerbang mention) didokumentasikan di IRC.
Multi-akun (semua channel)
Jalankan beberapa akun per channel (masing-masing denganaccountId sendiri):
defaultdigunakan saataccountIddihilangkan (CLI + perutean).- Token env hanya berlaku untuk akun default.
- Pengaturan channel dasar berlaku untuk semua akun kecuali ditimpa per akun.
- Gunakan
bindings[].match.accountIduntuk merutekan setiap akun ke agen yang berbeda. - Jika Anda menambahkan akun non-default melalui
openclaw channels add(atau onboarding channel) saat masih berada pada config channel level atas single-account, OpenClaw terlebih dahulu mempromosikan nilai single-account level atas yang dicakup akun ke peta akun channel agar akun asli tetap berfungsi. Sebagian besar channel memindahkannya kechannels.<channel>.accounts.default; Matrix dapat mempertahankan target bernama/default yang sudah ada dan cocok. - Binding khusus channel yang sudah ada (tanpa
accountId) tetap cocok dengan akun default; binding yang dicakup akun tetap opsional. openclaw doctor --fixjuga memperbaiki bentuk campuran dengan memindahkan nilai single-account level atas yang dicakup akun ke akun hasil promosi yang dipilih untuk channel tersebut. Sebagian besar channel menggunakanaccounts.default; Matrix dapat mempertahankan target bernama/default yang sudah ada dan cocok.
Channel Plugin lainnya
Banyak channel Plugin dikonfigurasi sebagaichannels.<id> dan didokumentasikan pada halaman channel khususnya masing-masing (misalnya Feishu, Matrix, LINE, Nostr, Zalo, Nextcloud Talk, Synology Chat, dan Twitch).
Lihat indeks channel lengkap: Channels.
Gerbang mention chat grup
Pesan grup secara default memerlukan mention (mention metadata atau pola regex aman). Berlaku untuk chat grup WhatsApp, Telegram, Discord, Google Chat, dan iMessage. Tipe mention:- Mention metadata: @-mention native platform. Diabaikan dalam mode self-chat WhatsApp.
- Pola teks: pola regex aman di
agents.list[].groupChat.mentionPatterns. Pola tidak valid dan pengulangan bertingkat yang tidak aman diabaikan. - Gerbang mention hanya diterapkan saat deteksi dimungkinkan (mention native atau setidaknya satu pola).
messages.groupChat.historyLimit menetapkan default global. Channel dapat menimpanya dengan channels.<channel>.historyLimit (atau per-akun). Atur 0 untuk menonaktifkan.
Batas riwayat DM
telegram, whatsapp, discord, slack, signal, imessage, msteams.
Mode self-chat
Sertakan nomor Anda sendiri diallowFrom untuk mengaktifkan mode self-chat (mengabaikan @-mention native, hanya merespons pola teks):
Perintah (penanganan perintah chat)
Detail perintah
Detail perintah
- Blok ini mengonfigurasi surface perintah. Untuk katalog perintah bawaan + Plugin bawaan saat ini, lihat Slash Commands.
- Halaman ini adalah referensi kunci config, bukan katalog perintah lengkap. Perintah milik channel/Plugin seperti QQ Bot
/bot-ping/bot-help/bot-logs, LINE/card, device-pair/pair, memory/dreaming, phone-control/phone, dan Talk/voicedidokumentasikan di halaman channel/Plugin masing-masing serta Slash Commands. - Perintah teks harus berupa pesan mandiri dengan awalan
/. native: "auto"menyalakan perintah native untuk Discord/Telegram, membiarkan Slack nonaktif.nativeSkills: "auto"menyalakan perintah Skills native untuk Discord/Telegram, membiarkan Slack nonaktif.- Override per channel:
channels.discord.commands.native(bool atau"auto").falsemenghapus perintah yang sebelumnya terdaftar. - Override pendaftaran skill native per channel dengan
channels.<provider>.commands.nativeSkills. channels.telegram.customCommandsmenambahkan entri menu bot Telegram tambahan.bash: truemengaktifkan! <cmd>untuk shell host. Memerlukantools.elevated.enableddan pengirim ada ditools.elevated.allowFrom.<channel>.config: truemengaktifkan/config(membaca/menulisopenclaw.json). Untuk klien gatewaychat.send, penulisan persisten/config set|unsetjuga memerlukanoperator.admin;/config showyang read-only tetap tersedia bagi klien operator normal dengan cakupan tulis.mcp: truemengaktifkan/mcpuntuk config server MCP yang dikelola OpenClaw di bawahmcp.servers.plugins: truemengaktifkan/pluginsuntuk penemuan Plugin, instalasi, dan kontrol aktif/nonaktif.channels.<provider>.configWritesmembatasi mutasi config per channel (default: true).- Untuk channel multi-akun,
channels.<provider>.accounts.<id>.configWritesjuga membatasi penulisan yang menargetkan akun tersebut (misalnya/allowlist --config --account <id>atau/config set channels.<provider>.accounts.<id>...). restart: falsemenonaktifkan/restartdan aksi tool restart gateway. Default:true.ownerAllowFromadalah allowlist pemilik eksplisit untuk perintah/tool khusus pemilik. Ini terpisah dariallowFrom.ownerDisplay: "hash"meng-hash id pemilik dalam prompt sistem. AturownerDisplaySecretuntuk mengontrol hashing.allowFrombersifat per-provider. Saat diatur, ini menjadi satu-satunya sumber otorisasi (allowlist/pairing channel danuseAccessGroupsdiabaikan).useAccessGroups: falsememungkinkan perintah melewati kebijakan grup akses saatallowFromtidak diatur.- Peta dokumentasi perintah:
Terkait
- Referensi konfigurasi — kunci level atas
- Konfigurasi — agen
- Ikhtisar channel