CLI commands
Messaggio
openclaw message
Comando unico in uscita per inviare messaggi ed eseguire azioni sui canali Discord, Google Chat, iMessage, Matrix, Mattermost (Plugin), Microsoft Teams, Signal, Slack, Telegram e WhatsApp.
openclaw message <subcommand> [flags]Selezione del canale
--channel <name>è obbligatorio se è configurato più di un canale; se è configurato esattamente un canale, tale canale è quello predefinito.- Valori:
discord|googlechat|imessage|matrix|mattermost|msteams|signal|slack|telegram|whatsapp(Mattermost richiede il Plugin). - Le destinazioni con prefisso del canale (ad esempio
discord:channel:123) risolvono il Plugin proprietario senza un--channelesplicito.
Formati delle destinazioni (-t, --target)
| Canale | Formato |
|---|---|
| Discord | channel:<id>, user:<id>, menzione <@id> o un ID numerico semplice (trattato come ID del canale) |
| Google Chat | spaces/<spaceId> o users/<userId> |
| iMessage | identificativo, chat_id:<id>, chat_guid:<guid> o chat_identifier:<id> |
| Mattermost (Plugin) | channel:<id>, user:<id>, @username o un ID semplice (trattato come canale) |
| Matrix | @user:server, !room:server o #alias:server |
| Microsoft Teams | conversation:<id> (19:...@thread.tacv2), un ID conversazione semplice o user:<aad-object-id> |
| Signal | +E.164, group:<id>, uuid:<id>, username:<name>/u:<name> o uno di questi con prefisso signal: |
| Slack | channel:<id> o user:<id> (un ID semplice viene trattato come canale) |
| Telegram | ID chat, @username o destinazione di un argomento del forum: <chatId>:topic:<topicId> (oppure --thread-id <topicId>) |
E.164, JID del gruppo (...@g.us) o JID del canale/della newsletter (...@newsletter) |
Ricerca per nome del canale: per i provider dotati di una directory
(Discord/Slack/ecc.), nomi come Help o #help vengono risolti tramite la
cache della directory; se non sono presenti nella cache, viene eseguita una
ricerca in tempo reale nella directory, quando supportata dal provider.
Flag comuni
Ogni azione accetta: --channel <name>, --account <id>, --json,
--dry-run, --verbose. Le azioni che richiedono una destinazione accettano
anche -t, --target <dest>.
Risoluzione dei SecretRef
openclaw message risolve i SecretRef dei canali prima di eseguire l'azione,
con l'ambito più ristretto possibile:
- limitato al canale quando è impostato
--channel(o dedotto da una destinazione con prefisso) - limitato all'account quando è impostato anche
--account - tutti i canali configurati quando non è impostato nessuno dei due
I SecretRef non risolti su canali non correlati non bloccano mai un'azione mirata; un SecretRef non risolto sul canale/account selezionato fa fallire l'azione in modalità chiusa.
Azioni
Principali
| Azione | Canali | Obbligatorio | Note |
|---|---|---|---|
send |
Discord, Google Chat, iMessage, Matrix, Mattermost (Plugin), Microsoft Teams, Signal, Slack, Telegram, WhatsApp | --target, più uno tra --message/--media/--presentation |
Vedere Invio più avanti. |
poll |
Discord, Matrix, Microsoft Teams, Telegram, WhatsApp | --target, --poll-question, --poll-option (ripetibile) |
Vedere Sondaggio più avanti. |
react |
Discord, Matrix, Nextcloud Talk, Signal, Slack, Telegram, WhatsApp | --message-id, --target |
--emoji, --remove (richiede --emoji; ometterlo per cancellare le proprie reazioni dove supportato, vedere Reazioni). WhatsApp: --participant, --from-me. Le reazioni nei gruppi Signal richiedono --target-author o --target-author-uuid. Nextcloud Talk consente solo di aggiungere reazioni; --remove genera un errore. |
reactions |
Discord, Matrix, Microsoft Teams, Slack | --message-id, --target |
--limit. |
read |
Discord, Matrix, Microsoft Teams, Slack | --target |
--limit, --message-id, --before, --after. Discord: --around, --include-thread. Slack: --message-id legge un timestamp specifico; combinarlo con --thread-id per una risposta esatta nella discussione. |
edit |
Discord, Matrix, Microsoft Teams, Slack, Telegram | --message-id, --message, --target |
Le discussioni dei forum Telegram usano --thread-id. |
delete |
Discord, Matrix, Microsoft Teams, Slack, Telegram | --message-id, --target |
|
pin / unpin |
Discord, Matrix, Microsoft Teams, Slack | --message-id, --target |
unpin accetta anche --pinned-message-id (Microsoft Teams: l'ID della risorsa di fissaggio/elenco dei messaggi fissati, non l'ID del messaggio di chat). |
pins (elenco) |
Discord, Matrix, Microsoft Teams, Slack | --target |
--limit. |
permissions |
Discord, Matrix | --target |
Matrix: disponibile solo quando la crittografia è abilitata e le azioni di verifica sono consentite. |
search |
Discord | --guild-id, --query |
--channel-id, --channel-ids (ripetibile), --author-id, --author-ids (ripetibile), --limit. |
member info |
Discord, Matrix, Microsoft Teams, Slack | --user-id |
--guild-id (Discord). |
Invio
openclaw message send --channel discord \ --target channel:123 --message "hi" --reply-to 456--media <path-or-url>: allega un'immagine, un file audio, un video o un documento (percorso locale o URL).--presentation <json>: payload condiviso con blocchitext,context,divider,chart,table,buttonseselect, visualizzati in base alle funzionalità del canale. Vedere Presentazione dei messaggi.--delivery <json>: preferenze generiche di consegna, ad esempio{"pin": true}.--pinè un'abbreviazione per la consegna con fissaggio quando il canale la supporta.--reply-to <id>,--thread-id <id>(argomento del forum Telegram; timestamp della discussione Slack, stesso campo di--reply-to).--force-document(Telegram, WhatsApp): invia immagini/GIF/video come documenti per evitare la compressione del canale.--silent(Telegram, Discord): invia senza notifica.--gif-playback(solo WhatsApp): tratta i contenuti video come riproduzione GIF.
openclaw message send --channel discord \ --target channel:123 --message "Choose:" \ --presentation '{"blocks":[{"type":"buttons","buttons":[{"label":"Approve","value":"approve","style":"success"},{"label":"Decline","value":"decline","style":"danger"}]}]}'openclaw message send --channel telegram --target @mychat --message "Choose:" \ --presentation '{"blocks":[{"type":"buttons","buttons":[{"label":"Yes","value":"cmd:yes"},{"label":"No","value":"cmd:no"}]}]}'Slack visualizza in modo nativo i blocchi grafico supportati; gli altri canali ricevono gli stessi dati come testo leggibile:
openclaw message send --channel slack --target channel:C123 \ --presentation '{"blocks":[{"type":"chart","chartType":"bar","title":"Quarterly revenue","categories":["Q1","Q2"],"series":[{"name":"Revenue","values":[120,145]}],"xLabel":"Quarter"}]}'Slack visualizza anche in modo nativo i blocchi tabella espliciti. Gli altri canali ricevono la didascalia e ogni riga come testo deterministico:
openclaw message send --channel slack --target channel:C123 \ --presentation '{"title":"Pipeline report","blocks":[{"type":"table","caption":"Open pipeline","headers":["Account","Stage","ARR"],"rows":[["Acme","Won",125000],["Globex","Review",82000]],"rowHeaderColumnIndex":0}]}'I pulsanti delle Mini App di Telegram usano webApp (web_app continua a essere interpretato per compatibilità con il
JSON legacy) e vengono visualizzati solo nelle chat private tra un utente e il bot:
openclaw message send --channel telegram --target 123456789 --message "Open app:" \ --presentation '{"blocks":[{"type":"buttons","buttons":[{"label":"Launch","webApp":{"url":"https://example.com/app"}}]}]}'openclaw message send --channel telegram --target @mychat \ --media ./diagram.png --force-documentopenclaw message send --channel msteams \ --target conversation:19:abc@thread.tacv2 \ --presentation '{"title":"Status update","blocks":[{"type":"text","text":"Build completed"}]}'Sondaggio
openclaw message poll --channel discord \ --target channel:123 \ --poll-question "Snack?" \ --poll-option Pizza --poll-option Sushi \ --poll-multi --poll-duration-hours 48--poll-option <choice>: ripetere da 2 a 12 volte.--poll-multi: consente selezioni multiple.- Discord:
--poll-duration-hours,--silent,--message. - Telegram:
--poll-duration-seconds <n>(5-600),--silent,--poll-anonymous/--poll-public,--thread-id.
openclaw message poll --channel telegram \ --target @mychat \ --poll-question "Lunch?" \ --poll-option Pizza --poll-option Sushi \ --poll-duration-seconds 120 --silentopenclaw message poll --channel msteams \ --target conversation:19:abc@thread.tacv2 \ --poll-question "Lunch?" \ --poll-option Pizza --poll-option SushiThread
thread create: canale Discord. Obbligatori:--thread-name,--target(ID del canale). Facoltativi:--message-id,--message,--auto-archive-min.thread list: canale Discord. Obbligatorio:--guild-id. Facoltativi:--channel-id,--include-archived,--before,--limit.thread reply: canale Discord. Obbligatori:--target(ID del thread),--message. Facoltativi:--media,--reply-to.
Emoji
emoji list: Discord (--guild-id), Slack (nessun flag aggiuntivo).emoji upload: Discord. Obbligatori:--guild-id,--emoji-name,--media. Facoltativo:--role-ids(ripetibile).
Adesivi
sticker send: Discord. Obbligatori:--target,--sticker-id(ripetibile). Facoltativo:--message.sticker upload: Discord. Obbligatori:--guild-id,--sticker-name,--sticker-desc,--sticker-tags,--media.
Ruoli, canali, voce ed eventi (Discord)
role info:--guild-id.role add/role remove:--guild-id,--user-id,--role-id.channel info:--target.channel list:--guild-id.voice status:--guild-id,--user-id.event list:--guild-id.event create: obbligatori--guild-id,--event-name,--start-time; facoltativi--end-time,--desc,--channel-id,--location,--event-type,--image <url-or-path>.
Moderazione (Discord)
timeout:--guild-id,--user-id; facoltativi--duration-mino--until(ometterli entrambi per annullare il timeout),--reason.kick:--guild-id,--user-id,--reason.ban:--guild-id,--user-id,--delete-days,--reason.
Trasmissione
openclaw message broadcast --targets <target...> [--channel all] [--message <text>] [--media <url>] [--dry-run]Invia un singolo payload a più destinazioni. --targets accetta un elenco
separato da spazi. Usare --channel all per indirizzarlo a ogni provider configurato.