channels.*. Copre accesso DM e gruppi,
configurazioni multi-account, gating delle menzioni e chiavi per canale per Slack, Discord,
Telegram, WhatsApp, Matrix, iMessage e gli altri Plugin di canale inclusi.
Per agenti, strumenti, runtime del gateway e altre chiavi di primo livello, vedi
Riferimento della configurazione.
Canali
Ogni canale si avvia automaticamente quando esiste la sua sezione di configurazione (a meno cheenabled: false).
Accesso DM e gruppi
Tutti i canali supportano policy DM e policy di gruppo:| Policy DM | Comportamento |
|---|---|
pairing (predefinito) | I mittenti sconosciuti ricevono un codice di pairing monouso; il proprietario deve approvare |
allowlist | Solo i mittenti in allowFrom (o archivio allow paired) |
open | Consente tutti i DM in ingresso (richiede allowFrom: ["*"]) |
disabled | Ignora tutti i DM in ingresso |
| Policy di gruppo | Comportamento |
|---|---|
allowlist (predefinito) | Solo i gruppi che corrispondono all’allowlist configurata |
open | Bypassa le allowlist di gruppo (il gating delle menzioni si applica comunque) |
disabled | Blocca tutti i messaggi di gruppo/stanza |
channels.defaults.groupPolicy imposta il valore predefinito quando groupPolicy di un provider non è impostato.
I codici di pairing scadono dopo 1 ora. Le richieste di pairing DM in sospeso sono limitate a 3 per canale.
Se un blocco provider manca del tutto (channels.<provider> assente), la policy di gruppo a runtime usa come fallback allowlist (fail-closed) con un avviso all’avvio.Override del modello per canale
Usachannels.modelByChannel per fissare ID canale specifici a un modello. I valori accettano provider/model oppure alias di modello configurati. La mappatura del canale si applica quando una sessione non ha già un override del modello (per esempio, impostato tramite /model).
Valori predefiniti dei canali e Heartbeat
Usachannels.defaults per comportamento condiviso di policy di gruppo e Heartbeat tra provider:
channels.defaults.groupPolicy: policy di gruppo di fallback quando unagroupPolicya livello provider non è impostata.channels.defaults.contextVisibility: modalità di visibilità del contesto supplementare predefinita per tutti i canali. Valori:all(predefinito, include tutto il contesto citato/thread/cronologia),allowlist(include solo contesto da mittenti in allowlist),allowlist_quote(come allowlist ma mantiene il contesto esplicito di citazione/risposta). Override per canale:channels.<channel>.contextVisibility.channels.defaults.heartbeat.showOk: include stati dei canali sani nell’output Heartbeat.channels.defaults.heartbeat.showAlerts: include stati degradati/di errore nell’output Heartbeat.channels.defaults.heartbeat.useIndicator: rende un output Heartbeat compatto in stile indicatore.
WhatsApp multi-account
WhatsApp multi-account
- I comandi in uscita usano come predefinito l’account
defaultse presente; altrimenti il primo ID account configurato (ordinato). - L’opzionale
channels.whatsapp.defaultAccountsostituisce quella selezione dell’account predefinito di fallback quando corrisponde a un ID account configurato. - La directory di autenticazione legacy Baileys single-account viene migrata da
openclaw doctorinwhatsapp/default. - Override per account:
channels.whatsapp.accounts.<id>.sendReadReceipts,channels.whatsapp.accounts.<id>.dmPolicy,channels.whatsapp.accounts.<id>.allowFrom.
Telegram
- Token del bot:
channels.telegram.botTokenoppurechannels.telegram.tokenFile(solo file regolari; symlink rifiutati), conTELEGRAM_BOT_TOKENcome fallback per l’account predefinito. - L’opzionale
channels.telegram.defaultAccountsostituisce la selezione dell’account predefinito quando corrisponde a un ID account configurato. - Nelle configurazioni multi-account (2+ ID account), imposta un valore predefinito esplicito (
channels.telegram.defaultAccountochannels.telegram.accounts.default) per evitare l’instradamento di fallback;openclaw doctoravvisa quando manca o non è valido. configWrites: falseblocca le scritture di configurazione avviate da Telegram (migrazioni ID supergruppo,/config set|unset).- Le voci
bindings[]di primo livello contype: "acp"configurano binding ACP persistenti per gli argomenti del forum (usa il canonicochatId:topic:topicIdinmatch.peer.id). La semantica dei campi è condivisa in Agenti ACP. - Le anteprime di streaming Telegram usano
sendMessage+editMessageText(funziona in chat dirette e di gruppo). - Policy di retry: vedi Policy di retry.
Discord
- Token:
channels.discord.token, conDISCORD_BOT_TOKENcome fallback per l’account predefinito. - Le chiamate dirette in uscita che forniscono un
tokenDiscord esplicito usano quel token per la chiamata; le impostazioni di retry/policy dell’account provengono comunque dall’account selezionato nello snapshot di runtime attivo. - L’opzionale
channels.discord.defaultAccountsostituisce la selezione dell’account predefinito quando corrisponde a un ID account configurato. - Usa
user:<id>(DM) oppurechannel:<id>(canale guild) per le destinazioni di consegna; gli ID numerici semplici vengono rifiutati. - Gli slug delle guild sono minuscoli con gli spazi sostituiti da
-; le chiavi dei canali usano il nome in forma slug (senza#). Preferisci gli ID delle guild. - I messaggi creati dai bot vengono ignorati per impostazione predefinita.
allowBots: trueli abilita; usaallowBots: "mentions"per accettare solo i messaggi dei bot che menzionano il bot (i propri messaggi vengono comunque filtrati). channels.discord.guilds.<id>.ignoreOtherMentions(e gli override a livello di canale) scarta i messaggi che menzionano un altro utente o ruolo ma non il bot (escludendo @everyone/@here).maxLinesPerMessage(predefinito 17) divide i messaggi alti anche quando restano sotto 2000 caratteri.channels.discord.threadBindingscontrolla l’instradamento associato ai thread Discord:enabled: override Discord per le funzionalità di sessione associate al thread (/focus,/unfocus,/agents,/session idle,/session max-agee consegna/instradamento associati)idleHours: override Discord per l’auto-unfocus da inattività in ore (0disabilita)maxAgeHours: override Discord per età massima rigida in ore (0disabilita)spawnSubagentSessions: interruttore opt-in per la creazione/associazione automatica di thread dasessions_spawn({ thread: true })
- Le voci
bindings[]di primo livello contype: "acp"configurano binding ACP persistenti per canali e thread (usa l’ID di canale/thread inmatch.peer.id). La semantica dei campi è condivisa in Agenti ACP. channels.discord.ui.components.accentColorimposta il colore di accento per i contenitori Discord components v2.channels.discord.voiceabilita conversazioni nei canali vocali Discord e override opzionali di auto-join + TTS.channels.discord.voice.daveEncryptionechannels.discord.voice.decryptionFailureTolerancevengono inoltrati alle opzioni DAVE di@discordjs/voice(truee24per impostazione predefinita).- OpenClaw tenta inoltre il recupero della ricezione vocale uscendo/rientrando in una sessione vocale dopo ripetuti errori di decrittazione.
channels.discord.streamingè la chiave canonica della modalità di streaming. I valori legacystreamModee booleanistreamingvengono migrati automaticamente.channels.discord.autoPresencemappa la disponibilità del runtime alla presenza del bot (healthy => online, degraded => idle, exhausted => dnd) e consente override opzionali del testo di stato.channels.discord.dangerouslyAllowNameMatchingriabilita la corrispondenza con nomi/tag modificabili (modalità di compatibilità di emergenza).channels.discord.execApprovals: consegna nativa Discord delle approvazioni exec e autorizzazione degli approvatori.enabled:true,falseoppure"auto"(predefinito). In modalità auto, le approvazioni exec si attivano quando gli approvatori possono essere risolti daapproversocommands.ownerAllowFrom.approvers: ID utente Discord autorizzati ad approvare richieste exec. Usa come fallbackcommands.ownerAllowFromse omesso.agentFilter: allowlist opzionale di ID agente. Ometti per inoltrare approvazioni per tutti gli agenti.sessionFilter: pattern opzionali di chiave di sessione (sottostringa o regex).target: dove inviare i prompt di approvazione."dm"(predefinito) li invia nei DM degli approvatori,"channel"li invia nel canale di origine,"both"li invia in entrambi. Quando la destinazione include"channel", i pulsanti sono utilizzabili solo dagli approvatori risolti.cleanupAfterResolve: quandotrue, elimina i DM di approvazione dopo approvazione, rifiuto o timeout.
off (nessuna), own (messaggi del bot, predefinita), all (tutti i messaggi), allowlist (da guilds.<id>.users su tutti i messaggi).
Google Chat
- JSON dell’account di servizio: inline (
serviceAccount) oppure da file (serviceAccountFile). - È supportato anche SecretRef per l’account di servizio (
serviceAccountRef). - Fallback env:
GOOGLE_CHAT_SERVICE_ACCOUNToppureGOOGLE_CHAT_SERVICE_ACCOUNT_FILE. - Usa
spaces/<spaceId>oppureusers/<userId>per le destinazioni di consegna. channels.googlechat.dangerouslyAllowNameMatchingriabilita la corrispondenza con email principal modificabili (modalità di compatibilità di emergenza).
Slack
- Socket mode richiede sia
botTokensiaappToken(SLACK_BOT_TOKEN+SLACK_APP_TOKENcome fallback env per l’account predefinito). - HTTP mode richiede
botTokenpiùsigningSecret(alla radice o per account). botToken,appToken,signingSecreteuserTokenaccettano stringhe plaintext oppure oggetti SecretRef.- Gli snapshot degli account Slack espongono campi di sorgente/stato per credenziale come
botTokenSource,botTokenStatus,appTokenStatuse, in modalità HTTP,signingSecretStatus.configured_unavailablesignifica che l’account è configurato tramite SecretRef ma l’attuale percorso comando/runtime non ha potuto risolvere il valore del segreto. configWrites: falseblocca le scritture di configurazione avviate da Slack.- L’opzionale
channels.slack.defaultAccountsostituisce la selezione dell’account predefinito quando corrisponde a un ID account configurato. channels.slack.streaming.modeè la chiave canonica della modalità di streaming Slack.channels.slack.streaming.nativeTransportcontrolla il trasporto di streaming nativo di Slack. I valori legacystreamMode, booleanistreamingenativeStreamingvengono migrati automaticamente.- Usa
user:<id>(DM) oppurechannel:<id>per le destinazioni di consegna.
off, own (predefinita), all, allowlist (da reactionAllowlist).
Isolamento della sessione thread: thread.historyScope è per-thread (predefinito) oppure condiviso nel canale. thread.inheritParent copia la trascrizione del canale padre nei nuovi thread.
- Lo streaming nativo Slack più lo stato thread in stile assistente Slack “is typing…” richiedono una destinazione di risposta nel thread. I DM di primo livello restano fuori thread per impostazione predefinita, quindi usano
typingReactiono la consegna normale invece dell’anteprima in stile thread. typingReactionaggiunge una reazione temporanea al messaggio Slack in ingresso mentre è in esecuzione una risposta, poi la rimuove al completamento. Usa uno shortcode emoji Slack come"hourglass_flowing_sand".channels.slack.execApprovals: consegna nativa Slack delle approvazioni exec e autorizzazione degli approvatori. Stesso schema di Discord:enabled(true/false/"auto"),approvers(ID utente Slack),agentFilter,sessionFilteretarget("dm","channel"oppure"both").
| Gruppo azione | Predefinito | Note |
|---|---|---|
| reactions | abilitato | Reagire + elencare reazioni |
| messages | abilitato | Leggere/inviare/modificare/eliminare |
| pins | abilitato | Fissare/rimuovere/elencare |
| memberInfo | abilitato | Informazioni membro |
| emojiList | abilitato | Elenco emoji personalizzate |
Mattermost
Mattermost viene distribuito come Plugin:openclaw plugins install @openclaw/mattermost.
oncall (risponde a @-mention, predefinita), onmessage (ogni messaggio), onchar (messaggi che iniziano con il prefisso trigger).
Quando i comandi nativi Mattermost sono abilitati:
commands.callbackPathdeve essere un percorso (per esempio/api/channels/mattermost/command), non un URL completo.commands.callbackUrldeve risolversi verso l’endpoint gateway OpenClaw ed essere raggiungibile dal server Mattermost.- Le callback slash native sono autenticate con i token per comando restituiti
da Mattermost durante la registrazione del comando slash. Se la registrazione fallisce o nessun
comando viene attivato, OpenClaw rifiuta le callback con
Unauthorized: invalid command token. - Per host di callback privati/tailnet/interni, Mattermost può richiedere che
ServiceSettings.AllowedUntrustedInternalConnectionsincluda l’host/dominio della callback. Usa valori host/dominio, non URL completi. channels.mattermost.configWrites: consenti o nega scritture di configurazione avviate da Mattermost.channels.mattermost.requireMention: richiede@mentionprima di rispondere nei canali.channels.mattermost.groups.<channelId>.requireMention: override per canale del gating delle menzioni ("*"per il predefinito).- L’opzionale
channels.mattermost.defaultAccountsostituisce la selezione dell’account predefinito quando corrisponde a un ID account configurato.
Signal
off, own (predefinita), all, allowlist (da reactionAllowlist).
channels.signal.account: fissa l’avvio del canale a una specifica identità account Signal.channels.signal.configWrites: consente o nega scritture di configurazione avviate da Signal.- L’opzionale
channels.signal.defaultAccountsostituisce la selezione dell’account predefinito quando corrisponde a un ID account configurato.
BlueBubbles
BlueBubbles è il percorso iMessage consigliato (supportato da Plugin, configurato sottochannels.bluebubbles).
- Percorsi chiave core coperti qui:
channels.bluebubbles,channels.bluebubbles.dmPolicy. - L’opzionale
channels.bluebubbles.defaultAccountsostituisce la selezione dell’account predefinito quando corrisponde a un ID account configurato. - Le voci
bindings[]di primo livello contype: "acp"possono associare conversazioni BlueBubbles a sessioni ACP persistenti. Usa un handle BlueBubbles o una stringa target (chat_id:*,chat_guid:*,chat_identifier:*) inmatch.peer.id. Semantica condivisa dei campi: Agenti ACP. - La configurazione completa del canale BlueBubbles è documentata in BlueBubbles.
iMessage
OpenClaw avviaimsg rpc (JSON-RPC su stdio). Non serve alcun daemon o porta.
-
L’opzionale
channels.imessage.defaultAccountsostituisce la selezione dell’account predefinito quando corrisponde a un ID account configurato. - Richiede Full Disk Access al database di Messages.
-
Preferisci destinazioni
chat_id:<id>. Usaimsg chats --limit 20per elencare le chat. -
cliPathpuò puntare a un wrapper SSH; impostaremoteHost(hostoppureuser@host) per il recupero allegati tramite SCP. -
attachmentRootseremoteAttachmentRootslimitano i percorsi degli allegati in ingresso (predefinito:/Users/*/Library/Messages/Attachments). -
SCP usa un controllo rigoroso della chiave host, quindi assicurati che la chiave host del relay esista già in
~/.ssh/known_hosts. -
channels.imessage.configWrites: consente o nega scritture di configurazione avviate da iMessage. -
Le voci
bindings[]di primo livello contype: "acp"possono associare conversazioni iMessage a sessioni ACP persistenti. Usa un handle normalizzato o una destinazione chat esplicita (chat_id:*,chat_guid:*,chat_identifier:*) inmatch.peer.id. Semantica condivisa dei campi: Agenti ACP.
Esempio di wrapper SSH per iMessage
Esempio di wrapper SSH per iMessage
Matrix
Matrix è supportato da Plugin ed è configurato sottochannels.matrix.
- L’autenticazione con token usa
accessToken; l’autenticazione con password usauserId+password. channels.matrix.proxyinstrada il traffico HTTP Matrix attraverso un proxy HTTP(S) esplicito. Gli account con nome possono sostituirlo conchannels.matrix.accounts.<id>.proxy.channels.matrix.network.dangerouslyAllowPrivateNetworkconsente homeserver privati/interni.proxye questo opt-in di rete sono controlli indipendenti.channels.matrix.defaultAccountseleziona l’account preferito nelle configurazioni multi-account.channels.matrix.autoJoinusa come predefinitooff, quindi le stanze invitate e i nuovi inviti in stile DM vengono ignorati finché non impostiautoJoin: "allowlist"conautoJoinAllowlistoppureautoJoin: "always".channels.matrix.execApprovals: consegna nativa Matrix delle approvazioni exec e autorizzazione degli approvatori.enabled:true,falseoppure"auto"(predefinito). In modalità auto, le approvazioni exec si attivano quando gli approvatori possono essere risolti daapproversocommands.ownerAllowFrom.approvers: ID utente Matrix (es.@owner:example.org) autorizzati ad approvare richieste exec.agentFilter: allowlist opzionale di ID agente. Ometti per inoltrare approvazioni per tutti gli agenti.sessionFilter: pattern opzionali di chiave di sessione (sottostringa o regex).target: dove inviare i prompt di approvazione."dm"(predefinito),"channel"(stanza di origine) oppure"both".- Override per account:
channels.matrix.accounts.<id>.execApprovals.
channels.matrix.dm.sessionScopecontrolla come i DM Matrix vengono raggruppati nelle sessioni:per-user(predefinito) condivisione per peer instradato, mentreper-roomisola ogni stanza DM.- I probe di stato Matrix e le ricerche live nella directory usano la stessa policy proxy del traffico runtime.
- La configurazione completa di Matrix, le regole di targeting e gli esempi di configurazione sono documentati in Matrix.
Microsoft Teams
Microsoft Teams è supportato da Plugin ed è configurato sottochannels.msteams.
- Percorsi chiave core coperti qui:
channels.msteams,channels.msteams.configWrites. - La configurazione completa di Teams (credenziali, webhook, policy DM/gruppi, override per team/per canale) è documentata in Microsoft Teams.
IRC
IRC è supportato da Plugin ed è configurato sottochannels.irc.
- Percorsi chiave core coperti qui:
channels.irc,channels.irc.dmPolicy,channels.irc.configWrites,channels.irc.nickserv.*. - L’opzionale
channels.irc.defaultAccountsostituisce la selezione dell’account predefinito quando corrisponde a un ID account configurato. - La configurazione completa del canale IRC (host/porta/TLS/canali/allowlist/gating delle menzioni) è documentata in IRC.
Multi-account (tutti i canali)
Esegui più account per canale (ognuno con il proprioaccountId):
defaultviene usato quandoaccountIdè omesso (CLI + instradamento).- I token env si applicano solo all’account default.
- Le impostazioni base del canale si applicano a tutti gli account salvo override per account.
- Usa
bindings[].match.accountIdper instradare ciascun account verso un agente diverso. - Se aggiungi un account non predefinito tramite
openclaw channels add(o onboarding del canale) mentre sei ancora in una configurazione top-level del canale single-account, OpenClaw promuove prima i valori single-account top-level con ambito account nella mappa account del canale così l’account originale continua a funzionare. La maggior parte dei canali li sposta inchannels.<channel>.accounts.default; Matrix può invece preservare una destinazione nominata/predefinita esistente corrispondente. - I binding esistenti solo-canale (senza
accountId) continuano a corrispondere all’account predefinito; i binding con ambito account restano opzionali. openclaw doctor --fixripara anche forme miste spostando i valori single-account top-level con ambito account nell’account promosso scelto per quel canale. La maggior parte dei canali usaaccounts.default; Matrix può invece preservare una destinazione nominata/predefinita esistente corrispondente.
Altri canali Plugin
Molti canali Plugin sono configurati comechannels.<id> e documentati nelle loro pagine canale dedicate (per esempio Feishu, Matrix, LINE, Nostr, Zalo, Nextcloud Talk, Synology Chat e Twitch).
Vedi l’indice completo dei canali: Channels.
Gating delle menzioni nelle chat di gruppo
I messaggi di gruppo richiedono per impostazione predefinita una menzione obbligatoria (menzione nei metadati o pattern regex sicuri). Si applica a chat di gruppo WhatsApp, Telegram, Discord, Google Chat e iMessage. Tipi di menzione:- Menzioni nei metadati: @-mention native della piattaforma. Ignorate nella modalità self-chat di WhatsApp.
- Pattern di testo: pattern regex sicuri in
agents.list[].groupChat.mentionPatterns. I pattern non validi e le ripetizioni annidate non sicure vengono ignorati. - Il gating delle menzioni viene applicato solo quando il rilevamento è possibile (menzioni native o almeno un pattern).
messages.groupChat.historyLimit imposta il valore predefinito globale. I canali possono sostituirlo con channels.<channel>.historyLimit (oppure per account). Imposta 0 per disabilitare.
Limiti della cronologia DM
telegram, whatsapp, discord, slack, signal, imessage, msteams.
Modalità self-chat
Includi il tuo numero inallowFrom per abilitare la modalità self-chat (ignora le @-mention native, risponde solo ai pattern di testo):
Comandi (gestione dei comandi chat)
Dettagli dei comandi
Dettagli dei comandi
- Questo blocco configura le superfici dei comandi. Per l’attuale catalogo di comandi integrati + inclusi, vedi Slash Commands.
- Questa pagina è un riferimento delle chiavi di configurazione, non il catalogo completo dei comandi. I comandi posseduti da canale/Plugin come QQ Bot
/bot-ping/bot-help/bot-logs, LINE/card, device-pair/pair, memory/dreaming, phone-control/phonee Talk/voicesono documentati nelle rispettive pagine di canale/Plugin più Slash Commands. - I comandi di testo devono essere messaggi autonomi con
/iniziale. native: "auto"attiva i comandi nativi per Discord/Telegram e lascia Slack disattivato.nativeSkills: "auto"attiva i comandi Skills nativi per Discord/Telegram e lascia Slack disattivato.- Override per canale:
channels.discord.commands.native(bool oppure"auto").falsecancella i comandi precedentemente registrati. - Sostituisci la registrazione nativa degli Skills per canale con
channels.<provider>.commands.nativeSkills. channels.telegram.customCommandsaggiunge voci extra al menu del bot Telegram.bash: trueabilita! <cmd>per la shell host. Richiedetools.elevated.enablede mittente intools.elevated.allowFrom.<channel>.config: trueabilita/config(legge/scriveopenclaw.json). Per i clientchat.senddel gateway, le scritture persistenti/config set|unsetrichiedono ancheoperator.admin; il comando in sola lettura/config showresta disponibile ai normali client operatore con scope di scrittura.mcp: trueabilita/mcpper la configurazione del server MCP gestita da OpenClaw sottomcp.servers.plugins: trueabilita/pluginsper discovery, installazione e controlli di abilitazione/disabilitazione dei Plugin.channels.<provider>.configWritescontrolla le mutazioni di configurazione per canale (predefinito: true).- Per i canali multi-account,
channels.<provider>.accounts.<id>.configWritescontrolla anche le scritture che hanno come destinazione quell’account (per esempio/allowlist --config --account <id>oppure/config set channels.<provider>.accounts.<id>...). restart: falsedisabilita/restarte le azioni dello strumento di riavvio del gateway. Predefinito:true.ownerAllowFromè l’allowlist esplicita del proprietario per comandi/strumenti riservati al proprietario. È separata daallowFrom.ownerDisplay: "hash"esegue l’hash degli ID proprietario nel prompt di sistema. ImpostaownerDisplaySecretper controllare l’hash.allowFromè per provider. Quando è impostato, è l’unica fonte di autorizzazione (le allowlist/pairing del canale euseAccessGroupsvengono ignorati).useAccessGroups: falseconsente ai comandi di bypassare le policy dei gruppi di accesso quandoallowFromnon è impostato.- Mappa della documentazione dei comandi:
Correlati
- Riferimento della configurazione — chiavi di primo livello
- Configurazione — agenti
- Panoramica dei canali