chore(i18n): refresh it translations

This commit is contained in:
openclaw-docs-i18n[bot] 2026-04-21 17:48:23 +00:00
parent f8bf7dd57b
commit 8510976936
5 changed files with 719 additions and 681 deletions

View File

@ -1,20 +1,20 @@
---
read_when:
- Lavori sulle funzionalità del canale Discord
summary: Stato del supporto del bot Discord, funzionalità e configurazione
- Lavorare sulle funzionalità del canale Discord
summary: Stato del supporto del bot Discord, capacità e configurazione
title: Discord
x-i18n:
generated_at: "2026-04-08T08:14:01Z"
generated_at: "2026-04-21T17:45:33Z"
model: gpt-5.4
provider: openai
source_hash: 3cd2886fad941ae2129e681911309539e9a65a2352b777b538d7f4686a68f73f
source_hash: 1681315a6c246c4b68347f5e22319e132f30ea4e29a19e7d1da9e83dce7b68d0
source_path: channels/discord.md
workflow: 15
---
# Discord (API Bot)
Stato: pronto per DM e canali guild tramite il gateway ufficiale di Discord.
Stato: pronto per DM e canali server tramite il gateway Discord ufficiale.
<CardGroup cols={3}>
<Card title="Abbinamento" icon="link" href="/it/channels/pairing">
@ -24,27 +24,27 @@ Stato: pronto per DM e canali guild tramite il gateway ufficiale di Discord.
Comportamento nativo dei comandi e catalogo dei comandi.
</Card>
<Card title="Risoluzione dei problemi del canale" icon="wrench" href="/it/channels/troubleshooting">
Diagnostica e flusso di riparazione tra canali.
Diagnostica tra canali e flusso di riparazione.
</Card>
</CardGroup>
## Configurazione rapida
Dovrai creare una nuova applicazione con un bot, aggiungere il bot al tuo server e abbinarlo a OpenClaw. Ti consigliamo di aggiungere il tuo bot al tuo server privato. Se non ne hai ancora uno, [creane prima uno](https://support.discord.com/hc/en-us/articles/204849977-How-do-I-create-a-server) (scegli **Create My Own > For me and my friends**).
Dovrai creare una nuova applicazione con un bot, aggiungere il bot al tuo server e abbinarlo a OpenClaw. Ti consigliamo di aggiungere il bot al tuo server privato. Se non ne hai ancora uno, [creane prima uno](https://support.discord.com/hc/en-us/articles/204849977-How-do-I-create-a-server) (scegli **Create My Own > For me and my friends**).
<Steps>
<Step title="Crea un'applicazione Discord e un bot">
Vai al [Discord Developer Portal](https://discord.com/developers/applications) e fai clic su **New Application**. Assegna un nome come "OpenClaw".
Vai al [Portale sviluppatori Discord](https://discord.com/developers/applications) e fai clic su **New Application**. Assegnale un nome come "OpenClaw".
Fai clic su **Bot** nella barra laterale. Imposta **Username** su qualunque nome usi per il tuo agente OpenClaw.
Fai clic su **Bot** nella barra laterale. Imposta **Username** con il nome che usi per il tuo agente OpenClaw.
</Step>
<Step title="Abilita gli intent privilegiati">
Sempre nella pagina **Bot**, scorri fino a **Privileged Gateway Intents** e abilita:
Sempre nella pagina **Bot**, scorri verso il basso fino a **Privileged Gateway Intents** e abilita:
- **Message Content Intent** (obbligatorio)
- **Server Members Intent** (consigliato; obbligatorio per allowlist basate sui ruoli e per l'associazione da nome a ID)
- **Server Members Intent** (consigliato; obbligatorio per le allowlist dei ruoli e la corrispondenza da nome a ID)
- **Presence Intent** (facoltativo; necessario solo per gli aggiornamenti di presenza)
</Step>
@ -53,7 +53,7 @@ Dovrai creare una nuova applicazione con un bot, aggiungere il bot al tuo server
Torna in alto nella pagina **Bot** e fai clic su **Reset Token**.
<Note>
Nonostante il nome, questo genera il tuo primo token — non viene “reimpostato” nulla.
Nonostante il nome, questo genera il tuo primo token: non viene "reimpostato" nulla.
</Note>
Copia il token e salvalo da qualche parte. Questo è il tuo **Bot Token** e ti servirà a breve.
@ -63,12 +63,12 @@ Dovrai creare una nuova applicazione con un bot, aggiungere il bot al tuo server
<Step title="Genera un URL di invito e aggiungi il bot al tuo server">
Fai clic su **OAuth2** nella barra laterale. Genererai un URL di invito con i permessi corretti per aggiungere il bot al tuo server.
Scorri fino a **OAuth2 URL Generator** e abilita:
Scorri verso il basso fino a **OAuth2 URL Generator** e abilita:
- `bot`
- `applications.commands`
Comparirà sotto una sezione **Bot Permissions**. Abilita:
Sotto apparirà una sezione **Bot Permissions**. Abilita:
- View Channels
- Send Messages
@ -77,30 +77,30 @@ Dovrai creare una nuova applicazione con un bot, aggiungere il bot al tuo server
- Attach Files
- Add Reactions (facoltativo)
Copia l'URL generato in fondo, incollalo nel browser, seleziona il tuo server e fai clic su **Continue** per connetterti. Ora dovresti vedere il tuo bot nel server Discord.
Copia l'URL generato in basso, incollalo nel browser, seleziona il tuo server e fai clic su **Continue** per collegarti. Ora dovresti vedere il tuo bot nel server Discord.
</Step>
<Step title="Abilita Developer Mode e raccogli i tuoi ID">
Tornando nell'app Discord, devi abilitare Developer Mode per poter copiare gli ID interni.
<Step title="Abilita la Modalità sviluppatore e raccogli i tuoi ID">
Tornando nell'app Discord, devi abilitare la Modalità sviluppatore per poter copiare gli ID interni.
1. Fai clic su **User Settings** (icona dell'ingranaggio accanto al tuo avatar) → **Advanced** → attiva **Developer Mode**
2. Fai clic destro sull'**icona del server** nella barra laterale → **Copy Server ID**
3. Fai clic destro sul **tuo avatar** → **Copy User ID**
2. Fai clic con il pulsante destro sull'**icona del server** nella barra laterale → **Copy Server ID**
3. Fai clic con il pulsante destro sul **tuo avatar** → **Copy User ID**
Salva **Server ID** e **User ID** insieme al tuo Bot Token — invierai tutti e tre a OpenClaw nel passaggio successivo.
Salva il tuo **Server ID** e **User ID** insieme al Bot Token: nel passaggio successivo invierai tutti e tre a OpenClaw.
</Step>
<Step title="Consenti i DM dai membri del server">
Per far funzionare l'abbinamento, Discord deve consentire al tuo bot di inviarti DM. Fai clic destro sull'**icona del server****Privacy Settings** → attiva **Direct Messages**.
Perché l'abbinamento funzioni, Discord deve consentire al tuo bot di inviarti DM. Fai clic con il pulsante destro sulla **icona del server****Privacy Settings** → attiva **Direct Messages**.
Questo consente ai membri del server (inclusi i bot) di inviarti DM. Mantieni questa opzione attiva se vuoi usare i DM di Discord con OpenClaw. Se prevedi di usare solo i canali guild, puoi disabilitare i DM dopo l'abbinamento.
Questo consente ai membri del server (inclusi i bot) di inviarti DM. Mantieni questa opzione abilitata se vuoi usare i DM di Discord con OpenClaw. Se prevedi di usare solo i canali del server, puoi disabilitare i DM dopo l'abbinamento.
</Step>
<Step title="Imposta in modo sicuro il token del tuo bot (non inviarlo in chat)">
Il token del tuo bot Discord è un segreto (come una password). Impostalo sulla macchina che esegue OpenClaw prima di inviare un messaggio al tuo agente.
<Step title="Imposta il token del tuo bot in modo sicuro (non inviarlo in chat)">
Il token del tuo bot Discord è un segreto (come una password). Impostalo sulla macchina che esegue OpenClaw prima di inviare messaggi al tuo agente.
```bash
export DISCORD_BOT_TOKEN="YOUR_BOT_TOKEN"
@ -110,7 +110,7 @@ openclaw config set channels.discord.enabled true --strict-json
openclaw gateway
```
Se OpenClaw è già in esecuzione come servizio in background, riavvialo tramite l'app Mac di OpenClaw oppure arrestando e riavviando il processo `openclaw gateway run`.
Se OpenClaw è già in esecuzione come servizio in background, riavvialo tramite l'app OpenClaw Mac oppure arrestando e riavviando il processo `openclaw gateway run`.
</Step>
@ -118,7 +118,7 @@ openclaw gateway
<Tabs>
<Tab title="Chiedi al tuo agente">
Chatta con il tuo agente OpenClaw su qualsiasi canale esistente (ad esempio Telegram) e comunicaglielo. Se Discord è il tuo primo canale, usa invece la scheda CLI / config.
Chatta con il tuo agente OpenClaw su qualsiasi canale esistente (ad esempio Telegram) e diglielo. Se Discord è il tuo primo canale, usa invece la scheda CLI / config.
> "Ho già impostato il token del mio bot Discord nella configurazione. Completa la configurazione di Discord con User ID `<user_id>` e Server ID `<server_id>`."
</Tab>
@ -146,7 +146,7 @@ openclaw gateway
DISCORD_BOT_TOKEN=...
```
I valori `token` in testo semplice sono supportati. Anche i valori SecretRef sono supportati per `channels.discord.token` nei provider env/file/exec. Vedi [Gestione dei segreti](/it/gateway/secrets).
I valori `token` in testo semplice sono supportati. Sono supportati anche i valori SecretRef per `channels.discord.token` tramite provider env/file/exec. Vedi [Gestione dei segreti](/it/gateway/secrets).
</Tab>
</Tabs>
@ -154,7 +154,7 @@ DISCORD_BOT_TOKEN=...
</Step>
<Step title="Approva il primo abbinamento DM">
Attendi che il gateway sia in esecuzione, quindi invia un DM al tuo bot su Discord. Risponderà con un codice di abbinamento.
Attendi finché il gateway non è in esecuzione, quindi invia un DM al tuo bot in Discord. Risponderà con un codice di abbinamento.
<Tabs>
<Tab title="Chiedi al tuo agente">
@ -174,27 +174,27 @@ openclaw pairing approve discord <CODE>
I codici di abbinamento scadono dopo 1 ora.
Ora dovresti poter chattare con il tuo agente su Discord via DM.
Ora dovresti essere in grado di chattare con il tuo agente in Discord tramite DM.
</Step>
</Steps>
<Note>
La risoluzione del token è consapevole dell'account. I valori del token nella configurazione hanno precedenza sul fallback env. `DISCORD_BOT_TOKEN` viene usato solo per l'account predefinito.
Per chiamate avanzate in uscita (strumento messaggi/azioni del canale), viene usato un `token` esplicito per quella chiamata. Questo si applica alle azioni di invio e di lettura/probe (ad esempio read/search/fetch/thread/pins/permissions). I criteri dell'account e le impostazioni di retry continuano invece a provenire dall'account selezionato nello snapshot di runtime attivo.
La risoluzione del token è consapevole dell'account. I valori del token nella configurazione hanno priorità sul fallback env. `DISCORD_BOT_TOKEN` viene usato solo per l'account predefinito.
Per le chiamate avanzate in uscita (azioni di strumento messaggi/canale), un `token` esplicito per chiamata viene usato per quella chiamata. Questo vale per le azioni di invio e di lettura/sonda (ad esempio read/search/fetch/thread/pins/permissions). Le impostazioni dei criteri dell'account e dei tentativi restano comunque quelle dell'account selezionato nello snapshot di runtime attivo.
</Note>
## Consigliato: configura un workspace guild
## Consigliato: configura uno spazio di lavoro server
Una volta che i DM funzionano, puoi configurare il tuo server Discord come workspace completo in cui ogni canale ha la propria sessione agente con il proprio contesto. Questo è consigliato per server privati in cui ci siete solo tu e il tuo bot.
Una volta che i DM funzionano, puoi configurare il tuo server Discord come uno spazio di lavoro completo in cui ogni canale ottiene la propria sessione agente con il proprio contesto. Questa opzione è consigliata per server privati in cui ci siete solo tu e il tuo bot.
<Steps>
<Step title="Aggiungi il tuo server all'allowlist delle guild">
<Step title="Aggiungi il tuo server alla allowlist dei server">
Questo consente al tuo agente di rispondere in qualsiasi canale del tuo server, non solo nei DM.
<Tabs>
<Tab title="Chiedi al tuo agente">
> "Aggiungi il mio Discord Server ID `<server_id>` all'allowlist delle guild"
> "Aggiungi il mio Server ID Discord `<server_id>` alla allowlist dei server"
</Tab>
<Tab title="Config">
@ -220,14 +220,14 @@ Una volta che i DM funzionano, puoi configurare il tuo server Discord come works
</Step>
<Step title="Consenti risposte senza @mention">
Per impostazione predefinita, il tuo agente risponde nei canali guild solo quando viene @menzionato. Per un server privato, probabilmente vuoi che risponda a ogni messaggio.
Per impostazione predefinita, il tuo agente risponde nei canali server solo quando viene @menzionato. Per un server privato, probabilmente vuoi che risponda a ogni messaggio.
<Tabs>
<Tab title="Chiedi al tuo agente">
> "Consenti al mio agente di rispondere su questo server senza dover essere @menzionato"
</Tab>
<Tab title="Config">
Imposta `requireMention: false` nella configurazione della tua guild:
Imposta `requireMention: false` nella configurazione del server:
```json5
{
@ -248,58 +248,58 @@ Una volta che i DM funzionano, puoi configurare il tuo server Discord come works
</Step>
<Step title="Pianifica la memoria nei canali guild">
Per impostazione predefinita, la memoria a lungo termine (`MEMORY.md`) viene caricata solo nelle sessioni DM. I canali guild non caricano automaticamente `MEMORY.md`.
<Step title="Pianifica la memoria nei canali server">
Per impostazione predefinita, la memoria a lungo termine (MEMORY.md) viene caricata solo nelle sessioni DM. I canali server non caricano automaticamente MEMORY.md.
<Tabs>
<Tab title="Chiedi al tuo agente">
> "Quando faccio domande nei canali Discord, usa memory_search o memory_get se ti serve contesto a lungo termine da `MEMORY.md`."
> "Quando faccio domande nei canali Discord, usa memory_search o memory_get se ti serve contesto a lungo termine da MEMORY.md."
</Tab>
<Tab title="Manuale">
Se ti serve contesto condiviso in ogni canale, inserisci le istruzioni stabili in `AGENTS.md` o `USER.md` (vengono iniettati in ogni sessione). Mantieni le note a lungo termine in `MEMORY.md` e accedivi su richiesta con gli strumenti di memoria.
Se ti serve un contesto condiviso in ogni canale, inserisci le istruzioni stabili in `AGENTS.md` o `USER.md` (vengono iniettati in ogni sessione). Conserva le note a lungo termine in `MEMORY.md` e accedivi su richiesta con gli strumenti di memoria.
</Tab>
</Tabs>
</Step>
</Steps>
Ora crea alcuni canali sul tuo server Discord e inizia a chattare. Il tuo agente può vedere il nome del canale e ogni canale riceve la propria sessione isolata, quindi puoi configurare `#coding`, `#home`, `#research` o qualunque cosa si adatti al tuo flusso di lavoro.
Ora crea alcuni canali sul tuo server Discord e inizia a chattare. Il tuo agente può vedere il nome del canale e ogni canale riceve la propria sessione isolata, quindi puoi configurare `#coding`, `#home`, `#research` o qualsiasi altra cosa si adatti al tuo flusso di lavoro.
## Modello di runtime
- Il gateway gestisce la connessione Discord.
- L'instradamento delle risposte è deterministico: le risposte in ingresso da Discord tornano su Discord.
- Gateway gestisce la connessione Discord.
- L'instradamento delle risposte è deterministico: le risposte in ingresso da Discord tornano a Discord.
- Per impostazione predefinita (`session.dmScope=main`), le chat dirette condividono la sessione principale dell'agente (`agent:main:main`).
- I canali guild hanno chiavi di sessione isolate (`agent:<agentId>:discord:channel:<channelId>`).
- I canali server hanno chiavi di sessione isolate (`agent:<agentId>:discord:channel:<channelId>`).
- I DM di gruppo vengono ignorati per impostazione predefinita (`channels.discord.dm.groupEnabled=false`).
- I comandi slash nativi vengono eseguiti in sessioni comando isolate (`agent:<agentId>:discord:slash:<userId>`), continuando però a trasportare `CommandTargetSessionKey` verso la sessione di conversazione instradata.
- I comandi slash nativi vengono eseguiti in sessioni di comando isolate (`agent:<agentId>:discord:slash:<userId>`), pur mantenendo `CommandTargetSessionKey` per la sessione di conversazione instradata.
## Canali forum
I canali forum e media di Discord accettano solo post nei thread. OpenClaw supporta due modi per crearli:
- Invia un messaggio al forum padre (`channel:<forumId>`) per creare automaticamente un thread. Il titolo del thread usa la prima riga non vuota del tuo messaggio.
- Usa `openclaw message thread create` per creare direttamente un thread. Non passare `--message-id` per i canali forum.
- Invia un messaggio al forum padre (`channel:<forumId>`) per creare automaticamente un thread. Il titolo del thread usa la prima riga non vuota del messaggio.
- Usa `openclaw message thread create` per creare un thread direttamente. Non passare `--message-id` per i canali forum.
Esempio: inviare al forum padre per creare un thread
Esempio: invia al forum padre per creare un thread
```bash
openclaw message send --channel discord --target channel:<forumId> \
--message "Topic title\nBody of the post"
```
Esempio: creare esplicitamente un thread del forum
Esempio: crea esplicitamente un thread del forum
```bash
openclaw message thread create --channel discord --target channel:<forumId> \
--thread-name "Topic title" --message "Body of the post"
```
I forum padre non accettano componenti Discord. Se hai bisogno di componenti, invia al thread stesso (`channel:<threadId>`).
I forum padre non accettano componenti Discord. Se ti servono componenti, invia al thread stesso (`channel:<threadId>`).
## Componenti interattivi
OpenClaw supporta i contenitori Discord components v2 per i messaggi dell'agente. Usa lo strumento messaggi con un payload `components`. I risultati delle interazioni vengono reinstradati all'agente come normali messaggi in ingresso e seguono le impostazioni Discord `replyToMode` esistenti.
OpenClaw supporta i contenitori componenti Discord v2 per i messaggi dell'agente. Usa lo strumento messaggi con un payload `components`. I risultati dell'interazione vengono instradati di nuovo all'agente come normali messaggi in ingresso e seguono le impostazioni Discord `replyToMode` esistenti.
Blocchi supportati:
@ -307,21 +307,21 @@ Blocchi supportati:
- Le righe di azione consentono fino a 5 pulsanti o un singolo menu di selezione
- Tipi di selezione: `string`, `user`, `role`, `mentionable`, `channel`
Per impostazione predefinita, i componenti sono monouso. Imposta `components.reusable=true` per consentire l'uso multiplo di pulsanti, selezioni e moduli finché non scadono.
Per impostazione predefinita, i componenti sono monouso. Imposta `components.reusable=true` per consentire l'uso multiplo di pulsanti, selezioni e moduli fino alla loro scadenza.
Per limitare chi può fare clic su un pulsante, imposta `allowedUsers` su quel pulsante (ID utente Discord, tag o `*`). Quando configurato, gli utenti non corrispondenti ricevono un rifiuto effimero.
Per limitare chi può fare clic su un pulsante, imposta `allowedUsers` su quel pulsante (ID utente Discord, tag o `*`). Se configurato, gli utenti non corrispondenti ricevono un rifiuto effimero.
I comandi slash `/model` e `/models` aprono un selettore modello interattivo con menu a discesa di provider e modello più un passaggio Submit. La risposta del selettore è effimera e può essere usata solo dall'utente che l'ha invocata.
I comandi slash `/model` e `/models` aprono un selettore di modelli interattivo con menu a discesa per provider e modello più un passaggio Submit. La risposta del selettore è effimera e può essere usata solo dall'utente che l'ha invocata.
Allegati di file:
Allegati file:
- i blocchi `file` devono puntare a un riferimento allegato (`attachment://<filename>`)
- fornisci l'allegato tramite `media`/`path`/`filePath` (file singolo); usa `media-gallery` per più file
- usa `filename` per sovrascrivere il nome di upload quando deve corrispondere al riferimento allegato
- I blocchi `file` devono puntare a un riferimento allegato (`attachment://<filename>`)
- Fornisci l'allegato tramite `media`/`path`/`filePath` (file singolo); usa `media-gallery` per più file
- Usa `filename` per sovrascrivere il nome di caricamento quando deve corrispondere al riferimento allegato
Moduli modal:
- aggiungi `components.modal` con fino a 5 campi
- Aggiungi `components.modal` con fino a 5 campi
- Tipi di campo: `text`, `checkbox`, `radio`, `select`, `role-select`, `user-select`
- OpenClaw aggiunge automaticamente un pulsante di attivazione
@ -383,14 +383,14 @@ Esempio:
<Tabs>
<Tab title="Criterio DM">
`channels.discord.dmPolicy` controlla l'accesso DM (legacy: `channels.discord.dm.policy`):
`channels.discord.dmPolicy` controlla l'accesso ai DM (legacy: `channels.discord.dm.policy`):
- `pairing` (predefinito)
- `allowlist`
- `open` (richiede che `channels.discord.allowFrom` includa `"*"`; legacy: `channels.discord.dm.allowFrom`)
- `disabled`
Se il criterio DM non è open, gli utenti sconosciuti vengono bloccati (o invitati all'abbinamento in modalità `pairing`).
Se il criterio DM non è open, gli utenti sconosciuti vengono bloccati (oppure invitati all'abbinamento in modalità `pairing`).
Precedenza multi-account:
@ -398,7 +398,7 @@ Esempio:
- Gli account con nome ereditano `channels.discord.allowFrom` quando il proprio `allowFrom` non è impostato.
- Gli account con nome non ereditano `channels.discord.accounts.default.allowFrom`.
Formato target DM per la consegna:
Formato del target DM per la consegna:
- `user:<id>`
- menzione `<@id>`
@ -407,23 +407,23 @@ Esempio:
</Tab>
<Tab title="Criterio guild">
La gestione delle guild è controllata da `channels.discord.groupPolicy`:
<Tab title="Criterio server">
La gestione dei server è controllata da `channels.discord.groupPolicy`:
- `open`
- `allowlist`
- `disabled`
La baseline sicura quando `channels.discord` esiste è `allowlist`.
La baseline sicura quando esiste `channels.discord` è `allowlist`.
Comportamento di `allowlist`:
- la guild deve corrispondere a `channels.discord.guilds` (`id` preferito, slug accettato)
- allowlist facoltative del mittente: `users` (consigliati ID stabili) e `roles` (solo ID ruolo); se uno dei due è configurato, i mittenti sono consentiti quando corrispondono a `users` OPPURE `roles`
- il server deve corrispondere a `channels.discord.guilds` (`id` preferito, slug accettato)
- allowlist facoltative dei mittenti: `users` (consigliati ID stabili) e `roles` (solo ID ruolo); se una delle due è configurata, i mittenti sono consentiti quando corrispondono a `users` OPPURE `roles`
- la corrispondenza diretta nome/tag è disabilitata per impostazione predefinita; abilita `channels.discord.dangerouslyAllowNameMatching: true` solo come modalità di compatibilità di emergenza
- nomi/tag sono supportati per `users`, ma gli ID sono più sicuri; `openclaw security audit` avvisa quando vengono usate voci nome/tag
- se una guild ha `channels` configurato, i canali non elencati vengono negati
- se una guild non ha un blocco `channels`, tutti i canali in quella guild in allowlist sono consentiti
- se un server ha `channels` configurato, i canali non elencati vengono negati
- se un server non ha un blocco `channels`, tutti i canali in quel server presente nella allowlist sono consentiti
Esempio:
@ -454,7 +454,7 @@ Esempio:
</Tab>
<Tab title="Menzioni e DM di gruppo">
I messaggi guild sono soggetti alla menzione per impostazione predefinita.
I messaggi nei server sono soggetti al vincolo di menzione per impostazione predefinita.
Il rilevamento delle menzioni include:
@ -462,7 +462,7 @@ Esempio:
- pattern di menzione configurati (`agents.list[].groupChat.mentionPatterns`, fallback `messages.groupChat.mentionPatterns`)
- comportamento implicito di risposta al bot nei casi supportati
`requireMention` è configurato per guild/canale (`channels.discord.guilds...`).
`requireMention` viene configurato per server/canale (`channels.discord.guilds...`).
`ignoreOtherMentions` scarta facoltativamente i messaggi che menzionano un altro utente/ruolo ma non il bot (escludendo @everyone/@here).
DM di gruppo:
@ -473,9 +473,9 @@ Esempio:
</Tab>
</Tabs>
### Instradamento agente basato sui ruoli
### Instradamento dell'agente basato sui ruoli
Usa `bindings[].match.roles` per instradare i membri delle guild Discord ad agenti diversi in base all'ID del ruolo. I binding basati sui ruoli accettano solo ID ruolo e vengono valutati dopo i binding peer o parent-peer e prima dei binding solo guild. Se un binding imposta anche altri campi match (ad esempio `peer` + `guildId` + `roles`), tutti i campi configurati devono corrispondere.
Usa `bindings[].match.roles` per instradare i membri di un server Discord a diversi agenti in base all'ID del ruolo. I binding basati sui ruoli accettano solo ID ruolo e vengono valutati dopo i binding peer o parent-peer e prima dei binding solo-server. Se un binding imposta anche altri campi di corrispondenza (ad esempio `peer` + `guildId` + `roles`), tutti i campi configurati devono corrispondere.
```json5
{
@ -499,12 +499,12 @@ Usa `bindings[].match.roles` per instradare i membri delle guild Discord ad agen
}
```
## Configurazione del Developer Portal
## Configurazione del Portale sviluppatori
<AccordionGroup>
<Accordion title="Crea app e bot">
1. Discord Developer Portal -> **Applications** -> **New Application**
1. Portale sviluppatori Discord -> **Applications** -> **New Application**
2. **Bot** -> **Add Bot**
3. Copia il token del bot
@ -520,12 +520,12 @@ Usa `bindings[].match.roles` per instradare i membri delle guild Discord ad agen
</Accordion>
<Accordion title="Scope OAuth e permessi di base">
<Accordion title="Ambiti OAuth e permessi baseline">
Generatore URL OAuth:
- scope: `bot`, `applications.commands`
- ambiti: `bot`, `applications.commands`
Permessi di base tipici:
Permessi baseline tipici:
- View Channels
- Send Messages
@ -534,31 +534,31 @@ Usa `bindings[].match.roles` per instradare i membri delle guild Discord ad agen
- Attach Files
- Add Reactions (facoltativo)
Evita `Administrator` salvo necessità esplicita.
Evita `Administrator` a meno che non sia esplicitamente necessario.
</Accordion>
<Accordion title="Copia gli ID">
Abilita Discord Developer Mode, quindi copia:
Abilita la Modalità sviluppatore di Discord, poi copia:
- ID server
- ID canale
- ID utente
Preferisci ID numerici nella configurazione di OpenClaw per audit e probe affidabili.
Preferisci ID numerici nella configurazione OpenClaw per audit e probe affidabili.
</Accordion>
</AccordionGroup>
## Comandi nativi e autorizzazione dei comandi
- `commands.native` ha come valore predefinito `"auto"` ed è abilitato per Discord.
- `commands.native` è impostato su `"auto"` per impostazione predefinita ed è abilitato per Discord.
- Override per canale: `channels.discord.commands.native`.
- `commands.native=false` rimuove esplicitamente i comandi nativi Discord registrati in precedenza.
- `commands.native=false` cancella esplicitamente i comandi nativi Discord registrati in precedenza.
- L'autorizzazione dei comandi nativi usa le stesse allowlist/criteri Discord della normale gestione dei messaggi.
- I comandi possono comunque essere visibili nell'interfaccia Discord agli utenti non autorizzati; l'esecuzione continua comunque ad applicare l'autorizzazione OpenClaw e restituisce "non autorizzato".
- I comandi possono comunque essere visibili nell'interfaccia Discord agli utenti non autorizzati; l'esecuzione applica comunque l'autorizzazione OpenClaw e restituisce "non autorizzato".
Vedi [Comandi slash](/it/tools/slash-commands) per catalogo e comportamento dei comandi.
Vedi [Comandi slash](/it/tools/slash-commands) per il catalogo dei comandi e il comportamento.
Impostazioni predefinite dei comandi slash:
@ -581,25 +581,26 @@ Impostazioni predefinite dei comandi slash:
- `batched`
Nota: `off` disabilita il threading implicito delle risposte. I tag espliciti `[[reply_to_*]]` vengono comunque rispettati.
`first` allega sempre il riferimento implicito di risposta nativa al primo messaggio Discord in uscita del turno.
`batched` allega il riferimento implicito di risposta nativa di Discord solo quando il
`first` collega sempre il riferimento implicito di risposta nativa al primo messaggio Discord in uscita del turno.
`batched` collega il riferimento implicito di risposta nativa di Discord solo quando il
turno in ingresso era un batch con debounce di più messaggi. Questo è utile
quando vuoi le risposte native soprattutto per chat ambigue e concitate, non per ogni
singolo turno a messaggio singolo.
quando vuoi usare le risposte native soprattutto per chat ambigue e a raffica, non per ogni
singolo turno con un solo messaggio.
Gli ID messaggio vengono esposti nel contesto/cronologia così che gli agenti possano puntare a messaggi specifici.
Gli ID messaggio vengono esposti nel contesto/nella cronologia così che gli agenti possano indirizzare messaggi specifici.
</Accordion>
<Accordion title="Anteprima dello streaming live">
OpenClaw può trasmettere risposte provvisorie inviando un messaggio temporaneo e modificandolo man mano che arriva il testo.
<Accordion title="Anteprima streaming live">
OpenClaw può trasmettere risposte bozza inviando un messaggio temporaneo e modificandolo man mano che arriva il testo.
- `channels.discord.streaming` controlla lo streaming di anteprima (`off` | `partial` | `block` | `progress`, predefinito: `off`).
- Il valore predefinito resta `off` perché le modifiche dell'anteprima su Discord possono raggiungere rapidamente i limiti di velocità, soprattutto quando più bot o gateway condividono lo stesso account o traffico guild.
- `progress` è accettato per coerenza tra canali e su Discord viene mappato a `partial`.
- Il valore predefinito resta `off` perché le modifiche di anteprima in Discord possono raggiungere rapidamente i limiti di frequenza, soprattutto quando più bot o gateway condividono lo stesso account o traffico del server.
- `progress` è accettato per coerenza tra canali e in Discord viene mappato a `partial`.
- `channels.discord.streamMode` è un alias legacy e viene migrato automaticamente.
- `partial` modifica un singolo messaggio di anteprima man mano che arrivano i token.
- `block` emette blocchi della dimensione della bozza (usa `draftChunk` per regolare dimensione e punti di interruzione).
- `block` emette blocchi di dimensione bozza (usa `draftChunk` per regolare dimensione e punti di interruzione).
- `streaming.preview.toolProgress` controlla se gli aggiornamenti strumento/progresso riutilizzano lo stesso messaggio di anteprima bozza (predefinito: `true`). Imposta `false` per mantenere messaggi separati di strumento/progresso.
Esempio:
@ -613,7 +614,7 @@ Impostazioni predefinite dei comandi slash:
}
```
Impostazioni predefinite per la suddivisione in blocchi della modalità `block` (limitate a `channels.discord.textChunkLimit`):
Valori predefiniti di suddivisione in blocchi della modalità `block` (limitati da `channels.discord.textChunkLimit`):
```json5
{
@ -630,15 +631,15 @@ Impostazioni predefinite dei comandi slash:
}
```
Lo streaming di anteprima è solo testuale; le risposte multimediali tornano alla consegna normale.
Lo streaming di anteprima è solo testuale; le risposte con contenuti multimediali ricadono sulla consegna normale.
Nota: lo streaming di anteprima è separato dallo streaming a blocchi. Quando lo streaming a blocchi è esplicitamente
abilitato per Discord, OpenClaw salta il flusso di anteprima per evitare il doppio streaming.
abilitato per Discord, OpenClaw salta il flusso di anteprima per evitare un doppio streaming.
</Accordion>
<Accordion title="Cronologia, contesto e comportamento dei thread">
Contesto della cronologia guild:
Contesto della cronologia del server:
- `channels.discord.historyLimit` predefinito `20`
- fallback: `messages.groupChat.historyLimit`
@ -651,26 +652,26 @@ Impostazioni predefinite dei comandi slash:
Comportamento dei thread:
- i thread Discord vengono instradati come sessioni canale
- i thread Discord vengono instradati come sessioni di canale
- i metadati del thread padre possono essere usati per il collegamento alla sessione padre
- la configurazione del thread eredita quella del canale padre, a meno che non esista una voce specifica per il thread
- la configurazione del thread eredita la configurazione del canale padre, a meno che non esista una voce specifica per il thread
I topic dei canali vengono iniettati come contesto **non attendibile** (non come system prompt).
Il contesto delle risposte e dei messaggi citati al momento resta così come ricevuto.
Le allowlist di Discord regolano principalmente chi può attivare l'agente, non costituiscono un confine completo di redazione del contesto supplementare.
I topic dei canali vengono iniettati come contesto **non attendibile** (non come prompt di sistema).
Il contesto di risposta e dei messaggi citati al momento rimane così come ricevuto.
Le allowlist Discord servono principalmente a controllare chi può attivare l'agente, non rappresentano un confine completo di redazione del contesto supplementare.
</Accordion>
<Accordion title="Sessioni associate ai thread per subagent">
Discord può associare un thread a un target di sessione così che i messaggi successivi in quel thread continuino a essere instradati alla stessa sessione (incluse le sessioni subagent).
<Accordion title="Sessioni vincolate al thread per i sottoagenti">
Discord può associare un thread a un target di sessione così che i messaggi successivi in quel thread continuino a essere instradati verso la stessa sessione (incluse le sessioni dei sottoagenti).
Comandi:
- `/focus <target>` associa il thread corrente/nuovo a un target subagent/sessione
- `/focus <target>` associa il thread corrente/nuovo a un target di sottoagente/sessione
- `/unfocus` rimuove l'associazione del thread corrente
- `/agents` mostra le esecuzioni attive e lo stato delle associazioni
- `/session idle <duration|off>` ispeziona/aggiorna il disaccoppiamento automatico per inattività delle associazioni focalizzate
- `/session max-age <duration|off>` ispeziona/aggiorna l'età massima rigida per le associazioni focalizzate
- `/agents` mostra le esecuzioni attive e lo stato dell'associazione
- `/session idle <duration|off>` ispeziona/aggiorna la rimozione automatica dell'associazione per inattività per i binding focalizzati
- `/session max-age <duration|off>` ispeziona/aggiorna l'età massima rigida per i binding focalizzati
Configurazione:
@ -699,23 +700,23 @@ Impostazioni predefinite dei comandi slash:
Note:
- `session.threadBindings.*` imposta i valori predefiniti globali.
- `channels.discord.threadBindings.*` sovrascrive il comportamento di Discord.
- `channels.discord.threadBindings.*` sovrascrive il comportamento Discord.
- `spawnSubagentSessions` deve essere true per creare/associare automaticamente thread per `sessions_spawn({ thread: true })`.
- `spawnAcpSessions` deve essere true per creare/associare automaticamente thread per ACP (`/acp spawn ... --thread ...` o `sessions_spawn({ runtime: "acp", thread: true })`).
- Se le associazioni dei thread sono disabilitate per un account, `/focus` e le relative operazioni sulle associazioni dei thread non sono disponibili.
- Se i binding dei thread sono disabilitati per un account, `/focus` e le relative operazioni di binding del thread non sono disponibili.
Vedi [Sub-agents](/it/tools/subagents), [ACP Agents](/it/tools/acp-agents) e [Configuration Reference](/it/gateway/configuration-reference).
Vedi [Sottoagenti](/it/tools/subagents), [Agenti ACP](/it/tools/acp-agents) e [Riferimento configurazione](/it/gateway/configuration-reference).
</Accordion>
<Accordion title="Associazioni persistenti dei canali ACP">
Per workspace ACP stabili e “always-on”, configura associazioni ACP tipizzate di livello superiore che puntano alle conversazioni Discord.
<Accordion title="Binding persistenti del canale ACP">
Per spazi di lavoro ACP stabili "sempre attivi", configura binding ACP tipizzati di livello superiore che puntano a conversazioni Discord.
Percorso di configurazione:
- `bindings[]` con `type: "acp"` e `match.channel: "discord"`
- `bindings[]` con `type: "acp"` e `match.channel: "discord"`
Esempio:
Esempio:
```json5
{
@ -765,20 +766,20 @@ Impostazioni predefinite dei comandi slash:
Note:
- `/acp spawn codex --bind here` associa il canale o thread Discord corrente sul posto e mantiene i messaggi futuri instradati alla stessa sessione ACP.
- Questo può comunque significare “avvia una nuova sessione ACP Codex”, ma non crea da solo un nuovo thread Discord. Il canale esistente resta la superficie della chat.
- `/acp spawn codex --bind here` associa il canale o thread Discord corrente sul posto e mantiene i messaggi futuri instradati verso la stessa sessione ACP.
- Questo può comunque significare "avvia una nuova sessione ACP Codex", ma non crea di per sé un nuovo thread Discord. Il canale esistente resta la superficie di chat.
- Codex può comunque essere eseguito nel proprio `cwd` o workspace backend su disco. Quel workspace è stato di runtime, non un thread Discord.
- I messaggi dei thread possono ereditare l'associazione ACP del canale padre.
- In un canale o thread associato, `/new` e `/reset` reimpostano sul posto la stessa sessione ACP.
- Le associazioni temporanee dei thread continuano a funzionare e possono sovrascrivere la risoluzione del target mentre sono attive.
- I messaggi del thread possono ereditare il binding ACP del canale padre.
- In un canale o thread associato, `/new` e `/reset` reimpostano la stessa sessione ACP sul posto.
- I binding temporanei del thread continuano a funzionare e possono sovrascrivere la risoluzione del target mentre sono attivi.
- `spawnAcpSessions` è richiesto solo quando OpenClaw deve creare/associare un thread figlio tramite `--thread auto|here`. Non è richiesto per `/acp spawn ... --bind here` nel canale corrente.
Vedi [ACP Agents](/it/tools/acp-agents) per i dettagli sul comportamento delle associazioni.
Vedi [Agenti ACP](/it/tools/acp-agents) per i dettagli sul comportamento dei binding.
</Accordion>
<Accordion title="Notifiche di reazione">
Modalità di notifica delle reazioni per guild:
<Accordion title="Notifiche reazioni">
Modalità di notifica delle reazioni per server:
- `off`
- `own` (predefinito)
@ -790,14 +791,14 @@ Impostazioni predefinite dei comandi slash:
</Accordion>
<Accordion title="Reazioni di conferma">
`ackReaction` invia un'emoji di conferma mentre OpenClaw sta elaborando un messaggio in ingresso.
`ackReaction` invia un'emoji di conferma mentre OpenClaw elabora un messaggio in ingresso.
Ordine di risoluzione:
- `channels.discord.accounts.<accountId>.ackReaction`
- `channels.discord.ackReaction`
- `messages.ackReaction`
- fallback emoji dell'identità dell'agente (`agents.list[].identity.emoji`, altrimenti "👀")
- fallback emoji identità agente (`agents.list[].identity.emoji`, altrimenti "👀")
Note:
@ -825,8 +826,8 @@ Impostazioni predefinite dei comandi slash:
</Accordion>
<Accordion title="Proxy del gateway">
Instrada il traffico WebSocket del gateway Discord e le ricerche REST iniziali (ID applicazione + risoluzione allowlist) tramite un proxy HTTP(S) con `channels.discord.proxy`.
<Accordion title="Proxy Gateway">
Instrada il traffico WebSocket del gateway Discord e le ricerche REST di avvio (ID applicazione + risoluzione allowlist) tramite un proxy HTTP(S) con `channels.discord.proxy`.
```json5
{
@ -876,13 +877,13 @@ Impostazioni predefinite dei comandi slash:
- le allowlist possono usare `pk:<memberId>`
- i nomi visualizzati dei membri vengono associati per nome/slug solo quando `channels.discord.dangerouslyAllowNameMatching: true`
- le ricerche usano l'ID messaggio originale e sono vincolate nel tempo
- le ricerche usano l'ID del messaggio originale e sono limitate da una finestra temporale
- se la ricerca fallisce, i messaggi proxati vengono trattati come messaggi del bot e scartati a meno che `allowBots=true`
</Accordion>
<Accordion title="Configurazione della presenza">
Gli aggiornamenti di presenza vengono applicati quando imposti un campo di stato o attività, oppure quando abiliti la presenza automatica.
<Accordion title="Configurazione presenza">
Gli aggiornamenti della presenza vengono applicati quando imposti un campo di stato o attività, oppure quando abiliti la presenza automatica.
Esempio solo stato:
@ -915,7 +916,7 @@ Impostazioni predefinite dei comandi slash:
{
channels: {
discord: {
activity: "Coding live",
activity: "Programmazione live",
activityType: 1,
activityUrl: "https://twitch.tv/openclaw",
},
@ -925,12 +926,12 @@ Impostazioni predefinite dei comandi slash:
Mappa dei tipi di attività:
- 0: Playing
- 1: Streaming (richiede `activityUrl`)
- 2: Listening
- 3: Watching
- 4: Custom (usa il testo dell'attività come stato; l'emoji è facoltativa)
- 5: Competing
- 0: In gioco
- 1: In streaming (richiede `activityUrl`)
- 2: In ascolto
- 3: In visione
- 4: Personalizzata (usa il testo dell'attività come stato; l'emoji è facoltativa)
- 5: In competizione
Esempio presenza automatica (segnale di integrità del runtime):
@ -949,7 +950,7 @@ Impostazioni predefinite dei comandi slash:
}
```
La presenza automatica mappa la disponibilità del runtime allo stato Discord: healthy => online, degraded o unknown => idle, exhausted o unavailable => dnd. Override testuali facoltativi:
La presenza automatica mappa la disponibilità del runtime sullo stato Discord: healthy => online, degraded o unknown => idle, exhausted o unavailable => dnd. Override di testo facoltativi:
- `autoPresence.healthyText`
- `autoPresence.degradedText`
@ -958,41 +959,41 @@ Impostazioni predefinite dei comandi slash:
</Accordion>
<Accordion title="Approvazioni in Discord">
Discord supporta la gestione delle approvazioni tramite pulsanti nei DM e può facoltativamente pubblicare richieste di approvazione nel canale di origine.
Discord supporta la gestione delle approvazioni basata su pulsanti nei DM e può facoltativamente pubblicare i prompt di approvazione nel canale di origine.
Percorso di configurazione:
- `channels.discord.execApprovals.enabled`
- `channels.discord.execApprovals.approvers` (facoltativo; usa `commands.ownerAllowFrom` come fallback quando possibile)
- `channels.discord.execApprovals.approvers` (facoltativo; usa come fallback `commands.ownerAllowFrom` quando possibile)
- `channels.discord.execApprovals.target` (`dm` | `channel` | `both`, predefinito: `dm`)
- `agentFilter`, `sessionFilter`, `cleanupAfterResolve`
Discord abilita automaticamente le approvazioni exec native quando `enabled` non è impostato o vale `"auto"` e può essere risolto almeno un approvatore, sia da `execApprovals.approvers` sia da `commands.ownerAllowFrom`. Discord non deduce gli approvatori exec da `allowFrom` del canale, da `dm.allowFrom` legacy o da `defaultTo` dei messaggi diretti. Imposta `enabled: false` per disabilitare esplicitamente Discord come client di approvazione nativo.
Discord abilita automaticamente le approvazioni exec native quando `enabled` non è impostato oppure è `"auto"` e può essere risolto almeno un approvatore, da `execApprovals.approvers` oppure da `commands.ownerAllowFrom`. Discord non deduce gli approvatori exec da `allowFrom` del canale, da `dm.allowFrom` legacy o da `defaultTo` del messaggio diretto. Imposta `enabled: false` per disabilitare esplicitamente Discord come client di approvazione nativo.
Quando `target` è `channel` o `both`, la richiesta di approvazione è visibile nel canale. Solo gli approvatori risolti possono usare i pulsanti; gli altri utenti ricevono un rifiuto effimero. Le richieste di approvazione includono il testo del comando, quindi abilita la consegna nel canale solo in canali fidati. Se l'ID canale non può essere ricavato dalla chiave della sessione, OpenClaw torna alla consegna via DM.
Quando `target` è `channel` o `both`, il prompt di approvazione è visibile nel canale. Solo gli approvatori risolti possono usare i pulsanti; gli altri utenti ricevono un rifiuto effimero. I prompt di approvazione includono il testo del comando, quindi abilita la consegna nel canale solo in canali fidati. Se l'ID canale non può essere derivato dalla chiave di sessione, OpenClaw usa come fallback la consegna via DM.
Discord rende anche i pulsanti di approvazione condivisi usati da altri canali di chat. L'adapter nativo Discord aggiunge principalmente l'instradamento DM degli approvatori e il fanout sul canale.
Quando questi pulsanti sono presenti, rappresentano la UX di approvazione primaria; OpenClaw
dovrebbe includere un comando manuale `/approve` solo quando il risultato dello strumento indica
Discord esegue anche il rendering dei pulsanti di approvazione condivisi usati da altri canali chat. L'adapter nativo Discord aggiunge principalmente l'instradamento DM degli approvatori e la distribuzione sul canale.
Quando quei pulsanti sono presenti, sono la UX primaria per l'approvazione; OpenClaw
dovrebbe includere un comando manuale `/approve` solo quando il risultato dello strumento dice
che le approvazioni in chat non sono disponibili o che l'approvazione manuale è l'unico percorso.
L'autenticazione gateway per questo handler usa lo stesso contratto condiviso di risoluzione delle credenziali degli altri client Gateway:
L'autenticazione Gateway per questo gestore usa lo stesso contratto condiviso di risoluzione delle credenziali degli altri client Gateway:
- autenticazione locale env-first (`OPENCLAW_GATEWAY_TOKEN` / `OPENCLAW_GATEWAY_PASSWORD` poi `gateway.auth.*`)
- in modalità locale, `gateway.remote.*` può essere usato come fallback solo quando `gateway.auth.*` non è impostato; SecretRef locali configurati ma non risolti falliscono in modalità chiusa
- in modalità locale, `gateway.remote.*` può essere usato come fallback solo quando `gateway.auth.*` non è impostato; i SecretRef locali configurati ma non risolti falliscono in modalità chiusa
- supporto modalità remota tramite `gateway.remote.*` quando applicabile
- gli override URL sono sicuri rispetto agli override: gli override CLI non riutilizzano credenziali implicite e gli override env usano solo credenziali env
Comportamento di risoluzione delle approvazioni:
Comportamento della risoluzione delle approvazioni:
- Gli ID con prefisso `plugin:` vengono risolti tramite `plugin.approval.resolve`.
- Gli altri ID vengono risolti tramite `exec.approval.resolve`.
- Discord non esegue qui un ulteriore fallback da exec a plugin; il
prefisso dell'id decide quale metodo gateway chiamare.
- Qui Discord non effettua un ulteriore fallback da exec a plugin; il
prefisso dell'ID decide quale metodo Gateway chiamare.
Le approvazioni exec scadono dopo 30 minuti per impostazione predefinita. Se le approvazioni falliscono con
ID approvazione sconosciuti, verifica la risoluzione degli approvatori, l'abilitazione della funzionalità e
che il tipo di id approvazione consegnato corrisponda alla richiesta in sospeso.
ID di approvazione sconosciuti, verifica la risoluzione dell'approvatore, l'abilitazione della funzionalità e
che il tipo di ID approvazione consegnato corrisponda alla richiesta in sospeso.
Documentazione correlata: [Approvazioni exec](/it/tools/exec-approvals)
@ -1010,7 +1011,7 @@ Esempi principali:
- moderazione: `timeout`, `kick`, `ban`
- presenza: `setPresence`
L'azione `event-create` accetta un parametro facoltativo `image` (URL o percorso file locale) per impostare l'immagine di copertina dell'evento pianificato.
L'azione `event-create` accetta un parametro facoltativo `image` (URL o percorso di file locale) per impostare l'immagine di copertina dell'evento programmato.
I gate delle azioni si trovano sotto `channels.discord.actions.*`.
@ -1018,18 +1019,18 @@ Comportamento predefinito dei gate:
| Gruppo di azioni | Predefinito |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------- |
| reactions, messages, threads, pins, polls, search, memberInfo, roleInfo, channelInfo, channels, voiceStatus, events, stickers, emojiUploads, stickerUploads, permissions | abilitato |
| roles | disabilitato |
| moderation | disabilitato |
| presence | disabilitato |
| reactions, messages, threads, pins, polls, search, memberInfo, roleInfo, channelInfo, channels, voiceStatus, events, stickers, emojiUploads, stickerUploads, permissions | enabled |
| roles | disabled |
| moderation | disabled |
| presence | disabled |
## UI components v2
## Interfaccia Components v2
OpenClaw usa Discord components v2 per le approvazioni exec e i marcatori cross-context. Le azioni dei messaggi Discord possono anche accettare `components` per UI personalizzate (avanzato; richiede la costruzione di un payload dei componenti tramite lo strumento discord), mentre i `embeds` legacy restano disponibili ma non sono consigliati.
OpenClaw usa i componenti Discord v2 per le approvazioni exec e i marker cross-context. Le azioni dei messaggi Discord possono anche accettare `components` per un'interfaccia personalizzata (avanzato; richiede la costruzione di un payload componente tramite lo strumento discord), mentre i `embeds` legacy restano disponibili ma non sono consigliati.
- `channels.discord.ui.components.accentColor` imposta il colore di accento usato dai contenitori dei componenti Discord (hex).
- Imposta per account con `channels.discord.accounts.<id>.ui.components.accentColor`.
- `embeds` vengono ignorati quando sono presenti components v2.
- Impostalo per account con `channels.discord.accounts.<id>.ui.components.accentColor`.
- `embeds` vengono ignorati quando sono presenti componenti v2.
Esempio:
@ -1049,17 +1050,17 @@ Esempio:
## Canali vocali
OpenClaw può unirsi ai canali vocali Discord per conversazioni in tempo reale e continue. Questo è separato dagli allegati dei messaggi vocali.
OpenClaw può unirsi ai canali vocali Discord per conversazioni in tempo reale e continue. Questa funzionalità è separata dagli allegati di messaggi vocali.
Requisiti:
- Abilita i comandi nativi (`commands.native` o `channels.discord.commands.native`).
- Configura `channels.discord.voice`.
- Il bot necessita dei permessi Connect + Speak nel canale vocale di destinazione.
- Il bot deve avere i permessi Connect + Speak nel canale vocale di destinazione.
Usa il comando nativo solo Discord `/vc join|leave|status` per controllare le sessioni. Il comando usa l'agente predefinito dell'account e segue le stesse regole di allowlist e group policy degli altri comandi Discord.
Esempio di join automatico:
Esempio di unione automatica:
```json5
{
@ -1088,20 +1089,20 @@ Esempio di join automatico:
Note:
- `voice.tts` sovrascrive `messages.tts` solo per la riproduzione vocale.
- I turni di trascrizione vocale derivano lo stato owner da Discord `allowFrom` (o `dm.allowFrom`); i parlanti non owner non possono accedere agli strumenti riservati agli owner (ad esempio `gateway` e `cron`).
- I turni di trascrizione vocale derivano lo stato di proprietario da Discord `allowFrom` (o `dm.allowFrom`); i parlanti non proprietari non possono accedere agli strumenti riservati al proprietario (ad esempio `gateway` e `cron`).
- Voice è abilitato per impostazione predefinita; imposta `channels.discord.voice.enabled=false` per disabilitarlo.
- `voice.daveEncryption` e `voice.decryptionFailureTolerance` vengono passati alle opzioni di join di `@discordjs/voice`.
- I valori predefiniti di `@discordjs/voice` sono `daveEncryption=true` e `decryptionFailureTolerance=24` se non impostati.
- OpenClaw monitora anche i fallimenti di decrittazione in ricezione e si ripristina automaticamente uscendo e rientrando nel canale vocale dopo fallimenti ripetuti in una finestra temporale breve.
- Se i log in ricezione mostrano ripetutamente `DecryptionFailed(UnencryptedWhenPassthroughDisabled)`, potrebbe trattarsi del bug di ricezione upstream `@discordjs/voice` tracciato in [discord.js #11419](https://github.com/discordjs/discord.js/issues/11419).
- OpenClaw monitora anche gli errori di decrittazione in ricezione e si ripristina automaticamente uscendo e rientrando nel canale vocale dopo errori ripetuti in una breve finestra temporale.
- Se i log di ricezione mostrano ripetutamente `DecryptionFailed(UnencryptedWhenPassthroughDisabled)`, potrebbe trattarsi del bug upstream di ricezione di `@discordjs/voice` tracciato in [discord.js #11419](https://github.com/discordjs/discord.js/issues/11419).
## Messaggi vocali
I messaggi vocali Discord mostrano un'anteprima della forma d'onda e richiedono audio OGG/Opus più metadati. OpenClaw genera automaticamente la forma d'onda, ma richiede che `ffmpeg` e `ffprobe` siano disponibili sull'host gateway per ispezionare e convertire i file audio.
I messaggi vocali Discord mostrano un'anteprima della forma d'onda e richiedono audio OGG/Opus più metadati. OpenClaw genera automaticamente la forma d'onda, ma ha bisogno che `ffmpeg` e `ffprobe` siano disponibili sull'host del gateway per ispezionare e convertire i file audio.
Requisiti e vincoli:
- Fornisci un **percorso file locale** (gli URL vengono rifiutati).
- Fornisci un **percorso di file locale** (gli URL vengono rifiutati).
- Ometti il contenuto testuale (Discord non consente testo + messaggio vocale nello stesso payload).
- Qualsiasi formato audio è accettato; OpenClaw lo converte in OGG/Opus quando necessario.
@ -1114,19 +1115,19 @@ message(action="send", channel="discord", target="channel:123", path="/path/to/a
## Risoluzione dei problemi
<AccordionGroup>
<Accordion title="Sono stati usati intent non consentiti oppure il bot non vede messaggi guild">
<Accordion title="Usati intent non consentiti oppure il bot non vede messaggi del server">
- abilita Message Content Intent
- abilita Server Members Intent quando dipendi dalla risoluzione utente/membro
- riavvia il gateway dopo aver cambiato gli intent
- abilita Server Members Intent quando dipendi dalla risoluzione di utente/membro
- riavvia il gateway dopo aver modificato gli intent
</Accordion>
<Accordion title="Messaggi guild bloccati in modo imprevisto">
<Accordion title="Messaggi del server bloccati in modo imprevisto">
- verifica `groupPolicy`
- verifica l'allowlist guild sotto `channels.discord.guilds`
- se esiste la mappa guild `channels`, sono consentiti solo i canali elencati
- verifica la allowlist del server in `channels.discord.guilds`
- se esiste la mappa `guild channels`, sono consentiti solo i canali elencati
- verifica il comportamento di `requireMention` e i pattern di menzione
Controlli utili:
@ -1142,9 +1143,9 @@ openclaw logs --follow
<Accordion title="Require mention false ma ancora bloccato">
Cause comuni:
- `groupPolicy="allowlist"` senza allowlist guild/canale corrispondente
- `requireMention` configurato nel posto sbagliato (deve trovarsi sotto `channels.discord.guilds` o nella voce del canale)
- mittente bloccato dall'allowlist `users` di guild/canale
- `groupPolicy="allowlist"` senza una allowlist corrispondente di server/canale
- `requireMention` configurato nel punto sbagliato (deve trovarsi sotto `channels.discord.guilds` o nella voce del canale)
- mittente bloccato dalla allowlist `users` del server/canale
</Accordion>
@ -1156,12 +1157,12 @@ openclaw logs --follow
- `Slow listener detected ...`
- `discord inbound worker timed out after ...`
Manopola del budget del listener:
Parametro del budget del listener:
- account singolo: `channels.discord.eventQueue.listenerTimeout`
- multi-account: `channels.discord.accounts.<accountId>.eventQueue.listenerTimeout`
Manopola del timeout di esecuzione del worker:
Parametro del timeout di esecuzione del worker:
- account singolo: `channels.discord.inboundWorker.runTimeoutMs`
- multi-account: `channels.discord.accounts.<accountId>.inboundWorker.runTimeoutMs`
@ -1196,7 +1197,7 @@ openclaw logs --follow
<Accordion title="Incongruenze nell'audit dei permessi">
I controlli dei permessi di `channels status --probe` funzionano solo per ID canale numerici.
Se usi chiavi slug, la corrispondenza a runtime può comunque funzionare, ma il probe non può verificare completamente i permessi.
Se usi chiavi slug, la corrispondenza a runtime può comunque funzionare, ma la probe non può verificare completamente i permessi.
</Accordion>
@ -1208,23 +1209,23 @@ openclaw logs --follow
</Accordion>
<Accordion title="Loop bot a bot">
Per impostazione predefinita i messaggi scritti dai bot vengono ignorati.
<Accordion title="Loop bot con bot">
Per impostazione predefinita, i messaggi creati da bot vengono ignorati.
Se imposti `channels.discord.allowBots=true`, usa regole rigorose di menzione e allowlist per evitare comportamenti a loop.
Preferisci `channels.discord.allowBots="mentions"` per accettare solo messaggi bot che menzionano il bot.
Preferisci `channels.discord.allowBots="mentions"` per accettare solo messaggi di bot che menzionano il bot.
</Accordion>
<Accordion title="La STT vocale perde messaggi con DecryptionFailed(...)">
<Accordion title="Le STT vocali vengono perse con DecryptionFailed(...)">
- mantieni OpenClaw aggiornato (`openclaw update`) così la logica di recupero della ricezione vocale Discord sia presente
- mantieni OpenClaw aggiornato (`openclaw update`) in modo che sia presente la logica di recupero ricezione voce Discord
- conferma `channels.discord.voice.daveEncryption=true` (predefinito)
- parti da `channels.discord.voice.decryptionFailureTolerance=24` (predefinito upstream) e regolalo solo se necessario
- osserva i log per:
- parti da `channels.discord.voice.decryptionFailureTolerance=24` (valore predefinito upstream) e regolalo solo se necessario
- monitora i log per:
- `discord voice: DAVE decrypt failures detected`
- `discord voice: repeated decrypt failures; attempting rejoin`
- se i fallimenti continuano dopo il rientro automatico, raccogli i log e confrontali con [discord.js #11419](https://github.com/discordjs/discord.js/issues/11419)
- se gli errori continuano dopo il rientro automatico, raccogli i log e confrontali con [discord.js #11419](https://github.com/discordjs/discord.js/issues/11419)
</Accordion>
</AccordionGroup>
@ -1233,20 +1234,20 @@ openclaw logs --follow
Riferimento principale:
- [Riferimento di configurazione - Discord](/it/gateway/configuration-reference#discord)
- [Riferimento configurazione - Discord](/it/gateway/configuration-reference#discord)
Campi Discord ad alto segnale:
- avvio/autenticazione: `enabled`, `token`, `accounts.*`, `allowBots`
- criterio: `groupPolicy`, `dm.*`, `guilds.*`, `guilds.*.channels.*`
- criteri: `groupPolicy`, `dm.*`, `guilds.*`, `guilds.*.channels.*`
- comandi: `commands.native`, `commands.useAccessGroups`, `configWrites`, `slashCommand.*`
- coda eventi: `eventQueue.listenerTimeout` (budget del listener), `eventQueue.maxQueueSize`, `eventQueue.maxConcurrency`
- coda eventi: `eventQueue.listenerTimeout` (budget listener), `eventQueue.maxQueueSize`, `eventQueue.maxConcurrency`
- worker in ingresso: `inboundWorker.runTimeoutMs`
- risposta/cronologia: `replyToMode`, `historyLimit`, `dmHistoryLimit`, `dms.*.historyLimit`
- consegna: `textChunkLimit`, `chunkMode`, `maxLinesPerMessage`
- streaming: `streaming` (alias legacy: `streamMode`), `draftChunk`, `blockStreaming`, `blockStreamingCoalesce`
- streaming: `streaming` (alias legacy: `streamMode`), `streaming.preview.toolProgress`, `draftChunk`, `blockStreaming`, `blockStreamingCoalesce`
- media/retry: `mediaMaxMb`, `retry`
- `mediaMaxMb` limita gli upload Discord in uscita (predefinito: `100MB`)
- `mediaMaxMb` limita i caricamenti Discord in uscita (predefinito: `100MB`)
- azioni: `actions.*`
- presenza: `activity`, `status`, `activityType`, `activityUrl`
- UI: `ui.components.accentColor`
@ -1254,7 +1255,7 @@ Campi Discord ad alto segnale:
## Sicurezza e operazioni
- Tratta i token dei bot come segreti (`DISCORD_BOT_TOKEN` preferito negli ambienti supervisionati).
- Tratta i token bot come segreti (`DISCORD_BOT_TOKEN` preferito negli ambienti supervisionati).
- Concedi i permessi Discord minimi necessari.
- Se il deploy/stato dei comandi è obsoleto, riavvia il gateway e ricontrolla con `openclaw channels status --probe`.
@ -1264,6 +1265,6 @@ Campi Discord ad alto segnale:
- [Gruppi](/it/channels/groups)
- [Instradamento del canale](/it/channels/channel-routing)
- [Sicurezza](/it/gateway/security)
- [Instradamento multi-agent](/it/concepts/multi-agent)
- [Instradamento multi-agente](/it/concepts/multi-agent)
- [Risoluzione dei problemi](/it/channels/troubleshooting)
- [Comandi slash](/it/tools/slash-commands)

View File

@ -1,20 +1,20 @@
---
read_when:
- Configurare Slack o eseguire il debug della modalità socket/HTTP di Slack
- Configurazione di Slack o debug della modalità socket/HTTP di Slack
summary: Configurazione di Slack e comportamento in fase di esecuzione (Socket Mode + URL di richiesta HTTP)
title: Slack
x-i18n:
generated_at: "2026-04-21T13:35:23Z"
generated_at: "2026-04-21T17:45:33Z"
model: gpt-5.4
provider: openai
source_hash: 2fe3c3c344e1c20c09b29773f4f68d2790751e76d8bbaa3c6157e3ff75978acf
source_hash: f30b372a3ae10b7b649532181306e42792aca76b41422516e9633eb79f73f009
source_path: channels/slack.md
workflow: 15
---
# Slack
Stato: pronto per la produzione per DM + canali tramite integrazioni dell'app Slack. La modalità predefinita è Socket Mode; sono supportate anche le URL di richiesta HTTP.
Stato: pronto per la produzione per DM + canali tramite integrazioni dellapp Slack. La modalità predefinita è Socket Mode; sono supportati anche gli URL di richiesta HTTP.
<CardGroup cols={3}>
<Card title="Abbinamento" icon="link" href="/it/channels/pairing">
@ -24,7 +24,7 @@ Stato: pronto per la produzione per DM + canali tramite integrazioni dell'app Sl
Comportamento nativo dei comandi e catalogo dei comandi.
</Card>
<Card title="Risoluzione dei problemi del canale" icon="wrench" href="/it/channels/troubleshooting">
Diagnostica tra canali e playbook di riparazione.
Diagnostica cross-channel e playbook di riparazione.
</Card>
</CardGroup>
@ -34,12 +34,12 @@ Stato: pronto per la produzione per DM + canali tramite integrazioni dell'app Sl
<Tab title="Socket Mode (predefinita)">
<Steps>
<Step title="Crea una nuova app Slack">
Nelle impostazioni dell'app Slack premi il pulsante **[Create New App](https://api.slack.com/apps/new)**:
Nelle impostazioni dellapp Slack premi il pulsante **[Create New App](https://api.slack.com/apps/new)**:
- scegli **from a manifest** e seleziona uno spazio di lavoro per la tua app
- incolla il [manifesto di esempio](#manifest-and-scope-checklist) qui sotto e continua con la creazione
- incolla il [manifest di esempio](#manifest-and-scope-checklist) qui sotto e continua con la creazione
- genera un **App-Level Token** (`xapp-...`) con `connections:write`
- installa l'app e copia il **Bot Token** (`xoxb-...`) mostrato
- installa lapp e copia il **Bot Token** (`xoxb-...`) mostrato
</Step>
<Step title="Configura OpenClaw">
@ -57,7 +57,7 @@ Stato: pronto per la produzione per DM + canali tramite integrazioni dell'app Sl
}
```
Variabili d'ambiente di fallback (solo account predefinito):
Variabile dambiente di fallback (solo account predefinito):
```bash
SLACK_APP_TOKEN=xapp-...
@ -80,12 +80,12 @@ openclaw gateway
<Tab title="URL di richiesta HTTP">
<Steps>
<Step title="Crea una nuova app Slack">
Nelle impostazioni dell'app Slack premi il pulsante **[Create New App](https://api.slack.com/apps/new)**:
Nelle impostazioni dellapp Slack premi il pulsante **[Create New App](https://api.slack.com/apps/new)**:
- scegli **from a manifest** e seleziona uno spazio di lavoro per la tua app
- incolla il [manifesto di esempio](#manifest-and-scope-checklist) e aggiorna le URL prima della creazione
- incolla il [manifest di esempio](#manifest-and-scope-checklist) e aggiorna gli URL prima della creazione
- salva il **Signing Secret** per la verifica delle richieste
- installa l'app e copia il **Bot Token** (`xoxb-...`) mostrato
- installa lapp e copia il **Bot Token** (`xoxb-...`) mostrato
</Step>
@ -106,9 +106,9 @@ openclaw gateway
```
<Note>
Usa percorsi Webhook univoci per HTTP multi-account
Usa percorsi webhook univoci per HTTP multi-account
Assegna a ogni account un `webhookPath` distinto (predefinito `/slack/events`) in modo che le registrazioni non entrino in conflitto.
Assegna a ogni account un `webhookPath` distinto (predefinito `/slack/events`) in modo che le registrazioni non vadano in conflitto.
</Note>
</Step>
@ -125,7 +125,7 @@ openclaw gateway
</Tab>
</Tabs>
## Checklist di manifesto e ambiti
## Checklist di manifest e scope
<Tabs>
<Tab title="Socket Mode (predefinita)">
@ -289,19 +289,19 @@ openclaw gateway
</Tab>
</Tabs>
### Impostazioni aggiuntive del manifesto
### Impostazioni aggiuntive del manifest
Espongono diverse funzionalità che estendono i valori predefiniti sopra indicati.
Espongono funzionalità diverse che estendono i valori predefiniti sopra indicati.
<AccordionGroup>
<Accordion title="Comandi slash nativi facoltativi">
<Accordion title="Comandi slash nativi opzionali">
È possibile usare più [comandi slash nativi](#commands-and-slash-behavior) invece di un singolo comando configurato, con alcune sfumature:
- Usa `/agentstatus` invece di `/status` perché il comando `/status` è riservato.
- Non è possibile rendere disponibili più di 25 comandi slash contemporaneamente.
- Non possono essere resi disponibili più di 25 comandi slash contemporaneamente.
Sostituisci la sezione esistente `features.slash_commands` con un sottoinsieme dei [comandi disponibili](/it/tools/slash-commands#command-list):
Sostituisci la sezione `features.slash_commands` esistente con un sottoinsieme dei [comandi disponibili](/it/tools/slash-commands#command-list):
<Tabs>
<Tab title="Socket Mode (predefinita)">
@ -443,7 +443,7 @@ Espongono diverse funzionalità che estendono i valori predefiniti sopra indicat
},
{
"command": "/stop",
"description": "Interrompi l'esecuzione corrente",
"description": "Interrompi lesecuzione corrente",
"url": "https://gateway-host.example.com/slack/events"
},
{
@ -454,13 +454,13 @@ Espongono diverse funzionalità che estendono i valori predefiniti sopra indicat
},
{
"command": "/think",
"description": "Imposta il livello di pensiero",
"description": "Imposta il livello di ragionamento",
"usage_hint": "<level>",
"url": "https://gateway-host.example.com/slack/events"
},
{
"command": "/verbose",
"description": "Attiva o disattiva l'output dettagliato",
"description": "Attiva/disattiva loutput dettagliato",
"usage_hint": "on|off|full",
"url": "https://gateway-host.example.com/slack/events"
},
@ -472,13 +472,13 @@ Espongono diverse funzionalità che estendono i valori predefiniti sopra indicat
},
{
"command": "/reasoning",
"description": "Attiva o disattiva la visibilità del ragionamento",
"description": "Attiva/disattiva la visibilità del ragionamento",
"usage_hint": "[on|off|stream]",
"url": "https://gateway-host.example.com/slack/events"
},
{
"command": "/elevated",
"description": "Attiva o disattiva la modalità elevata",
"description": "Attiva/disattiva la modalità elevata",
"usage_hint": "[on|off|ask|full]",
"url": "https://gateway-host.example.com/slack/events"
},
@ -496,7 +496,7 @@ Espongono diverse funzionalità che estendono i valori predefiniti sopra indicat
},
{
"command": "/models",
"description": "Elenca i provider o i modelli per un provider",
"description": "Elenca i provider o i modelli di un provider",
"usage_hint": "[provider] [page] [limit=<n>|size=<n>|all]",
"url": "https://gateway-host.example.com/slack/events"
},
@ -512,13 +512,13 @@ Espongono diverse funzionalità che estendono i valori predefiniti sopra indicat
},
{
"command": "/tools",
"description": "Mostra ciò che l'agente corrente può usare in questo momento",
"description": "Mostra cosa può usare in questo momento lagente corrente",
"usage_hint": "[compact|verbose]",
"url": "https://gateway-host.example.com/slack/events"
},
{
"command": "/agentstatus",
"description": "Mostra lo stato di runtime, incluso l'uso/la quota del provider quando disponibile",
"description": "Mostra lo stato di runtime, incluso lutilizzo/la quota del provider quando disponibile",
"url": "https://gateway-host.example.com/slack/events"
},
{
@ -534,7 +534,7 @@ Espongono diverse funzionalità che estendono i valori predefiniti sopra indicat
},
{
"command": "/whoami",
"description": "Mostra la tua identità mittente",
"description": "Mostra la tua identità del mittente",
"url": "https://gateway-host.example.com/slack/events"
},
{
@ -551,7 +551,7 @@ Espongono diverse funzionalità che estendono i valori predefiniti sopra indicat
},
{
"command": "/usage",
"description": "Controlla il piè di pagina di utilizzo o mostra il riepilogo dei costi",
"description": "Controlla il piè di pagina dellutilizzo o mostra il riepilogo dei costi",
"usage_hint": "off|tokens|full|cost",
"url": "https://gateway-host.example.com/slack/events"
}
@ -562,14 +562,14 @@ Espongono diverse funzionalità che estendono i valori predefiniti sopra indicat
</Tabs>
</Accordion>
<Accordion title="Ambiti di attribuzione facoltativi (operazioni di scrittura)">
Aggiungi l'ambito bot `chat:write.customize` se vuoi che i messaggi in uscita usino l'identità dell'agente attivo (nome utente e icona personalizzati) invece dell'identità predefinita dell'app Slack.
<Accordion title="Scope di authoring opzionali (operazioni di scrittura)">
Aggiungi lo scope bot `chat:write.customize` se vuoi che i messaggi in uscita usino lidentità dellagente attivo (nome utente e icona personalizzati) invece dellidentità predefinita dellapp Slack.
Se usi un'icona emoji, Slack si aspetta la sintassi `:emoji_name:`.
Se usi unicona emoji, Slack si aspetta la sintassi `:emoji_name:`.
</Accordion>
<Accordion title="Ambiti facoltativi del token utente (operazioni di lettura)">
Se configuri `channels.slack.userToken`, gli ambiti di lettura tipici sono:
<Accordion title="Scope opzionali del token utente (operazioni di lettura)">
Se configuri `channels.slack.userToken`, gli scope di lettura tipici sono:
- `channels:history`, `groups:history`, `im:history`, `mpim:history`
- `channels:read`, `groups:read`, `im:read`, `mpim:read`
@ -577,41 +577,41 @@ Espongono diverse funzionalità che estendono i valori predefiniti sopra indicat
- `reactions:read`
- `pins:read`
- `emoji:read`
- `search:read` (se dipendi dalle letture di ricerca di Slack)
- `search:read` (se dipendi dalle letture tramite ricerca Slack)
</Accordion>
</AccordionGroup>
## Modello dei token
- `botToken` + `appToken` sono richiesti per Socket Mode.
- `botToken` + `appToken` sono obbligatori per Socket Mode.
- La modalità HTTP richiede `botToken` + `signingSecret`.
- `botToken`, `appToken`, `signingSecret` e `userToken` accettano stringhe
in chiaro o oggetti SecretRef.
- I token di configurazione hanno la precedenza sul fallback env.
- Il fallback env `SLACK_BOT_TOKEN` / `SLACK_APP_TOKEN` si applica solo all'account predefinito.
- `userToken` (`xoxp-...`) è solo di configurazione (nessun fallback env) e per impostazione predefinita usa un comportamento di sola lettura (`userTokenReadOnly: true`).
- Il fallback env `SLACK_BOT_TOKEN` / `SLACK_APP_TOKEN` si applica solo allaccount predefinito.
- `userToken` (`xoxp-...`) è solo di configurazione (nessun fallback env) e per impostazione predefinita usa il comportamento di sola lettura (`userTokenReadOnly: true`).
Comportamento dell'istantanea di stato:
Comportamento dello snapshot di stato:
- L'ispezione dell'account Slack traccia i campi `*Source` e `*Status`
per credenziale (`botToken`, `appToken`, `signingSecret`, `userToken`).
- Lispezione dellaccount Slack traccia i campi `*Source` e `*Status`
per ogni credenziale (`botToken`, `appToken`, `signingSecret`, `userToken`).
- Lo stato è `available`, `configured_unavailable` o `missing`.
- `configured_unavailable` significa che l'account è configurato tramite SecretRef
o un'altra origine di segreto non inline, ma il percorso corrente di comando/runtime
- `configured_unavailable` significa che laccount è configurato tramite SecretRef
o unaltra sorgente di segreti non inline, ma il percorso attuale del comando/runtime
non ha potuto risolvere il valore effettivo.
- In modalità HTTP, è incluso `signingSecretStatus`; in Socket Mode, la
coppia richiesta è `botTokenStatus` + `appTokenStatus`.
<Tip>
Per le azioni/letture di directory, il token utente può essere preferito quando configurato. Per le scritture, il token bot resta preferito; le scritture con token utente sono consentite solo quando `userTokenReadOnly: false` e il token bot non è disponibile.
Per azioni/letture di directory, quando configurato si può preferire il token utente. Per le scritture, resta preferito il token bot; le scritture con token utente sono consentite solo quando `userTokenReadOnly: false` e il token bot non è disponibile.
</Tip>
## Azioni e controlli
## Azioni e gate
Le azioni Slack sono controllate da `channels.slack.actions.*`.
Gruppi di azioni disponibili negli strumenti Slack attuali:
Gruppi di azioni disponibili negli strumenti Slack correnti:
| Group | Default |
| ---------- | ------- |
@ -619,15 +619,15 @@ Gruppi di azioni disponibili negli strumenti Slack attuali:
| reazioni | abilitato |
| pin | abilitato |
| infoMembro | abilitato |
| elencoEmoji | abilitato |
| elencoEmoji | abilitato |
Le attuali azioni sui messaggi Slack includono `send`, `upload-file`, `download-file`, `read`, `edit`, `delete`, `pin`, `unpin`, `list-pins`, `member-info` ed `emoji-list`.
Le attuali azioni sui messaggi Slack includono `send`, `upload-file`, `download-file`, `read`, `edit`, `delete`, `pin`, `unpin`, `list-pins`, `member-info` e `emoji-list`.
## Controllo degli accessi e instradamento
<Tabs>
<Tab title="Criterio DM">
`channels.slack.dmPolicy` controlla l'accesso ai DM (legacy: `channels.slack.dm.policy`):
`channels.slack.dmPolicy` controlla laccesso ai DM (legacy: `channels.slack.dm.policy`):
- `pairing` (predefinito)
- `allowlist`
@ -639,48 +639,48 @@ Le attuali azioni sui messaggi Slack includono `send`, `upload-file`, `download-
- `dm.enabled` (predefinito true)
- `channels.slack.allowFrom` (preferito)
- `dm.allowFrom` (legacy)
- `dm.groupEnabled` (DM di gruppo predefiniti false)
- `dm.groupChannels` (allowlist MPIM facoltativa)
- `dm.groupEnabled` (DM di gruppo predefiniti su false)
- `dm.groupChannels` (allowlist MPIM opzionale)
Precedenza multi-account:
- `channels.slack.accounts.default.allowFrom` si applica solo all'account `default`.
- Gli account con nome ereditano `channels.slack.allowFrom` quando il loro `allowFrom` non è impostato.
- `channels.slack.accounts.default.allowFrom` si applica solo allaccount `default`.
- Gli account con nome ereditano `channels.slack.allowFrom` quando il proprio `allowFrom` non è impostato.
- Gli account con nome non ereditano `channels.slack.accounts.default.allowFrom`.
L'abbinamento nei DM usa `openclaw pairing approve slack <code>`.
Labbinamento nei DM usa `openclaw pairing approve slack <code>`.
</Tab>
<Tab title="Criterio del canale">
`channels.slack.groupPolicy` controlla la gestione del canale:
`channels.slack.groupPolicy` controlla la gestione dei canali:
- `open`
- `allowlist`
- `disabled`
L'allowlist dei canali si trova in `channels.slack.channels` e dovrebbe usare ID canale stabili.
Lallowlist dei canali si trova in `channels.slack.channels` e dovrebbe usare ID canale stabili.
Nota di runtime: se `channels.slack` manca completamente (configurazione solo env), il runtime usa il fallback `groupPolicy="allowlist"` e registra un avviso (anche se `channels.defaults.groupPolicy` è impostato).
Nota di runtime: se `channels.slack` manca completamente (configurazione solo env), il runtime usa come fallback `groupPolicy="allowlist"` e registra un avviso (anche se `channels.defaults.groupPolicy` è impostato).
Risoluzione nome/ID:
- le voci dell'allowlist dei canali e dell'allowlist DM vengono risolte all'avvio quando l'accesso token lo consente
- le voci non risolte del nome canale vengono mantenute come configurate ma ignorate per l'instradamento per impostazione predefinita
- l'autorizzazione in ingresso e l'instradamento del canale sono per impostazione predefinita ID-first; la corrispondenza diretta con username/slug richiede `channels.slack.dangerouslyAllowNameMatching: true`
- le voci dellallowlist dei canali e dellallowlist DM vengono risolte allavvio quando laccesso al token lo consente
- le voci con nome canale non risolte vengono mantenute come configurate ma ignorate per linstradamento per impostazione predefinita
- lautorizzazione in ingresso e linstradamento del canale sono basati sugli ID per impostazione predefinita; la corrispondenza diretta per username/slug richiede `channels.slack.dangerouslyAllowNameMatching: true`
</Tab>
<Tab title="Menzioni e utenti del canale">
I messaggi del canale sono limitati dalle menzioni per impostazione predefinita.
I messaggi del canale sono soggetti, per impostazione predefinita, al gate delle menzioni.
Origini delle menzioni:
Sorgenti delle menzioni:
- menzione esplicita dell'app (`<@botId>`)
- menzione esplicita dellapp (`<@botId>`)
- pattern regex di menzione (`agents.list[].groupChat.mentionPatterns`, fallback `messages.groupChat.mentionPatterns`)
- comportamento implicito di risposta nel thread al bot (disabilitato quando `thread.requireExplicitMention` è `true`)
Controlli per canale (`channels.slack.channels.<id>`; nomi solo tramite risoluzione all'avvio o `dangerouslyAllowNameMatching`):
Controlli per canale (`channels.slack.channels.<id>`; nomi solo tramite risoluzione allavvio o `dangerouslyAllowNameMatching`):
- `requireMention`
- `users` (allowlist)
@ -689,7 +689,7 @@ Le attuali azioni sui messaggi Slack includono `send`, `upload-file`, `download-
- `systemPrompt`
- `tools`, `toolsBySender`
- formato della chiave `toolsBySender`: `id:`, `e164:`, `username:`, `name:` o wildcard `"*"`
(le chiavi legacy senza prefisso continuano a essere mappate solo a `id:`)
(le chiavi legacy senza prefisso continuano a mappare solo a `id:`)
</Tab>
</Tabs>
@ -697,12 +697,12 @@ Le attuali azioni sui messaggi Slack includono `send`, `upload-file`, `download-
## Thread, sessioni e tag di risposta
- I DM vengono instradati come `direct`; i canali come `channel`; gli MPIM come `group`.
- Con il valore predefinito `session.dmScope=main`, i DM di Slack confluiscono nella sessione principale dell'agente.
- Con il valore predefinito `session.dmScope=main`, i DM di Slack confluiscono nella sessione principale dellagente.
- Sessioni del canale: `agent:<agentId>:slack:channel:<channelId>`.
- Le risposte nei thread possono creare suffissi di sessione del thread (`:thread:<threadTs>`) quando applicabile.
- Il valore predefinito di `channels.slack.thread.historyScope` è `thread`; quello di `thread.inheritParent` è `false`.
- Il valore predefinito di `channels.slack.thread.historyScope` è `thread`; il valore predefinito di `thread.inheritParent` è `false`.
- `channels.slack.thread.initialHistoryLimit` controlla quanti messaggi esistenti del thread vengono recuperati quando inizia una nuova sessione del thread (predefinito `20`; imposta `0` per disabilitare).
- `channels.slack.thread.requireExplicitMention` (predefinito `false`): quando è `true`, sopprime le menzioni implicite nei thread, così il bot risponde solo a menzioni esplicite `@bot` all'interno dei thread, anche quando il bot ha già partecipato al thread. Senza questo, le risposte in un thread a cui il bot ha partecipato bypassano il controllo `requireMention`.
- `channels.slack.thread.requireExplicitMention` (predefinito `false`): quando è `true`, sopprime le menzioni implicite nel thread, così il bot risponde solo a menzioni esplicite `@bot` allinterno dei thread, anche quando il bot ha già partecipato al thread. Senza questo, le risposte in un thread a cui il bot ha partecipato aggirano il gate `requireMention`.
Controlli del threading delle risposte:
@ -715,42 +715,43 @@ Sono supportati tag di risposta manuali:
- `[[reply_to_current]]`
- `[[reply_to:<id>]]`
Nota: `replyToMode="off"` disabilita **tutto** il threading delle risposte in Slack, inclusi i tag espliciti `[[reply_to_*]]`. Questo differisce da Telegram, dove i tag espliciti vengono comunque rispettati in modalità `"off"`. La differenza riflette i modelli di threading delle piattaforme: i thread di Slack nascondono i messaggi dal canale, mentre le risposte di Telegram restano visibili nel flusso principale della chat.
Nota: `replyToMode="off"` disabilita **tutto** il threading delle risposte in Slack, inclusi i tag espliciti `[[reply_to_*]]`. Questo differisce da Telegram, dove i tag espliciti sono comunque rispettati in modalità `"off"`. La differenza riflette i modelli di threading delle piattaforme: i thread di Slack nascondono i messaggi dal canale, mentre le risposte di Telegram restano visibili nel flusso principale della chat.
## Reazioni di ack
`ackReaction` invia un'emoji di conferma mentre OpenClaw elabora un messaggio in ingresso.
`ackReaction` invia unemoji di conferma mentre OpenClaw sta elaborando un messaggio in ingresso.
Ordine di risoluzione:
- `channels.slack.accounts.<accountId>.ackReaction`
- `channels.slack.ackReaction`
- `messages.ackReaction`
- fallback all'emoji dell'identità dell'agente (`agents.list[].identity.emoji`, altrimenti "👀")
- fallback allemoji dellidentità dellagente (`agents.list[].identity.emoji`, altrimenti "👀")
Note:
- Slack si aspetta shortcode (ad esempio `"eyes"`).
- Usa `""` per disabilitare la reazione per l'account Slack o globalmente.
- Slack si aspetta shortcodes (per esempio `"eyes"`).
- Usa `""` per disabilitare la reazione per laccount Slack o globalmente.
## Streaming del testo
`channels.slack.streaming` controlla il comportamento dell'anteprima live:
`channels.slack.streaming` controlla il comportamento dellanteprima live:
- `off`: disabilita lo streaming dell'anteprima live.
- `partial` (predefinito): sostituisce il testo di anteprima con l'output parziale più recente.
- `off`: disabilita lo streaming dellanteprima live.
- `partial` (predefinito): sostituisce il testo di anteprima con loutput parziale più recente.
- `block`: aggiunge aggiornamenti di anteprima a blocchi.
- `progress`: mostra il testo di stato dell'avanzamento durante la generazione, quindi invia il testo finale.
- `progress`: mostra il testo di stato di avanzamento durante la generazione, poi invia il testo finale.
- `streaming.preview.toolProgress`: quando lanteprima bozza è attiva, instrada gli aggiornamenti di tool/progresso nello stesso messaggio di anteprima modificato (predefinito: `true`). Imposta `false` per mantenere separati i messaggi di tool/progresso.
`channels.slack.streaming.nativeTransport` controlla lo streaming nativo del testo di Slack quando `channels.slack.streaming.mode` è `partial` (predefinito: `true`).
`channels.slack.streaming.nativeTransport` controlla lo streaming di testo nativo di Slack quando `channels.slack.streaming.mode` è `partial` (predefinito: `true`).
- Per visualizzare lo streaming nativo del testo e lo stato del thread assistant di Slack deve essere disponibile un thread di risposta. La selezione del thread continua comunque a seguire `replyToMode`.
- Perché lo streaming di testo nativo e lo stato del thread assistant di Slack compaiano, deve essere disponibile un thread di risposta. La selezione del thread continua comunque a seguire `replyToMode`.
- Le radici di canali e chat di gruppo possono comunque usare la normale anteprima bozza quando lo streaming nativo non è disponibile.
- Le DM Slack di primo livello restano fuori thread per impostazione predefinita, quindi non mostrano l'anteprima in stile thread; usa risposte nei thread o `typingReaction` se vuoi un avanzamento visibile lì.
- I contenuti multimediali e i payload non testuali usano il fallback alla consegna normale.
- Se lo streaming fallisce a metà risposta, OpenClaw usa il fallback alla consegna normale per i payload rimanenti.
- I DM Slack di primo livello restano per impostazione predefinita fuori thread, quindi non mostrano lanteprima in stile thread; usa risposte nei thread o `typingReaction` se vuoi un avanzamento visibile lì.
- I media e i payload non testuali tornano alla consegna normale.
- Se lo streaming fallisce a metà risposta, OpenClaw torna alla consegna normale per i payload rimanenti.
Usa l'anteprima bozza invece dello streaming nativo del testo di Slack:
Usa lanteprima bozza invece dello streaming di testo nativo di Slack:
```json5
{
@ -769,11 +770,11 @@ Chiavi legacy:
- `channels.slack.streamMode` (`replace | status_final | append`) viene migrato automaticamente in `channels.slack.streaming.mode`.
- il booleano `channels.slack.streaming` viene migrato automaticamente in `channels.slack.streaming.mode` e `channels.slack.streaming.nativeTransport`.
- la chiave legacy `channels.slack.nativeStreaming` viene migrata automaticamente in `channels.slack.streaming.nativeTransport`.
- il legacy `channels.slack.nativeStreaming` viene migrato automaticamente in `channels.slack.streaming.nativeTransport`.
## Fallback della reazione di digitazione
## Fallback con reazione di digitazione
`typingReaction` aggiunge una reazione temporanea al messaggio Slack in ingresso mentre OpenClaw elabora una risposta, quindi la rimuove al termine dell'esecuzione. Questo è particolarmente utile al di fuori delle risposte nei thread, che usano un indicatore di stato predefinito "sta scrivendo...".
`typingReaction` aggiunge una reazione temporanea al messaggio Slack in ingresso mentre OpenClaw elabora una risposta, quindi la rimuove al termine dellesecuzione. Questo è particolarmente utile al di fuori delle risposte nei thread, che usano un indicatore di stato predefinito "is typing...".
Ordine di risoluzione:
@ -782,16 +783,16 @@ Ordine di risoluzione:
Note:
- Slack si aspetta shortcode (ad esempio `"hourglass_flowing_sand"`).
- Slack si aspetta shortcodes (per esempio `"hourglass_flowing_sand"`).
- La reazione è best-effort e la pulizia viene tentata automaticamente dopo il completamento della risposta o del percorso di errore.
## Media, suddivisione in blocchi e consegna
## Media, chunking e consegna
<AccordionGroup>
<Accordion title="Allegati in ingresso">
Gli allegati file di Slack vengono scaricati da URL private ospitate da Slack (flusso di richiesta autenticato tramite token) e scritti nell'archivio media quando il recupero ha esito positivo e i limiti di dimensione lo consentono.
Gli allegati file di Slack vengono scaricati da URL privati ospitati da Slack (flusso di richiesta autenticato con token) e scritti nel media store quando il recupero riesce e i limiti di dimensione lo consentono.
Il limite di dimensione in ingresso a runtime è per impostazione predefinita `20MB`, salvo override con `channels.slack.mediaMaxMb`.
Il limite di dimensione in ingresso a runtime è per impostazione predefinita `20MB`, a meno che non venga sovrascritto da `channels.slack.mediaMaxMb`.
</Accordion>
@ -808,14 +809,14 @@ Note:
- `user:<id>` per i DM
- `channel:<id>` per i canali
I DM Slack vengono aperti tramite le API di conversazione di Slack quando si invia verso destinazioni utente.
I DM Slack vengono aperti tramite le API conversation di Slack quando si invia verso destinazioni utente.
</Accordion>
</AccordionGroup>
## Comandi e comportamento slash
I comandi slash appaiono in Slack come un singolo comando configurato o come più comandi nativi. Configura `channels.slack.slashCommand` per modificare i valori predefiniti del comando:
I comandi slash compaiono in Slack come un singolo comando configurato oppure come più comandi nativi. Configura `channels.slack.slashCommand` per modificare i valori predefiniti dei comandi:
- `enabled: false`
- `name: "openclaw"`
@ -826,7 +827,7 @@ I comandi slash appaiono in Slack come un singolo comando configurato o come pi
/openclaw /help
```
I comandi nativi richiedono [impostazioni aggiuntive del manifesto](#additional-manifest-settings) nella tua app Slack e vengono invece abilitati con `channels.slack.commands.native: true` o `commands.native: true` nelle configurazioni globali.
I comandi nativi richiedono [impostazioni aggiuntive del manifest](#additional-manifest-settings) nella tua app Slack e vengono invece abilitati con `channels.slack.commands.native: true` o `commands.native: true` nelle configurazioni globali.
- La modalità automatica dei comandi nativi è **disattivata** per Slack, quindi `commands.native: "auto"` non abilita i comandi nativi di Slack.
@ -834,22 +835,22 @@ I comandi nativi richiedono [impostazioni aggiuntive del manifesto](#additional-
/help
```
I menu nativi degli argomenti usano una strategia di rendering adattiva che mostra un modal di conferma prima di inviare il valore dell'opzione selezionata:
I menu argomento nativi usano una strategia di rendering adattiva che mostra una finestra modale di conferma prima di inviare il valore dellopzione selezionata:
- fino a 5 opzioni: blocchi di pulsanti
- 6-100 opzioni: menu statico di selezione
- più di 100 opzioni: selezione esterna con filtro asincrono delle opzioni quando sono disponibili gestori per le opzioni di interattività
- superati i limiti di Slack: i valori di opzione codificati usano il fallback ai pulsanti
- fino a 5 opzioni: blocchi pulsante
- 6-100 opzioni: menu di selezione statico
- più di 100 opzioni: selezione esterna con filtraggio asincrono delle opzioni quando sono disponibili gli handler delle opzioni di interattività
- limiti Slack superati: i valori di opzione codificati tornano ai pulsanti
```txt
/think
```
Le sessioni slash usano chiavi isolate come `agent:<agentId>:slack:slash:<userId>` e continuano comunque a instradare le esecuzioni dei comandi verso la sessione della conversazione di destinazione usando `CommandTargetSessionKey`.
Le sessioni slash usano chiavi isolate come `agent:<agentId>:slack:slash:<userId>` e continuano a instradare le esecuzioni dei comandi verso la sessione di conversazione di destinazione usando `CommandTargetSessionKey`.
## Risposte interattive
Slack può renderizzare controlli di risposta interattivi creati dall'agente, ma questa funzionalità è disabilitata per impostazione predefinita.
Slack può renderizzare controlli di risposta interattivi creati dallagente, ma questa funzionalità è disabilitata per impostazione predefinita.
Abilitala globalmente:
@ -883,7 +884,7 @@ Oppure abilitala solo per un account Slack:
}
```
Quando è abilitata, gli agenti possono emettere direttive di risposta solo per Slack:
Quando è abilitata, gli agenti possono emettere direttive di risposta solo Slack:
- `[[slack_buttons: Approve:approve, Reject:reject]]`
- `[[slack_select: Choose a target | Canary:canary, Production:production]]`
@ -892,33 +893,33 @@ Queste direttive vengono compilate in Slack Block Kit e instradano clic o selezi
Note:
- Si tratta di UI specifica di Slack. Gli altri canali non traducono le direttive Slack Block Kit nei propri sistemi di pulsanti.
- I valori di callback interattivi sono token opachi generati da OpenClaw, non valori grezzi creati dall'agente.
- Se i blocchi interattivi generati superano i limiti di Slack Block Kit, OpenClaw usa il fallback alla risposta testuale originale invece di inviare un payload blocks non valido.
- Questa è uninterfaccia specifica di Slack. Gli altri canali non traducono le direttive Slack Block Kit nei propri sistemi di pulsanti.
- I valori di callback interattivi sono token opachi generati da OpenClaw, non valori grezzi creati dallagente.
- Se i blocchi interattivi generati superano i limiti di Slack Block Kit, OpenClaw torna al testo di risposta originale invece di inviare un payload `blocks` non valido.
## Approvazioni exec in Slack
Slack può agire come client di approvazione nativo con pulsanti e interazioni interattivi, invece di usare il fallback alla Web UI o al terminale.
Slack può agire come client di approvazione nativo con pulsanti interattivi e interazioni, invece di ricorrere alla Web UI o al terminale.
- Le approvazioni exec usano `channels.slack.execApprovals.*` per l'instradamento nativo in DM/canale.
- Le approvazioni Plugin possono comunque essere risolte tramite la stessa superficie nativa di pulsanti Slack quando la richiesta arriva già in Slack e il tipo di id di approvazione è `plugin:`.
- L'autorizzazione degli approvatori continua a essere applicata: solo gli utenti identificati come approvatori possono approvare o negare richieste tramite Slack.
- Le approvazioni exec usano `channels.slack.execApprovals.*` per linstradamento nativo in DM/canale.
- Le approvazioni Plugin possono comunque risolversi tramite la stessa superficie di pulsanti nativi Slack quando la richiesta arriva già in Slack e il tipo di approval id è `plugin:`.
- Lautorizzazione dellapprovatore continua a essere applicata: solo gli utenti identificati come approvatori possono approvare o negare richieste tramite Slack.
Questo usa la stessa superficie condivisa di pulsanti di approvazione degli altri canali. Quando `interactivity` è abilitato nelle impostazioni della tua app Slack, i prompt di approvazione vengono renderizzati come pulsanti Block Kit direttamente nella conversazione.
Quando questi pulsanti sono presenti, rappresentano la UX di approvazione primaria; OpenClaw
dovrebbe includere un comando manuale `/approve` solo quando il risultato dello strumento indica che le
approvazioni in chat non sono disponibili o che l'approvazione manuale è l'unico percorso.
dovrebbe includere un comando manuale `/approve` solo quando il risultato del tool indica che le
approvazioni in chat non sono disponibili o che lapprovazione manuale è lunico percorso.
Percorso di configurazione:
- `channels.slack.execApprovals.enabled`
- `channels.slack.execApprovals.approvers` (facoltativo; usa il fallback a `commands.ownerAllowFrom` quando possibile)
- `channels.slack.execApprovals.approvers` (opzionale; usa come fallback `commands.ownerAllowFrom` quando possibile)
- `channels.slack.execApprovals.target` (`dm` | `channel` | `both`, predefinito: `dm`)
- `agentFilter`, `sessionFilter`
Slack abilita automaticamente le approvazioni exec native quando `enabled` non è impostato o è `"auto"` e viene risolto almeno un
Slack abilita automaticamente le approvazioni exec native quando `enabled` non è impostato oppure è `"auto"` e viene risolto almeno un
approvatore. Imposta `enabled: false` per disabilitare esplicitamente Slack come client di approvazione nativo.
Imposta `enabled: true` per forzare l'attivazione delle approvazioni native quando gli approvatori vengono risolti.
Imposta `enabled: true` per forzare lattivazione delle approvazioni native quando gli approvatori vengono risolti.
Comportamento predefinito senza configurazione esplicita delle approvazioni exec Slack:
@ -931,7 +932,7 @@ Comportamento predefinito senza configurazione esplicita delle approvazioni exec
```
La configurazione nativa esplicita di Slack è necessaria solo quando vuoi sovrascrivere gli approvatori, aggiungere filtri o
attivare la consegna nella chat di origine:
abilitare la consegna alla chat di origine:
```json5
{
@ -947,45 +948,45 @@ attivare la consegna nella chat di origine:
}
```
L'inoltro condiviso `approvals.exec` è separato. Usalo solo quando i prompt di approvazione exec devono essere instradati anche
verso altre chat o destinazioni esplicite fuori banda. Anche l'inoltro condiviso `approvals.plugin` è
Linoltro condiviso `approvals.exec` è separato. Usalo solo quando i prompt di approvazione exec devono anche
essere instradati verso altre chat o destinazioni esplicite out-of-band. Anche linoltro condiviso `approvals.plugin` è
separato; i pulsanti nativi di Slack possono comunque risolvere le approvazioni Plugin quando tali richieste arrivano già
in Slack.
Anche `/approve` nella stessa chat funziona in canali e DM Slack che supportano già i comandi. Vedi [Approvazioni exec](/it/tools/exec-approvals) per il modello completo di inoltro delle approvazioni.
Anche `/approve` nella stessa chat funziona nei canali Slack e nei DM che supportano già i comandi. Vedi [Approvazioni exec](/it/tools/exec-approvals) per il modello completo di inoltro delle approvazioni.
## Eventi e comportamento operativo
- Le modifiche/eliminazioni dei messaggi e i broadcast dei thread vengono mappati in eventi di sistema.
- Gli eventi di aggiunta/rimozione di reazioni vengono mappati in eventi di sistema.
- Le modifiche/eliminazioni dei messaggi e i thread broadcast vengono mappati in eventi di sistema.
- Gli eventi di aggiunta/rimozione delle reazioni vengono mappati in eventi di sistema.
- Gli eventi di ingresso/uscita membri, creazione/rinomina canale e aggiunta/rimozione pin vengono mappati in eventi di sistema.
- `channel_id_changed` può migrare le chiavi di configurazione del canale quando `configWrites` è abilitato.
- I metadati di topic/purpose del canale vengono trattati come contesto non attendibile e possono essere iniettati nel contesto di instradamento.
- Il thread starter e il seeding iniziale del contesto della cronologia del thread vengono filtrati tramite le allowlist di mittenti configurate quando applicabile.
- Le azioni sui blocchi e le interazioni con i modal emettono eventi di sistema strutturati `Slack interaction: ...` con campi payload avanzati:
- azioni sui blocchi: valori selezionati, etichette, valori dei picker e metadati `workflow_*`
- eventi modal `view_submission` e `view_closed` con metadati del canale instradato e input del modulo
- I metadati del topic/purpose del canale sono trattati come contesto non attendibile e possono essere iniettati nel contesto di instradamento.
- Il thread starter e il seeding iniziale del contesto della cronologia del thread vengono filtrati dalle allowlist dei mittenti configurate, quando applicabile.
- Le block actions e le interazioni con modali emettono eventi di sistema strutturati `Slack interaction: ...` con campi payload ricchi:
- block actions: valori selezionati, etichette, valori picker e metadati `workflow_*`
- eventi modali `view_submission` e `view_closed` con metadati di canale instradati e input del modulo
## Puntatori al riferimento della configurazione
## Puntatori al riferimento di configurazione
Riferimento principale:
- [Riferimento della configurazione - Slack](/it/gateway/configuration-reference#slack)
- [Riferimento di configurazione - Slack](/it/gateway/configuration-reference#slack)
Campi Slack ad alto segnale:
- modalità/auth: `mode`, `botToken`, `appToken`, `signingSecret`, `webhookPath`, `accounts.*`
- accesso DM: `dm.enabled`, `dmPolicy`, `allowFrom` (legacy: `dm.policy`, `dm.allowFrom`), `dm.groupEnabled`, `dm.groupChannels`
- interruttore di compatibilità: `dangerouslyAllowNameMatching` (solo emergenza; lascialo disattivato salvo necessità)
- interruttore di compatibilità: `dangerouslyAllowNameMatching` (break-glass; tienilo disattivato salvo necessità)
- accesso canale: `groupPolicy`, `channels.*`, `channels.*.users`, `channels.*.requireMention`
- threading/cronologia: `replyToMode`, `replyToModeByChatType`, `thread.*`, `historyLimit`, `dmHistoryLimit`, `dms.*.historyLimit`
- consegna: `textChunkLimit`, `chunkMode`, `mediaMaxMb`, `streaming`, `streaming.nativeTransport`
- consegna: `textChunkLimit`, `chunkMode`, `mediaMaxMb`, `streaming`, `streaming.nativeTransport`, `streaming.preview.toolProgress`
- operazioni/funzionalità: `configWrites`, `commands.native`, `slashCommand.*`, `actions.*`, `userToken`, `userTokenReadOnly`
## Risoluzione dei problemi
<AccordionGroup>
<Accordion title="Nessuna risposta nei canali">
Controlla, in ordine:
Controlla, in questo ordine:
- `groupPolicy`
- allowlist del canale (`channels.slack.channels`)
@ -1007,7 +1008,7 @@ openclaw doctor
- `channels.slack.dm.enabled`
- `channels.slack.dmPolicy` (o il legacy `channels.slack.dm.policy`)
- approvazioni di abbinamento / voci allowlist
- approvazioni di pairing / voci di allowlist
```bash
openclaw pairing list slack
@ -1015,37 +1016,37 @@ openclaw pairing list slack
</Accordion>
<Accordion title="Socket mode non si connette">
Verifica i token bot + app e l'abilitazione di Socket Mode nelle impostazioni dell'app Slack.
<Accordion title="Socket Mode non si connette">
Convalida bot token + app token e labilitazione di Socket Mode nelle impostazioni dellapp Slack.
Se `openclaw channels status --probe --json` mostra `botTokenStatus` o
`appTokenStatus: "configured_unavailable"`, l'account Slack è
configurato ma il runtime corrente non è riuscito a risolvere il valore
`appTokenStatus: "configured_unavailable"`, laccount Slack è
configurato ma il runtime corrente non ha potuto risolvere il valore
supportato da SecretRef.
</Accordion>
<Accordion title="La modalità HTTP non riceve eventi">
Verifica:
Convalida:
- signing secret
- percorso webhook
- URL di richiesta Slack (Eventi + Interattività + comandi slash)
- `webhookPath` univoco per ogni account HTTP
- URL di richiesta Slack (Eventi + Interattività + Comandi slash)
- `webhookPath` univoco per account HTTP
Se `signingSecretStatus: "configured_unavailable"` appare nelle istantanee
dell'account, l'account HTTP è configurato ma il runtime corrente non è riuscito
a risolvere il signing secret supportato da SecretRef.
Se negli snapshot dellaccount compare `signingSecretStatus: "configured_unavailable"`,
laccount HTTP è configurato ma il runtime corrente non ha potuto
risolvere il signing secret supportato da SecretRef.
</Accordion>
<Accordion title="I comandi nativi/slash non si attivano">
Verifica se intendevi usare:
Verifica se intendevi:
- modalità comandi nativi (`channels.slack.commands.native: true`) con i corrispondenti comandi slash registrati in Slack
- modalità comando nativo (`channels.slack.commands.native: true`) con i corrispondenti comandi slash registrati in Slack
- oppure modalità comando slash singolo (`channels.slack.slashCommand.enabled: true`)
Controlla anche `commands.useAccessGroups` e le allowlist di canali/utenti.
Controlla anche `commands.useAccessGroups` e le allowlist di canale/utente.
</Accordion>
</AccordionGroup>
@ -1055,7 +1056,7 @@ openclaw pairing list slack
- [Abbinamento](/it/channels/pairing)
- [Gruppi](/it/channels/groups)
- [Sicurezza](/it/gateway/security)
- [Instradamento dei canali](/it/channels/channel-routing)
- [Instradamento del canale](/it/channels/channel-routing)
- [Risoluzione dei problemi](/it/channels/troubleshooting)
- [Configurazione](/it/gateway/configuration)
- [Comandi slash](/it/tools/slash-commands)

View File

@ -4,10 +4,10 @@ read_when:
summary: Stato del supporto del bot Telegram, capacità e configurazione
title: Telegram
x-i18n:
generated_at: "2026-04-21T08:21:17Z"
generated_at: "2026-04-21T17:45:33Z"
model: gpt-5.4
provider: openai
source_hash: b5c70775b55d4923a31ad8bae7f4c6e7cbae754c05c3a578180d63db2b59e39a
source_hash: 816238b53942b319a300843db62ec1d4bf8d84bc11094010926ac9ad457c6d3d
source_path: channels/telegram.md
workflow: 15
---
@ -21,7 +21,7 @@ Stato: pronto per la produzione per DM bot + gruppi tramite grammY. Il long poll
La policy DM predefinita per Telegram è l'abbinamento.
</Card>
<Card title="Risoluzione dei problemi del canale" icon="wrench" href="/it/channels/troubleshooting">
Diagnostica tra canali e playbook di riparazione.
Diagnostica cross-channel e playbook di riparazione.
</Card>
<Card title="Configurazione del Gateway" icon="settings" href="/it/gateway/configuration">
Modelli ed esempi completi di configurazione del canale.
@ -32,13 +32,13 @@ Stato: pronto per la produzione per DM bot + gruppi tramite grammY. Il long poll
<Steps>
<Step title="Crea il token del bot in BotFather">
Apri Telegram e avvia una chat con **@BotFather** (verifica che l'handle sia esattamente `@BotFather`).
Apri Telegram e chatta con **@BotFather** (verifica che l'handle sia esattamente `@BotFather`).
Esegui `/newbot`, segui le istruzioni e salva il token.
</Step>
<Step title="Configura token e policy DM">
<Step title="Configura il token e la policy DM">
```json5
{
@ -54,7 +54,7 @@ Stato: pronto per la produzione per DM bot + gruppi tramite grammY. Il long poll
```
Fallback env: `TELEGRAM_BOT_TOKEN=...` (solo account predefinito).
Telegram **non** usa `openclaw channels login telegram`; configura il token in config/env, quindi avvia il gateway.
Telegram **non** usa `openclaw channels login telegram`; configura il token in config/env, poi avvia il gateway.
</Step>
@ -76,32 +76,32 @@ openclaw pairing approve telegram <CODE>
</Steps>
<Note>
L'ordine di risoluzione del token è consapevole dell'account. In pratica, i valori della config prevalgono sul fallback env, e `TELEGRAM_BOT_TOKEN` si applica solo all'account predefinito.
L'ordine di risoluzione del token dipende dall'account. In pratica, i valori in config hanno priorità rispetto al fallback env, e `TELEGRAM_BOT_TOKEN` si applica solo all'account predefinito.
</Note>
## Impostazioni lato Telegram
<AccordionGroup>
<Accordion title="Modalità privacy e visibilità del gruppo">
I bot Telegram usano per impostazione predefinita la **Modalità privacy**, che limita i messaggi di gruppo che ricevono.
<Accordion title="Modalità privacy e visibilità nei gruppi">
Per impostazione predefinita, i bot Telegram usano la **Modalità Privacy**, che limita i messaggi di gruppo che ricevono.
Se il bot deve vedere tutti i messaggi del gruppo, puoi:
- disattivare la modalità privacy tramite `/setprivacy`, oppure
- disabilitare la modalità privacy tramite `/setprivacy`, oppure
- rendere il bot amministratore del gruppo.
Quando cambi la modalità privacy, rimuovi e riaggiungi il bot in ogni gruppo in modo che Telegram applichi la modifica.
Quando modifichi la modalità privacy, rimuovi e riaggiungi il bot in ogni gruppo in modo che Telegram applichi la modifica.
</Accordion>
<Accordion title="Permessi del gruppo">
Lo stato di amministratore è controllato nelle impostazioni del gruppo Telegram.
I bot amministratori ricevono tutti i messaggi del gruppo, il che è utile per comportamenti di gruppo sempre attivi.
I bot amministratori ricevono tutti i messaggi del gruppo, il che è utile per un comportamento del gruppo sempre attivo.
</Accordion>
<Accordion title="Opzioni BotFather utili">
<Accordion title="Comandi BotFather utili">
- `/setjoingroups` per consentire/negare l'aggiunta ai gruppi
- `/setprivacy` per il comportamento di visibilità nei gruppi
@ -109,7 +109,7 @@ L'ordine di risoluzione del token è consapevole dell'account. In pratica, i val
</Accordion>
</AccordionGroup>
## Controllo accessi e attivazione
## Controllo degli accessi e attivazione
<Tabs>
<Tab title="Policy DM">
@ -121,20 +121,20 @@ L'ordine di risoluzione del token è consapevole dell'account. In pratica, i val
- `disabled`
`channels.telegram.allowFrom` accetta ID utente Telegram numerici. I prefissi `telegram:` / `tg:` sono accettati e normalizzati.
`dmPolicy: "allowlist"` con `allowFrom` vuoto blocca tutti i DM ed è rifiutato dalla validazione della config.
`dmPolicy: "allowlist"` con `allowFrom` vuoto blocca tutti i DM e viene rifiutato dalla validazione della configurazione.
La configurazione richiede solo ID utente numerici.
Se hai aggiornato e la tua config contiene voci allowlist `@username`, esegui `openclaw doctor --fix` per risolverle (best-effort; richiede un token bot Telegram).
Se in precedenza ti affidavi ai file allowlist del pairing-store, `openclaw doctor --fix` può recuperare le voci in `channels.telegram.allowFrom` nei flussi allowlist (per esempio quando `dmPolicy: "allowlist"` non ha ancora ID espliciti).
Se hai effettuato un upgrade e la tua configurazione contiene voci allowlist `@username`, esegui `openclaw doctor --fix` per risolverle (best-effort; richiede un token bot Telegram).
Se in precedenza facevi affidamento sui file allowlist del pairing-store, `openclaw doctor --fix` può recuperare le voci in `channels.telegram.allowFrom` nei flussi allowlist (per esempio quando `dmPolicy: "allowlist"` non ha ancora ID espliciti).
Per bot con un solo proprietario, preferisci `dmPolicy: "allowlist"` con ID `allowFrom` numerici espliciti per mantenere durevole la policy di accesso nella config (invece di dipendere dalle precedenti approvazioni di abbinamento).
Per i bot con un solo proprietario, preferisci `dmPolicy: "allowlist"` con ID `allowFrom` numerici espliciti per mantenere una policy di accesso durevole nella configurazione (invece di dipendere dalle approvazioni di abbinamento precedenti).
Confusione comune: l'approvazione dell'abbinamento DM non significa "questo mittente è autorizzato ovunque".
L'abbinamento concede solo l'accesso DM. L'autorizzazione dei mittenti nei gruppi continua a provenire da allowlist esplicite nella config.
Se vuoi "sono autorizzato una volta e funzionano sia i DM sia i comandi di gruppo", inserisci il tuo ID utente Telegram numerico in `channels.telegram.allowFrom`.
Equivoco comune: l'approvazione dell'abbinamento DM non significa "questo mittente è autorizzato ovunque".
L'abbinamento concede solo l'accesso ai DM. L'autorizzazione del mittente nei gruppi deriva comunque da allowlist di configurazione esplicite.
Se vuoi che "sono autorizzato una volta e funzionano sia i DM sia i comandi di gruppo", inserisci il tuo ID utente Telegram numerico in `channels.telegram.allowFrom`.
### Trovare il tuo ID utente Telegram
Più sicuro (nessun bot di terze parti):
Metodo più sicuro (senza bot di terze parti):
1. Invia un DM al tuo bot.
2. Esegui `openclaw logs --follow`.
@ -146,7 +146,7 @@ L'ordine di risoluzione del token è consapevole dell'account. In pratica, i val
curl "https://api.telegram.org/bot<bot_token>/getUpdates"
```
Metodo di terze parti (meno riservato): `@userinfobot` o `@getidsbot`.
Metodo di terze parti (meno privato): `@userinfobot` o `@getidsbot`.
</Tab>
@ -154,8 +154,8 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
Si applicano insieme due controlli:
1. **Quali gruppi sono consentiti** (`channels.telegram.groups`)
- nessuna config `groups`:
- con `groupPolicy: "open"`: qualsiasi gruppo può superare i controlli sull'ID del gruppo
- nessuna configurazione `groups`:
- con `groupPolicy: "open"`: qualsiasi gruppo può superare i controlli dell'ID gruppo
- con `groupPolicy: "allowlist"` (predefinito): i gruppi sono bloccati finché non aggiungi voci in `groups` (o `"*"`)
- `groups` configurato: agisce come allowlist (ID espliciti o `"*"`)
@ -164,14 +164,14 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
- `allowlist` (predefinito)
- `disabled`
`groupAllowFrom` è usato per il filtraggio dei mittenti nei gruppi. Se non è impostato, Telegram usa come fallback `allowFrom`.
Le voci di `groupAllowFrom` devono essere ID utente Telegram numerici (i prefissi `telegram:` / `tg:` sono normalizzati).
Non inserire ID chat di gruppi o supergruppi Telegram in `groupAllowFrom`. Gli ID chat negativi appartengono a `channels.telegram.groups`.
`groupAllowFrom` viene usato per filtrare i mittenti nei gruppi. Se non è impostato, Telegram usa `allowFrom` come fallback.
Le voci `groupAllowFrom` devono essere ID utente Telegram numerici (i prefissi `telegram:` / `tg:` sono normalizzati).
Non inserire ID chat di gruppi o supergruppi Telegram in `groupAllowFrom`. Gli ID chat negativi vanno sotto `channels.telegram.groups`.
Le voci non numeriche vengono ignorate per l'autorizzazione dei mittenti.
Confine di sicurezza (`2026.2.25+`): l'autorizzazione dei mittenti nei gruppi **non** eredita le approvazioni del pairing-store dei DM.
L'abbinamento resta solo per i DM. Per i gruppi, imposta `groupAllowFrom` oppure `allowFrom` per gruppo/per topic.
Confine di sicurezza (`2026.2.25+`): l'autorizzazione del mittente nei gruppi **non** eredita le approvazioni del pairing-store DM.
L'abbinamento resta solo per i DM. Per i gruppi, imposta `groupAllowFrom` o `allowFrom` per gruppo/per topic.
Se `groupAllowFrom` non è impostato, Telegram usa come fallback `allowFrom` della config, non il pairing store.
Modello pratico per bot con un solo proprietario: imposta il tuo ID utente in `channels.telegram.allowFrom`, lascia `groupAllowFrom` non impostato e consenti i gruppi di destinazione in `channels.telegram.groups`.
Modello pratico per bot con un solo proprietario: imposta il tuo ID utente in `channels.telegram.allowFrom`, lascia `groupAllowFrom` non impostato e consenti i gruppi di destinazione sotto `channels.telegram.groups`.
Nota di runtime: se `channels.telegram` manca completamente, il runtime usa come predefinito fail-closed `groupPolicy="allowlist"` a meno che `channels.defaults.groupPolicy` non sia impostato esplicitamente.
Esempio: consenti qualsiasi membro in uno specifico gruppo:
@ -191,7 +191,7 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
}
```
Esempio: consenti solo utenti specifici in uno specifico gruppo:
Esempio: consenti solo utenti specifici all'interno di uno specifico gruppo:
```json5
{
@ -211,8 +211,8 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
<Warning>
Errore comune: `groupAllowFrom` non è una allowlist di gruppi Telegram.
- Inserisci ID negativi di gruppi o supergruppi Telegram come `-1001234567890` in `channels.telegram.groups`.
- Inserisci ID utente Telegram come `8734062810` in `groupAllowFrom` quando vuoi limitare quali persone all'interno di un gruppo consentito possono attivare il bot.
- Inserisci gli ID chat negativi di gruppi o supergruppi Telegram come `-1001234567890` sotto `channels.telegram.groups`.
- Inserisci gli ID utente Telegram come `8734062810` sotto `groupAllowFrom` quando vuoi limitare quali persone all'interno di un gruppo consentito possono attivare il bot.
- Usa `groupAllowFrom: ["*"]` solo quando vuoi che qualsiasi membro di un gruppo consentito possa parlare con il bot.
</Warning>
@ -233,7 +233,7 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
- `/activation always`
- `/activation mention`
Questi aggiornano solo lo stato della sessione. Usa la config per la persistenza.
Questi aggiornano solo lo stato della sessione. Usa la configurazione per la persistenza.
Esempio di configurazione persistente:
@ -253,27 +253,27 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
- inoltra un messaggio del gruppo a `@userinfobot` / `@getidsbot`
- oppure leggi `chat.id` da `openclaw logs --follow`
- oppure ispeziona `getUpdates` della Bot API
- oppure controlla `getUpdates` della Bot API
</Tab>
</Tabs>
## Comportamento di runtime
- Telegram è gestito dal processo gateway.
- L'instradamento è deterministico: le risposte in ingresso da Telegram tornano a Telegram (il modello non sceglie i canali).
- I messaggi in ingresso vengono normalizzati nell'involucro canale condiviso con metadati di risposta e segnaposto per i media.
- Telegram è gestito dal processo Gateway.
- Il routing è deterministico: le risposte in ingresso di Telegram tornano su Telegram (il modello non sceglie i canali).
- I messaggi in ingresso vengono normalizzati nell'envelope condiviso del canale con metadati di risposta e segnaposto per i contenuti multimediali.
- Le sessioni di gruppo sono isolate per ID gruppo. I topic del forum aggiungono `:topic:<threadId>` per mantenere i topic isolati.
- I messaggi DM possono includere `message_thread_id`; OpenClaw li instrada con chiavi di sessione consapevoli del thread e conserva l'ID thread per le risposte.
- Il long polling usa grammY runner con sequenziamento per chat/per thread. La concorrenza complessiva del sink runner usa `agents.defaults.maxConcurrent`.
- I riavvii del watchdog del long polling si attivano dopo 120 secondi senza liveness completata di `getUpdates` per impostazione predefinita. Aumenta `channels.telegram.pollingStallThresholdMs` solo se la tua distribuzione continua a vedere falsi riavvii per stallo del polling durante lavori di lunga durata. Il valore è in millisecondi ed è consentito da `30000` a `600000`; sono supportati override per account.
- I messaggi DM possono includere `message_thread_id`; OpenClaw li instrada con chiavi di sessione thread-aware e conserva l'ID thread per le risposte.
- Il long polling usa grammY runner con sequenziamento per chat/per thread. La concorrenza complessiva del sink del runner usa `agents.defaults.maxConcurrent`.
- I riavvii del watchdog del long polling si attivano per impostazione predefinita dopo 120 secondi senza liveness `getUpdates` completata. Aumenta `channels.telegram.pollingStallThresholdMs` solo se il tuo deployment continua a vedere falsi riavvii per stallo del polling durante attivi di lunga durata. Il valore è in millisecondi ed è consentito da `30000` a `600000`; sono supportati override per account.
- Telegram Bot API non supporta le conferme di lettura (`sendReadReceipts` non si applica).
## Riferimento funzionalità
<AccordionGroup>
<Accordion title="Anteprima streaming live (modifiche dei messaggi)">
OpenClaw può trasmettere in streaming risposte parziali in tempo reale:
<Accordion title="Anteprima streaming live (modifiche ai messaggi)">
OpenClaw può trasmettere risposte parziali in tempo reale:
- chat dirette: messaggio di anteprima + `editMessageText`
- gruppi/topic: messaggio di anteprima + `editMessageText`
@ -281,46 +281,47 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
Requisito:
- `channels.telegram.streaming` è `off | partial | block | progress` (predefinito: `partial`)
- `progress` corrisponde a `partial` su Telegram (compatibilità con la denominazione tra canali)
- i valori legacy `channels.telegram.streamMode` e booleani `streaming` vengono mappati automaticamente
- `progress` viene mappato a `partial` su Telegram (compatibilità con la nomenclatura cross-channel)
- `streaming.preview.toolProgress` controlla se gli aggiornamenti di tool/progresso riutilizzano lo stesso messaggio di anteprima modificato (predefinito: `true`). Imposta `false` per mantenere separati i messaggi di tool/progresso.
- i valori legacy `channels.telegram.streamMode` e i valori booleani `streaming` vengono mappati automaticamente
Per risposte solo testuali:
Per risposte di solo testo:
- DM: OpenClaw mantiene lo stesso messaggio di anteprima ed esegue una modifica finale sul posto (nessun secondo messaggio)
- gruppo/topic: OpenClaw mantiene lo stesso messaggio di anteprima ed esegue una modifica finale sul posto (nessun secondo messaggio)
- DM: OpenClaw mantiene lo stesso messaggio di anteprima ed esegue una modifica finale in place (nessun secondo messaggio)
- gruppo/topic: OpenClaw mantiene lo stesso messaggio di anteprima ed esegue una modifica finale in place (nessun secondo messaggio)
Per risposte complesse (per esempio payload media), OpenClaw torna alla normale consegna finale e poi pulisce il messaggio di anteprima.
Per risposte complesse (per esempio payload multimediali), OpenClaw torna alla normale consegna finale e poi pulisce il messaggio di anteprima.
Lo streaming di anteprima è separato dallo streaming block. Quando lo streaming block è esplicitamente abilitato per Telegram, OpenClaw salta lo stream di anteprima per evitare il doppio streaming.
Lo streaming di anteprima è separato dallo streaming a blocchi. Quando lo streaming a blocchi è abilitato esplicitamente per Telegram, OpenClaw salta lo stream di anteprima per evitare il doppio streaming.
Se il trasporto draft nativo non è disponibile/viene rifiutato, OpenClaw usa automaticamente come fallback `sendMessage` + `editMessageText`.
Se il trasporto draft nativo non è disponibile o viene rifiutato, OpenClaw usa automaticamente `sendMessage` + `editMessageText` come fallback.
Stream di ragionamento solo Telegram:
Stream di reasoning solo Telegram:
- `/reasoning stream` invia il ragionamento all'anteprima live durante la generazione
- la risposta finale viene inviata senza testo di ragionamento
- `/reasoning stream` invia il reasoning all'anteprima live durante la generazione
- la risposta finale viene inviata senza il testo di reasoning
</Accordion>
<Accordion title="Formattazione e fallback HTML">
Il testo in uscita usa Telegram `parse_mode: "HTML"`.
- Il testo stile Markdown viene renderizzato in HTML sicuro per Telegram.
- L'HTML grezzo del modello viene escapato per ridurre gli errori di parsing di Telegram.
- Se Telegram rifiuta l'HTML analizzato, OpenClaw riprova come testo semplice.
- Il testo in stile Markdown viene renderizzato in HTML sicuro per Telegram.
- L'HTML grezzo del modello viene sottoposto a escape per ridurre gli errori di parsing di Telegram.
- Se Telegram rifiuta l'HTML analizzato, OpenClaw ritenta come testo semplice.
Le anteprime dei link sono abilitate per impostazione predefinita e possono essere disabilitate con `channels.telegram.linkPreview: false`.
</Accordion>
<Accordion title="Comandi nativi e comandi personalizzati">
La registrazione del menu dei comandi Telegram viene gestita all'avvio con `setMyCommands`.
La registrazione del menu comandi di Telegram viene gestita all'avvio con `setMyCommands`.
Valori predefiniti dei comandi nativi:
Impostazioni predefinite dei comandi nativi:
- `commands.native: "auto"` abilita i comandi nativi per Telegram
Aggiungi voci personalizzate al menu dei comandi:
Aggiungi voci di menu dei comandi personalizzati:
```json5
{
@ -344,38 +345,38 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
Note:
- i comandi personalizzati sono solo voci di menu; non implementano automaticamente il comportamento
- i comandi plugin/Skills possono comunque funzionare se digitati anche se non mostrati nel menu Telegram
- i comandi personalizzati sono solo voci di menu; non implementano automaticamente un comportamento
- i comandi di plugin/Skills possono comunque funzionare se digitati anche se non sono mostrati nel menu Telegram
Se i comandi nativi sono disabilitati, i built-in vengono rimossi. I comandi personalizzati/plugin possono comunque registrarsi se configurati.
Se i comandi nativi sono disabilitati, quelli integrati vengono rimossi. I comandi personalizzati/plugin possono comunque essere registrati se configurati.
Errori comuni di configurazione:
- `setMyCommands failed` con `BOT_COMMANDS_TOO_MUCH` significa che il menu Telegram è ancora in overflow dopo il trimming; riduci i comandi plugin/Skills/personalizzati oppure disabilita `channels.telegram.commands.native`.
- `setMyCommands failed` con `BOT_COMMANDS_TOO_MUCH` significa che il menu Telegram è ancora troppo pieno dopo il trimming; riduci i comandi di plugin/Skills/personalizzati oppure disabilita `channels.telegram.commands.native`.
- `setMyCommands failed` con errori di rete/fetch di solito significa che DNS/HTTPS in uscita verso `api.telegram.org` è bloccato.
### Comandi di abbinamento del dispositivo (plugin `device-pair`)
### Comandi di abbinamento dispositivo (plugin `device-pair`)
Quando il plugin `device-pair` è installato:
1. `/pair` genera un codice di configurazione
2. incolla il codice nell'app iOS
3. `/pair pending` elenca le richieste in sospeso (inclusi ruolo/scope)
3. `/pair pending` elenca le richieste in sospeso (inclusi ruolo/ambiti)
4. approva la richiesta:
- `/pair approve <requestId>` per approvazione esplicita
- `/pair approve` quando c'è una sola richiesta in sospeso
- `/pair approve latest` per la più recente
Il codice di configurazione trasporta un token bootstrap a breve durata. Il built-in bootstrap handoff mantiene il token del node primario con `scopes: []`; qualsiasi token operatore trasferito resta limitato a `operator.approvals`, `operator.read`, `operator.talk.secrets` e `operator.write`. I controlli di scope bootstrap hanno prefisso di ruolo, quindi quell'allowlist operatore soddisfa solo le richieste operatore; i ruoli non operatore richiedono comunque scope sotto il proprio prefisso di ruolo.
Il codice di configurazione contiene un token bootstrap di breve durata. Il passaggio bootstrap integrato mantiene il token del node primario su `scopes: []`; qualsiasi token operatore passato resta limitato a `operator.approvals`, `operator.read`, `operator.talk.secrets` e `operator.write`. I controlli degli ambiti bootstrap hanno prefisso di ruolo, quindi tale allowlist operatore soddisfa solo richieste operatore; i ruoli non operatore richiedono comunque ambiti sotto il proprio prefisso di ruolo.
Se un dispositivo ritenta con dettagli di autenticazione cambiati (per esempio ruolo/scope/chiave pubblica), la precedente richiesta in sospeso viene sostituita e la nuova richiesta usa un `requestId` diverso. Esegui di nuovo `/pair pending` prima di approvare.
Se un dispositivo ritenta con dettagli di autenticazione modificati (per esempio ruolo/ambiti/chiave pubblica), la precedente richiesta in sospeso viene sostituita e la nuova richiesta usa un `requestId` diverso. Esegui di nuovo `/pair pending` prima di approvare.
Maggiori dettagli: [Abbinamento](/it/channels/pairing#pair-via-telegram-recommended-for-ios).
</Accordion>
<Accordion title="Pulsanti inline">
Configura lo scope della tastiera inline:
Configura l'ambito della tastiera inline:
```json5
{
@ -407,7 +408,7 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
}
```
Scope:
Ambiti:
- `off`
- `dm`
@ -415,7 +416,7 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
- `all`
- `allowlist` (predefinito)
Il legacy `capabilities: ["inlineButtons"]` corrisponde a `inlineButtons: "all"`.
Il legacy `capabilities: ["inlineButtons"]` viene mappato a `inlineButtons: "all"`.
Esempio di azione messaggio:
@ -424,30 +425,30 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
action: "send",
channel: "telegram",
to: "123456789",
message: "Scegli un'opzione:",
message: "Choose an option:",
buttons: [
[
{ text: "", callback_data: "yes" },
{ text: "Yes", callback_data: "yes" },
{ text: "No", callback_data: "no" },
],
[{ text: "Annulla", callback_data: "cancel" }],
[{ text: "Cancel", callback_data: "cancel" }],
],
}
```
I clic di callback vengono passati all'agente come testo:
I clic sui callback vengono passati all'agente come testo:
`callback_data: <value>`
</Accordion>
<Accordion title="Azioni messaggio Telegram per agenti e automazione">
Le azioni tool Telegram includono:
Le azioni degli strumenti Telegram includono:
- `sendMessage` (`to`, `content`, facoltativi `mediaUrl`, `replyToMessageId`, `messageThreadId`)
- `sendMessage` (`to`, `content`, opzionale `mediaUrl`, `replyToMessageId`, `messageThreadId`)
- `react` (`chatId`, `messageId`, `emoji`)
- `deleteMessage` (`chatId`, `messageId`)
- `editMessage` (`chatId`, `messageId`, `content`)
- `createForumTopic` (`chatId`, `name`, facoltativi `iconColor`, `iconCustomEmojiId`)
- `createForumTopic` (`chatId`, `name`, opzionale `iconColor`, `iconCustomEmojiId`)
Le azioni messaggio del canale espongono alias ergonomici (`send`, `react`, `delete`, `edit`, `sticker`, `sticker-search`, `topic-create`).
@ -459,7 +460,7 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
- `channels.telegram.actions.sticker` (predefinito: disabilitato)
Nota: `edit` e `topic-create` sono attualmente abilitati per impostazione predefinita e non hanno toggle `channels.telegram.actions.*` separati.
Gli invii a runtime usano lo snapshot attivo di config/secrets (avvio/ricarica), quindi i percorsi di azione non eseguono una nuova risoluzione ad hoc di SecretRef per ogni invio.
Gli invii a runtime usano lo snapshot attivo di config/secrets (avvio/ricarica), quindi i percorsi delle azioni non eseguono una nuova risoluzione ad hoc di SecretRef per ogni invio.
Semantica della rimozione delle reazioni: [/tools/reactions](/it/tools/reactions)
@ -468,8 +469,8 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
<Accordion title="Tag di threading delle risposte">
Telegram supporta tag espliciti di threading delle risposte nell'output generato:
- `[[reply_to_current]]` risponde al messaggio che ha attivato la richiesta
- `[[reply_to:<id>]]` risponde a uno specifico ID messaggio Telegram
- `[[reply_to_current]]` risponde al messaggio che ha attivato l'azione
- `[[reply_to:<id>]]` risponde a un ID messaggio Telegram specifico
`channels.telegram.replyToMode` controlla la gestione:
@ -489,15 +490,15 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
- percorso config del topic:
`channels.telegram.groups.<chatId>.topics.<threadId>`
Caso speciale del topic Generale (`threadId=1`):
Caso speciale topic generale (`threadId=1`):
- gli invii dei messaggi omettono `message_thread_id` (Telegram rifiuta `sendMessage(...thread_id=1)`)
- gli invii di messaggi omettono `message_thread_id` (Telegram rifiuta `sendMessage(...thread_id=1)`)
- le azioni di digitazione includono comunque `message_thread_id`
Ereditarietà del topic: le voci del topic ereditano le impostazioni del gruppo salvo override (`requireMention`, `allowFrom`, `skills`, `systemPrompt`, `enabled`, `groupPolicy`).
`agentId` è solo del topic e non eredita dai valori predefiniti del gruppo.
`agentId` è solo del topic e non viene ereditato dai predefiniti del gruppo.
**Instradamento agente per topic**: ogni topic può instradare a un agente diverso impostando `agentId` nella config del topic. Questo fornisce a ogni topic il proprio workspace, memoria e sessione isolati. Esempio:
**Instradamento per agente per topic**: ogni topic può instradare verso un agente diverso impostando `agentId` nella config del topic. Questo dà a ogni topic il proprio workspace, memoria e sessione isolati. Esempio:
```json5
{
@ -506,9 +507,9 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
groups: {
"-1001234567890": {
topics: {
"1": { agentId: "main" }, // Topic Generale → agente main
"3": { agentId: "zu" }, // Topic Dev → agente zu
"5": { agentId: "coder" } // Revisione codice → agente coder
"1": { agentId: "main" }, // Topic generale → agente main
"3": { agentId: "zu" }, // Topic dev → agente zu
"5": { agentId: "coder" } // Code review → agente coder
}
}
}
@ -575,8 +576,8 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
**Avvio ACP vincolato al thread dalla chat**:
- `/acp spawn <agent> --thread here|auto` può associare il topic Telegram corrente a una nuova sessione ACP.
- I successivi messaggi nel topic vengono instradati direttamente alla sessione ACP associata (non è richiesto `/acp steer`).
- OpenClaw fissa nel topic il messaggio di conferma dello spawn dopo un binding riuscito.
- I messaggi successivi del topic vengono instradati direttamente alla sessione ACP associata (non è richiesto `/acp steer`).
- OpenClaw fissa il messaggio di conferma dello spawn nel topic dopo un'associazione riuscita.
- Richiede `channels.telegram.threadBindings.spawnAcpSessions=true`.
Il contesto del template include:
@ -584,9 +585,9 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
- `MessageThreadId`
- `IsForum`
Comportamento thread DM:
Comportamento dei thread DM:
- le chat private con `message_thread_id` mantengono l'instradamento DM ma usano chiavi di sessione e target di risposta consapevoli del thread.
- le chat private con `message_thread_id` mantengono l'instradamento DM ma usano chiavi di sessione/thread target delle risposte consapevoli del thread.
</Accordion>
@ -626,7 +627,7 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
}
```
Le video note non supportano didascalie; l'eventuale testo del messaggio viene inviato separatamente.
Le video note non supportano didascalie; il testo del messaggio fornito viene inviato separatamente.
### Sticker
@ -648,7 +649,7 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
- `~/.openclaw/telegram/sticker-cache.json`
Gli sticker vengono descritti una volta (quando possibile) e memorizzati in cache per ridurre chiamate vision ripetute.
Gli sticker vengono descritti una sola volta (quando possibile) e memorizzati in cache per ridurre le chiamate ripetute alla vision.
Abilita le azioni sticker:
@ -664,7 +665,7 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
}
```
Azione per inviare uno sticker:
Azione di invio sticker:
```json5
{
@ -681,19 +682,19 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
{
action: "sticker-search",
channel: "telegram",
query: "cat waving",
query: "gatto che saluta",
limit: 5,
}
```
</Accordion>
<Accordion title="Notifiche delle reazioni">
<Accordion title="Notifiche di reazione">
Le reazioni Telegram arrivano come aggiornamenti `message_reaction` (separati dai payload dei messaggi).
Quando abilitate, OpenClaw accoda eventi di sistema come:
Quando abilitate, OpenClaw mette in coda eventi di sistema come:
- `Reazione Telegram aggiunta: 👍 da Alice (@alice) al msg 42`
- `Reazione Telegram aggiunta: 👍 da Alice (@alice) sul msg 42`
Configurazione:
@ -704,7 +705,7 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
- `own` significa solo reazioni degli utenti ai messaggi inviati dal bot (best-effort tramite cache dei messaggi inviati).
- Gli eventi di reazione rispettano comunque i controlli di accesso Telegram (`dmPolicy`, `allowFrom`, `groupPolicy`, `groupAllowFrom`); i mittenti non autorizzati vengono scartati.
- Telegram non fornisce ID thread negli aggiornamenti delle reazioni.
- Telegram non fornisce ID thread negli aggiornamenti di reazione.
- i gruppi non forum vengono instradati alla sessione della chat di gruppo
- i gruppi forum vengono instradati alla sessione del topic generale del gruppo (`:topic:1`), non al topic esatto di origine
@ -720,7 +721,7 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
- `channels.telegram.accounts.<accountId>.ackReaction`
- `channels.telegram.ackReaction`
- `messages.ackReaction`
- fallback all'emoji dell'identità dell'agente (`agents.list[].identity.emoji`, altrimenti "👀")
- fallback all'emoji di identità dell'agente (`agents.list[].identity.emoji`, altrimenti "👀")
Note:
@ -729,13 +730,13 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
</Accordion>
<Accordion title="Scritture di config da eventi e comandi Telegram">
Le scritture della config del canale sono abilitate per impostazione predefinita (`configWrites !== false`).
<Accordion title="Scritture di configurazione da eventi e comandi Telegram">
Le scritture della configurazione del canale sono abilitate per impostazione predefinita (`configWrites !== false`).
Le scritture attivate da Telegram includono:
- eventi di migrazione del gruppo (`migrate_to_chat_id`) per aggiornare `channels.telegram.groups`
- `/config set` e `/config unset` (richiede l'abilitazione del comando)
- `/config set` e `/config unset` (richiede l'abilitazione dei comandi)
Disabilita:
@ -762,28 +763,28 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
- `channels.telegram.webhookHost` facoltativo (predefinito `127.0.0.1`)
- `channels.telegram.webhookPort` facoltativo (predefinito `8787`)
Il listener locale predefinito per la modalità Webhook si collega a `127.0.0.1:8787`.
Il listener locale predefinito per la modalità Webhook è associato a `127.0.0.1:8787`.
Se il tuo endpoint pubblico è diverso, metti un reverse proxy davanti e punta `webhookUrl` all'URL pubblico.
Imposta `webhookHost` (per esempio `0.0.0.0`) quando hai intenzionalmente bisogno di ingresso esterno.
Imposta `webhookHost` (per esempio `0.0.0.0`) quando hai intenzionalmente bisogno di ingress esterno.
</Accordion>
<Accordion title="Limiti, retry e target CLI">
- Il valore predefinito di `channels.telegram.textChunkLimit` è 4000.
- `channels.telegram.chunkMode="newline"` preferisce i confini dei paragrafi (righe vuote) prima della divisione per lunghezza.
- `channels.telegram.textChunkLimit` ha come valore predefinito 4000.
- `channels.telegram.chunkMode="newline"` preferisce i confini dei paragrafi (righe vuote) prima della suddivisione per lunghezza.
- `channels.telegram.mediaMaxMb` (predefinito 100) limita la dimensione dei media Telegram in ingresso e in uscita.
- `channels.telegram.timeoutSeconds` sovrascrive il timeout del client API Telegram (se non impostato, si applica il valore predefinito di grammY).
- `channels.telegram.pollingStallThresholdMs` ha come valore predefinito `120000`; regolalo tra `30000` e `600000` solo per falsi positivi di riavvio per stallo del polling.
- la cronologia del contesto di gruppo usa `channels.telegram.historyLimit` oppure `messages.groupChat.historyLimit` (predefinito 50); `0` la disabilita.
- `channels.telegram.timeoutSeconds` sovrascrive il timeout del client Telegram API (se non impostato, si applica il valore predefinito di grammY).
- `channels.telegram.pollingStallThresholdMs` ha come valore predefinito `120000`; regolalo tra `30000` e `600000` solo per falsi positivi nei riavvii per stallo del polling.
- la cronologia del contesto di gruppo usa `channels.telegram.historyLimit` o `messages.groupChat.historyLimit` (predefinito 50); `0` disabilita.
- il contesto supplementare di risposta/citazione/inoltro viene attualmente passato così come ricevuto.
- le allowlist Telegram servono principalmente a controllare chi può attivare l'agente, non rappresentano un confine completo di redazione del contesto supplementare.
- le allowlist Telegram regolano principalmente chi può attivare l'agente, non costituiscono un confine completo di redazione del contesto supplementare.
- controlli della cronologia DM:
- `channels.telegram.dmHistoryLimit`
- `channels.telegram.dms["<user_id>"].historyLimit`
- la configurazione `channels.telegram.retry` si applica agli helper di invio Telegram (CLI/tool/azioni) per errori API in uscita recuperabili.
Il target di invio CLI può essere un ID chat numerico o uno username:
Il target di invio CLI può essere un ID chat numerico o un username:
```bash
openclaw message send --channel telegram --target 123456789 --message "hi"
@ -815,7 +816,7 @@ openclaw message poll --channel telegram --target -1001234567890:topic:42 \
Gating delle azioni:
- `channels.telegram.actions.sendMessage=false` disabilita i messaggi Telegram in uscita, inclusi i poll
- `channels.telegram.actions.poll=false` disabilita la creazione di poll Telegram lasciando abilitati gli invii normali
- `channels.telegram.actions.poll=false` disabilita la creazione di poll Telegram lasciando abilitati gli invii regolari
</Accordion>
@ -829,32 +830,32 @@ openclaw message poll --channel telegram --target -1001234567890:topic:42 \
- `channels.telegram.execApprovals.target` (`dm` | `channel` | `both`, predefinito: `dm`)
- `agentFilter`, `sessionFilter`
Gli approvatori devono essere ID utente Telegram numerici. Telegram abilita automaticamente le approvazioni exec native quando `enabled` non è impostato oppure è `"auto"` e può essere risolto almeno un approvatore, da `execApprovals.approvers` oppure dalla config numerica del proprietario dell'account (`allowFrom` e `defaultTo` del messaggio diretto). Imposta `enabled: false` per disabilitare esplicitamente Telegram come client di approvazione nativo. In caso contrario, le richieste di approvazione usano come fallback altri percorsi di approvazione configurati o la policy di fallback delle approvazioni exec.
Gli approvatori devono essere ID utente Telegram numerici. Telegram abilita automaticamente le approvazioni exec native quando `enabled` non è impostato o è `"auto"` e può essere risolto almeno un approvatore, sia da `execApprovals.approvers` sia dalla configurazione numerica del proprietario dell'account (`allowFrom` e `defaultTo` per messaggio diretto). Imposta `enabled: false` per disabilitare esplicitamente Telegram come client di approvazione nativo. In caso contrario, le richieste di approvazione usano come fallback altre route di approvazione configurate o la policy di fallback delle approvazioni exec.
Telegram renderizza anche i pulsanti di approvazione condivisi usati dagli altri canali chat. L'adapter nativo Telegram aggiunge soprattutto instradamento dei DM degli approvatori, fanout chat/topic e indicatori di digitazione prima della consegna.
Quando questi pulsanti sono presenti, rappresentano la UX principale di approvazione; OpenClaw
Telegram renderizza anche i pulsanti di approvazione condivisi usati dagli altri canali chat. L'adapter nativo Telegram aggiunge principalmente il routing dei DM degli approvatori, il fanout su canale/topic e gli hint di digitazione prima della consegna.
Quando questi pulsanti sono presenti, costituiscono la UX di approvazione primaria; OpenClaw
dovrebbe includere un comando manuale `/approve` solo quando il risultato del tool indica
che le approvazioni via chat non sono disponibili o che l'approvazione manuale è l'unico percorso.
che le approvazioni chat non sono disponibili o che l'approvazione manuale è l'unico percorso.
Regole di consegna:
- `target: "dm"` invia i prompt di approvazione solo ai DM degli approvatori risolti
- `target: "channel"` invia il prompt di nuovo alla chat/topic Telegram di origine
- `target: "both"` invia ai DM degli approvatori e alla chat/topic di origine
- `target: "both"` invia sia ai DM degli approvatori sia alla chat/topic di origine
Solo gli approvatori risolti possono approvare o negare. I non approvatori non possono usare `/approve` e non possono usare i pulsanti di approvazione Telegram.
Comportamento della risoluzione delle approvazioni:
Comportamento di risoluzione delle approvazioni:
- Gli ID con prefisso `plugin:` vengono sempre risolti tramite le approvazioni plugin.
- Gli altri ID provano prima `exec.approval.resolve`.
- Se Telegram è autorizzato anche per le approvazioni plugin e il gateway dice
che l'approvazione exec è sconosciuta/scaduta, Telegram riprova una volta tramite
- gli ID con prefisso `plugin:` vengono sempre risolti tramite approvazioni del plugin.
- gli altri ID provano prima `exec.approval.resolve`.
- se Telegram è autorizzato anche per le approvazioni del plugin e il gateway dice
che l'approvazione exec è sconosciuta/scaduta, Telegram ritenta una volta tramite
`plugin.approval.resolve`.
- I rifiuti/errori reali delle approvazioni exec non ricadono silenziosamente sulla
risoluzione delle approvazioni plugin.
- i rifiuti/errori reali delle approvazioni exec non ricadono silenziosamente nella
risoluzione delle approvazioni del plugin.
La consegna nel canale mostra il testo del comando nella chat, quindi abilita `channel` o `both` solo in gruppi/topic fidati. Quando il prompt arriva in un topic del forum, OpenClaw conserva il topic sia per il prompt di approvazione sia per il follow-up successivo all'approvazione. Le approvazioni exec scadono dopo 30 minuti per impostazione predefinita.
La consegna sul canale mostra il testo del comando nella chat, quindi abilita `channel` o `both` solo in gruppi/topic fidati. Quando il prompt arriva in un topic del forum, OpenClaw preserva il topic sia per il prompt di approvazione sia per il follow-up post-approvazione. Le approvazioni exec scadono dopo 30 minuti per impostazione predefinita.
I pulsanti di approvazione inline dipendono anche dal fatto che `channels.telegram.capabilities.inlineButtons` consenta la superficie target (`dm`, `group` o `all`).
@ -869,10 +870,10 @@ Quando l'agente incontra un errore di consegna o del provider, Telegram può ris
| Key | Values | Default | Description |
| ----------------------------------- | ----------------- | ------- | ----------------------------------------------------------------------------------------------- |
| `channels.telegram.errorPolicy` | `reply`, `silent` | `reply` | `reply` invia un messaggio di errore amichevole nella chat. `silent` sopprime completamente le risposte di errore. |
| `channels.telegram.errorPolicy` | `reply`, `silent` | `reply` | `reply` invia un messaggio di errore amichevole alla chat. `silent` sopprime completamente le risposte di errore. |
| `channels.telegram.errorCooldownMs` | number (ms) | `60000` | Tempo minimo tra risposte di errore alla stessa chat. Previene lo spam di errori durante le interruzioni. |
Sono supportati override per account, gruppo e topic (con la stessa ereditarietà delle altre chiavi di configurazione Telegram).
Sono supportati override per account, gruppo e topic (stessa ereditarietà delle altre chiavi di configurazione Telegram).
```json5
{
@ -882,7 +883,7 @@ Sono supportati override per account, gruppo e topic (con la stessa ereditariet
errorCooldownMs: 120000,
groups: {
"-1001234567890": {
errorPolicy: "silent", // sopprime gli errori in questo gruppo
errorPolicy: "silent", // sopprimi gli errori in questo gruppo
},
},
},
@ -896,10 +897,10 @@ Sono supportati override per account, gruppo e topic (con la stessa ereditariet
<Accordion title="Il bot non risponde ai messaggi di gruppo senza menzione">
- Se `requireMention=false`, la modalità privacy di Telegram deve consentire piena visibilità.
- BotFather: `/setprivacy` -> Disable
- quindi rimuovi e riaggiungi il bot al gruppo
- BotFather: `/setprivacy` -> Disattiva
- poi rimuovi e riaggiungi il bot al gruppo
- `openclaw channels status` avvisa quando la config si aspetta messaggi di gruppo senza menzione.
- `openclaw channels status --probe` può controllare ID gruppo numerici espliciti; il carattere jolly `"*"` non può essere verificato per appartenenza.
- `openclaw channels status --probe` può controllare ID gruppo numerici espliciti; il wildcard `"*"` non può essere verificato per membership.
- test rapido della sessione: `/activation always`.
</Accordion>
@ -907,28 +908,28 @@ Sono supportati override per account, gruppo e topic (con la stessa ereditariet
<Accordion title="Il bot non vede affatto i messaggi di gruppo">
- quando esiste `channels.telegram.groups`, il gruppo deve essere elencato (oppure includere `"*"`)
- verifica che il bot sia membro del gruppo
- verifica la membership del bot nel gruppo
- controlla i log: `openclaw logs --follow` per i motivi di esclusione
</Accordion>
<Accordion title="I comandi funzionano solo in parte o non funzionano affatto">
- autorizza la tua identità mittente (abbinamento e/o `allowFrom` numerico)
- autorizza la tua identità mittente (pairing e/o `allowFrom` numerico)
- l'autorizzazione dei comandi si applica comunque anche quando la policy di gruppo è `open`
- `setMyCommands failed` con `BOT_COMMANDS_TOO_MUCH` significa che il menu nativo ha troppe voci; riduci i comandi plugin/Skills/personalizzati oppure disabilita i menu nativi
- `setMyCommands failed` con `BOT_COMMANDS_TOO_MUCH` significa che il menu nativo ha troppe voci; riduci i comandi di plugin/Skills/personalizzati o disabilita i menu nativi
- `setMyCommands failed` con errori di rete/fetch di solito indica problemi di raggiungibilità DNS/HTTPS verso `api.telegram.org`
</Accordion>
<Accordion title="Instabilità di polling o rete">
<Accordion title="Instabilità del polling o della rete">
- Node 22+ + fetch/proxy personalizzati possono attivare un comportamento di abort immediato se i tipi AbortSignal non corrispondono.
- Alcuni host risolvono `api.telegram.org` prima su IPv6; un'uscita IPv6 guasta può causare errori intermittenti nelle API Telegram.
- Alcuni host risolvono `api.telegram.org` prima su IPv6; un'uscita IPv6 difettosa può causare errori intermittenti delle Telegram API.
- Se i log includono `TypeError: fetch failed` o `Network request for 'getUpdates' failed!`, OpenClaw ora li ritenta come errori di rete recuperabili.
- Se i log includono `Polling stall detected`, OpenClaw riavvia il polling e ricostruisce il trasporto Telegram dopo 120 secondi senza liveness completata del long poll per impostazione predefinita.
- Aumenta `channels.telegram.pollingStallThresholdMs` solo quando le chiamate `getUpdates` di lunga durata sono sane ma il tuo host continua a segnalare falsi riavvii per stallo del polling. Gli stalli persistenti indicano di solito problemi di proxy, DNS, IPv6 o uscita TLS tra l'host e `api.telegram.org`.
- Su host VPS con uscita diretta/TLS instabile, instrada le chiamate API Telegram tramite `channels.telegram.proxy`:
- Se i log includono `Polling stall detected`, OpenClaw riavvia il polling e ricostruisce il trasporto Telegram dopo 120 secondi senza liveness long-poll completata per impostazione predefinita.
- Aumenta `channels.telegram.pollingStallThresholdMs` solo quando le chiamate `getUpdates` di lunga durata sono sane ma il tuo host continua a segnalare falsi riavvii per stallo del polling. Gli stalli persistenti di solito indicano problemi di proxy, DNS, IPv6 o uscita TLS tra l'host e `api.telegram.org`.
- Su host VPS con uscita diretta/TLS instabile, instrada le chiamate Telegram API tramite `channels.telegram.proxy`:
```yaml
channels:
@ -936,7 +937,7 @@ channels:
proxy: socks5://<user>:<password>@proxy-host:1080
```
- Node 22+ usa per impostazione predefinita `autoSelectFamily=true` (tranne WSL2) e `dnsResultOrder=ipv4first`.
- Node 22+ usa per impostazione predefinita `autoSelectFamily=true` (eccetto WSL2) e `dnsResultOrder=ipv4first`.
- Se il tuo host è WSL2 o funziona esplicitamente meglio con comportamento solo IPv4, forza la selezione della famiglia:
```yaml
@ -947,10 +948,10 @@ channels:
```
- Le risposte nell'intervallo benchmark RFC 2544 (`198.18.0.0/15`) sono già consentite
per impostazione predefinita per i download dei media Telegram. Se un fake-IP o
proxy trasparente fidato riscrive `api.telegram.org` verso qualche altro
indirizzo privato/interno/special-use durante i download dei media, puoi attivare
il bypass solo Telegram:
per i download dei media Telegram per impostazione predefinita. Se un fake-IP fidato o
un proxy trasparente riscrive `api.telegram.org` verso qualche altro
indirizzo privato/interno/special-use durante i download dei media, puoi
abilitare il bypass solo Telegram:
```yaml
channels:
@ -962,15 +963,11 @@ channels:
- Lo stesso opt-in è disponibile per account in
`channels.telegram.accounts.<accountId>.network.dangerouslyAllowPrivateNetwork`.
- Se il tuo proxy risolve gli host media Telegram in `198.18.x.x`, lascia prima
disattivato il flag pericoloso. I media Telegram già consentono per impostazione predefinita
l'intervallo benchmark RFC 2544.
disattivato il flag dangerous. I media Telegram già consentono per impostazione predefinita l'intervallo
benchmark RFC 2544.
<Warning>
`channels.telegram.network.dangerouslyAllowPrivateNetwork` indebolisce le protezioni
SSRF dei media Telegram. Usalo solo per ambienti proxy fidati controllati
dall'operatore, come routing fake-IP di Clash, Mihomo o Surge, quando
sintetizzano risposte private o special-use fuori dall'intervallo benchmark
RFC 2544. Lascialo disattivato per il normale accesso Telegram su internet pubblico.
`channels.telegram.network.dangerouslyAllowPrivateNetwork` indebolisce le protezioni SSRF dei media Telegram. Usalo solo per ambienti proxy fidati controllati dall'operatore come Clash, Mihomo o routing fake-IP di Surge quando sintetizzano risposte private o special-use al di fuori dell'intervallo benchmark RFC 2544. Lascialo disattivato per il normale accesso Telegram su internet pubblico.
</Warning>
- Override env (temporanei):
@ -987,7 +984,7 @@ dig +short api.telegram.org AAAA
</Accordion>
</AccordionGroup>
Altro aiuto: [Risoluzione dei problemi del canale](/it/channels/troubleshooting).
Altri aiuti: [Risoluzione dei problemi del canale](/it/channels/troubleshooting).
## Puntatori al riferimento della configurazione Telegram
@ -995,76 +992,77 @@ Riferimento principale:
- `channels.telegram.enabled`: abilita/disabilita l'avvio del canale.
- `channels.telegram.botToken`: token del bot (BotFather).
- `channels.telegram.tokenFile`: legge il token da un percorso file regolare. I symlink vengono rifiutati.
- `channels.telegram.tokenFile`: legge il token da un percorso di file regolare. I symlink vengono rifiutati.
- `channels.telegram.dmPolicy`: `pairing | allowlist | open | disabled` (predefinito: pairing).
- `channels.telegram.allowFrom`: allowlist DM (ID utente Telegram numerici). `allowlist` richiede almeno un ID mittente. `open` richiede `"*"`. `openclaw doctor --fix` può risolvere voci legacy `@username` in ID e può recuperare voci allowlist dai file pairing-store nei flussi di migrazione allowlist.
- `channels.telegram.allowFrom`: allowlist DM (ID utente Telegram numerici). `allowlist` richiede almeno un ID mittente. `open` richiede `"*"`. `openclaw doctor --fix` può risolvere le voci legacy `@username` in ID e può recuperare le voci allowlist dai file pairing-store nei flussi di migrazione allowlist.
- `channels.telegram.actions.poll`: abilita o disabilita la creazione di poll Telegram (predefinito: abilitato; richiede comunque `sendMessage`).
- `channels.telegram.defaultTo`: target Telegram predefinito usato dalla CLI `--deliver` quando non viene fornito un `--reply-to` esplicito.
- `channels.telegram.defaultTo`: target Telegram predefinito usato dalla CLI `--deliver` quando non viene fornito alcun `--reply-to` esplicito.
- `channels.telegram.groupPolicy`: `open | allowlist | disabled` (predefinito: allowlist).
- `channels.telegram.groupAllowFrom`: allowlist dei mittenti di gruppo (ID utente Telegram numerici). `openclaw doctor --fix` può risolvere voci legacy `@username` in ID. Le voci non numeriche vengono ignorate al momento dell'autenticazione. L'autenticazione di gruppo non usa il fallback del pairing-store DM (`2026.2.25+`).
- `channels.telegram.groupAllowFrom`: allowlist dei mittenti di gruppo (ID utente Telegram numerici). `openclaw doctor --fix` può risolvere le voci legacy `@username` in ID. Le voci non numeriche vengono ignorate al momento dell'autorizzazione. L'autenticazione di gruppo non usa il fallback del pairing-store DM (`2026.2.25+`).
- Precedenza multi-account:
- Quando sono configurati due o più ID account, imposta `channels.telegram.defaultAccount` (oppure includi `channels.telegram.accounts.default`) per rendere esplicito l'instradamento predefinito.
- Se nessuno dei due è impostato, OpenClaw usa come fallback il primo ID account normalizzato e `openclaw doctor` mostra un avviso.
- Quando sono configurati due o più ID account, imposta `channels.telegram.defaultAccount` (oppure includi `channels.telegram.accounts.default`) per rendere esplicito il routing predefinito.
- Se nessuno dei due è impostato, OpenClaw usa come fallback il primo ID account normalizzato e `openclaw doctor` segnala un avviso.
- `channels.telegram.accounts.default.allowFrom` e `channels.telegram.accounts.default.groupAllowFrom` si applicano solo all'account `default`.
- Gli account con nome ereditano `channels.telegram.allowFrom` e `channels.telegram.groupAllowFrom` quando i valori a livello account non sono impostati.
- Gli account con nome non ereditano `channels.telegram.accounts.default.allowFrom` / `groupAllowFrom`.
- `channels.telegram.groups`: valori predefiniti per gruppo + allowlist (usa `"*"` per valori predefiniti globali).
- `channels.telegram.groups.<id>.groupPolicy`: override per gruppo di groupPolicy (`open | allowlist | disabled`).
- `channels.telegram.groups.<id>.requireMention`: gating di menzione predefinito.
- `channels.telegram.groups.<id>.groupPolicy`: override per gruppo di `groupPolicy` (`open | allowlist | disabled`).
- `channels.telegram.groups.<id>.requireMention`: valore predefinito del gating delle menzioni.
- `channels.telegram.groups.<id>.skills`: filtro Skills (omesso = tutte le Skills, vuoto = nessuna).
- `channels.telegram.groups.<id>.allowFrom`: override allowlist dei mittenti per gruppo.
- `channels.telegram.groups.<id>.allowFrom`: override per gruppo dell'allowlist dei mittenti.
- `channels.telegram.groups.<id>.systemPrompt`: prompt di sistema aggiuntivo per il gruppo.
- `channels.telegram.groups.<id>.enabled`: disabilita il gruppo quando è `false`.
- `channels.telegram.groups.<id>.topics.<threadId>.*`: override per topic (campi del gruppo + `agentId` solo topic).
- `channels.telegram.groups.<id>.topics.<threadId>.agentId`: instrada questo topic a un agente specifico (sovrascrive l'instradamento a livello gruppo e binding).
- `channels.telegram.groups.<id>.topics.<threadId>.groupPolicy`: override per topic di groupPolicy (`open | allowlist | disabled`).
- `channels.telegram.groups.<id>.topics.<threadId>.requireMention`: override per topic del gating di menzione.
- `channels.telegram.groups.<id>.topics.<threadId>.*`: override per topic (campi del gruppo + `agentId` solo-topic).
- `channels.telegram.groups.<id>.topics.<threadId>.agentId`: instrada questo topic a un agente specifico (sovrascrive il routing a livello gruppo e il routing binding).
- `channels.telegram.groups.<id>.topics.<threadId>.groupPolicy`: override per topic di `groupPolicy` (`open | allowlist | disabled`).
- `channels.telegram.groups.<id>.topics.<threadId>.requireMention`: override per topic del gating delle menzioni.
- `bindings[]` di primo livello con `type: "acp"` e ID topic canonico `chatId:topic:topicId` in `match.peer.id`: campi di binding persistente del topic ACP (vedi [Agenti ACP](/it/tools/acp-agents#channel-specific-settings)).
- `channels.telegram.direct.<id>.topics.<threadId>.agentId`: instrada i topic DM a un agente specifico (stesso comportamento dei topic forum).
- `channels.telegram.execApprovals.enabled`: abilita Telegram come client di approvazione exec basato su chat per questo account.
- `channels.telegram.execApprovals.approvers`: ID utente Telegram autorizzati ad approvare o negare richieste exec. Facoltativo quando `channels.telegram.allowFrom` oppure un `channels.telegram.defaultTo` diretto identifica già il proprietario.
- `channels.telegram.execApprovals.approvers`: ID utente Telegram autorizzati ad approvare o negare richieste exec. Facoltativo quando `channels.telegram.allowFrom` o un `channels.telegram.defaultTo` diretto identifica già il proprietario.
- `channels.telegram.execApprovals.target`: `dm | channel | both` (predefinito: `dm`). `channel` e `both` preservano il topic Telegram di origine quando presente.
- `channels.telegram.execApprovals.agentFilter`: filtro facoltativo per ID agente per i prompt di approvazione inoltrati.
- `channels.telegram.execApprovals.sessionFilter`: filtro facoltativo per chiave sessione (sottostringa o regex) per i prompt di approvazione inoltrati.
- `channels.telegram.accounts.<account>.execApprovals`: override per account dell'instradamento delle approvazioni exec Telegram e dell'autorizzazione degli approvatori.
- `channels.telegram.execApprovals.agentFilter`: filtro ID agente facoltativo per i prompt di approvazione inoltrati.
- `channels.telegram.execApprovals.sessionFilter`: filtro chiave di sessione facoltativo (sottostringa o regex) per i prompt di approvazione inoltrati.
- `channels.telegram.accounts.<account>.execApprovals`: override per account per il routing delle approvazioni exec Telegram e l'autorizzazione degli approvatori.
- `channels.telegram.capabilities.inlineButtons`: `off | dm | group | all | allowlist` (predefinito: allowlist).
- `channels.telegram.accounts.<account>.capabilities.inlineButtons`: override per account.
- `channels.telegram.commands.nativeSkills`: abilita/disabilita i comandi nativi Skills di Telegram.
- `channels.telegram.commands.nativeSkills`: abilita/disabilita i comandi nativi Telegram per Skills.
- `channels.telegram.replyToMode`: `off | first | all` (predefinito: `off`).
- `channels.telegram.textChunkLimit`: dimensione dei chunk in uscita (caratteri).
- `channels.telegram.chunkMode`: `length` (predefinito) oppure `newline` per dividere sulle righe vuote (confini dei paragrafi) prima del chunking per lunghezza.
- `channels.telegram.linkPreview`: attiva/disattiva le anteprime dei link per i messaggi in uscita (predefinito: true).
- `channels.telegram.streaming`: `off | partial | block | progress` (anteprima streaming live; predefinito: `partial`; `progress` corrisponde a `partial`; `block` è compatibilità legacy della modalità anteprima). L'anteprima streaming Telegram usa un singolo messaggio di anteprima che viene modificato sul posto.
- `channels.telegram.linkPreview`: abilita/disabilita le anteprime dei link per i messaggi in uscita (predefinito: true).
- `channels.telegram.streaming`: `off | partial | block | progress` (anteprima stream live; predefinito: `partial`; `progress` viene mappato a `partial`; `block` è compatibilità legacy per la modalità anteprima). L'anteprima streaming Telegram usa un singolo messaggio di anteprima modificato in place.
- `channels.telegram.streaming.preview.toolProgress`: riutilizza il messaggio di anteprima live per gli aggiornamenti di tool/progresso quando l'anteprima streaming è attiva (predefinito: `true`). Imposta `false` per mantenere messaggi separati di tool/progresso.
- `channels.telegram.mediaMaxMb`: limite dei media Telegram in ingresso/uscita (MB, predefinito: 100).
- `channels.telegram.retry`: policy di retry per gli helper di invio Telegram (CLI/tool/azioni) su errori API in uscita recuperabili (tentativi, minDelayMs, maxDelayMs, jitter).
- `channels.telegram.network.autoSelectFamily`: override di Node autoSelectFamily (true=abilita, false=disabilita). Predefinito abilitato su Node 22+, con WSL2 disabilitato per impostazione predefinita.
- `channels.telegram.retry`: policy di retry per gli helper di invio Telegram (CLI/tool/azioni) sugli errori API in uscita recuperabili (tentativi, minDelayMs, maxDelayMs, jitter).
- `channels.telegram.network.autoSelectFamily`: override di Node autoSelectFamily (true=abilita, false=disabilita). Predefinito abilitato su Node 22+, con WSL2 predefinito disabilitato.
- `channels.telegram.network.dnsResultOrder`: override dell'ordine dei risultati DNS (`ipv4first` o `verbatim`). Predefinito `ipv4first` su Node 22+.
- `channels.telegram.network.dangerouslyAllowPrivateNetwork`: opt-in pericoloso per ambienti fidati con fake-IP o proxy trasparente in cui i download dei media Telegram risolvono `api.telegram.org` verso indirizzi privati/interni/special-use al di fuori del range benchmark RFC 2544 consentito per impostazione predefinita.
- `channels.telegram.network.dangerouslyAllowPrivateNetwork`: opt-in pericoloso per ambienti fidati fake-IP o transparent-proxy in cui i download dei media Telegram risolvono `api.telegram.org` in indirizzi privati/interni/special-use al di fuori dell'intervallo benchmark RFC 2544 consentito per impostazione predefinita.
- `channels.telegram.proxy`: URL proxy per le chiamate Bot API (SOCKS/HTTP).
- `channels.telegram.webhookUrl`: abilita la modalità Webhook (richiede `channels.telegram.webhookSecret`).
- `channels.telegram.webhookSecret`: secret Webhook (obbligatorio quando `webhookUrl` è impostato).
- `channels.telegram.webhookPath`: percorso Webhook locale (predefinito `/telegram-webhook`).
- `channels.telegram.webhookHost`: host locale di bind Webhook (predefinito `127.0.0.1`).
- `channels.telegram.webhookPort`: porta locale di bind Webhook (predefinito `8787`).
- `channels.telegram.webhookPath`: percorso locale Webhook (predefinito `/telegram-webhook`).
- `channels.telegram.webhookHost`: host bind locale Webhook (predefinito `127.0.0.1`).
- `channels.telegram.webhookPort`: porta bind locale Webhook (predefinito `8787`).
- `channels.telegram.actions.reactions`: gating delle reazioni tool Telegram.
- `channels.telegram.actions.sendMessage`: gating degli invii di messaggi tool Telegram.
- `channels.telegram.actions.deleteMessage`: gating delle eliminazioni di messaggi tool Telegram.
- `channels.telegram.actions.sticker`: gating delle azioni sticker Telegram — invio e ricerca (predefinito: false).
- `channels.telegram.reactionNotifications`: `off | own | all` — controlla quali reazioni attivano eventi di sistema (predefinito: `own` se non impostato).
- `channels.telegram.reactionLevel`: `off | ack | minimal | extensive` — controlla la capacità di reazione dell'agente (predefinito: `minimal` se non impostato).
- `channels.telegram.errorPolicy`: `reply | silent` — controlla il comportamento delle risposte di errore (predefinito: `reply`). Supporta override per account/gruppo/topic.
- `channels.telegram.errorPolicy`: `reply | silent` — controlla il comportamento delle risposte di errore (predefinito: `reply`). Sono supportati override per account/gruppo/topic.
- `channels.telegram.errorCooldownMs`: ms minimi tra risposte di errore alla stessa chat (predefinito: `60000`). Previene lo spam di errori durante le interruzioni.
- [Riferimento configurazione - Telegram](/it/gateway/configuration-reference#telegram)
Campi Telegram specifici ad alto segnale:
Campi Telegram-specifici ad alto segnale:
- avvio/autenticazione: `enabled`, `botToken`, `tokenFile`, `accounts.*` (`tokenFile` deve puntare a un file regolare; i symlink vengono rifiutati)
- avvio/auth: `enabled`, `botToken`, `tokenFile`, `accounts.*` (`tokenFile` deve puntare a un file regolare; i symlink vengono rifiutati)
- controllo accessi: `dmPolicy`, `allowFrom`, `groupPolicy`, `groupAllowFrom`, `groups`, `groups.*.topics.*`, `bindings[]` di primo livello (`type: "acp"`)
- approvazioni exec: `execApprovals`, `accounts.*.execApprovals`
- comando/menu: `commands.native`, `commands.nativeSkills`, `customCommands`
- threading/risposte: `replyToMode`
- streaming: `streaming` (anteprima), `blockStreaming`
- streaming: `streaming` (anteprima), `streaming.preview.toolProgress`, `blockStreaming`
- formattazione/consegna: `textChunkLimit`, `chunkMode`, `linkPreview`, `responsePrefix`
- media/rete: `mediaMaxMb`, `timeoutSeconds`, `pollingStallThresholdMs`, `retry`, `network.autoSelectFamily`, `network.dangerouslyAllowPrivateNetwork`, `proxy`
- Webhook: `webhookUrl`, `webhookSecret`, `webhookPath`, `webhookHost`

View File

@ -1,100 +1,137 @@
---
read_when:
- Esecuzione di più Gateway sulla stessa macchina
- Eseguire più Gateway sulla stessa macchina
- Hai bisogno di configurazione/stato/porte isolati per ogni Gateway
summary: Esegui più Gateway OpenClaw su un solo host (isolamento, porte e profili)
title: Gateway multipli
summary: Esegui più Gateway OpenClaw su un singolo host (isolamento, porte e profili)
title: Più Gateway
x-i18n:
generated_at: "2026-04-05T13:52:25Z"
generated_at: "2026-04-21T17:45:36Z"
model: gpt-5.4
provider: openai
source_hash: 061f204bf56b28c6bd0e2c9aee6c561a8a162ca219060117fea4d3a007f01899
source_hash: 8c3fcb921bc6596040e9249467964bd9dcd40ea7c16e958bb378247b0f994a7b
source_path: gateway/multiple-gateways.md
workflow: 15
---
# Gateway multipli (stesso host)
# Più Gateway (stesso host)
Nella maggior parte delle configurazioni è consigliabile usare un solo Gateway, perché un singolo Gateway può gestire più connessioni di messaggistica e agenti. Se hai bisogno di un isolamento più forte o di ridondanza (ad esempio un rescue bot), esegui Gateway separati con profili/porte isolati.
La maggior parte delle configurazioni dovrebbe usare un solo Gateway, perché un singolo Gateway può gestire più connessioni di messaggistica e agenti. Se hai bisogno di un isolamento più forte o di ridondanza (ad esempio, un bot di emergenza), esegui Gateway separati con profili/porte isolati.
## Checklist di isolamento (obbligatoria)
- `OPENCLAW_CONFIG_PATH` — file di configurazione per istanza
- `OPENCLAW_STATE_DIR` — sessioni, credenziali, cache per istanza
- `agents.defaults.workspace` — radice dello spazio di lavoro per istanza
- `gateway.port` (o `--port`) — univoco per istanza
- `agents.defaults.workspace` — radice del workspace per istanza
- `gateway.port` (o `--port`) — univoco per ogni istanza
- Le porte derivate (browser/canvas) non devono sovrapporsi
Se questi elementi sono condivisi, incontrerai race di configurazione e conflitti di porta.
Se questi elementi sono condivisi, incontrerai race condition di configurazione e conflitti di porta.
## Consigliato: profili (`--profile`)
## Consigliato: usa il profilo predefinito per il principale, un profilo con nome per quello di emergenza
I profili delimitano automaticamente `OPENCLAW_STATE_DIR` + `OPENCLAW_CONFIG_PATH` e aggiungono un suffisso ai nomi dei servizi.
I profili applicano automaticamente l'ambito a `OPENCLAW_STATE_DIR` + `OPENCLAW_CONFIG_PATH` e aggiungono un suffisso ai nomi dei servizi. Per
la maggior parte delle configurazioni con bot di emergenza, mantieni il bot principale sul profilo predefinito e assegna solo
al bot di emergenza un profilo con nome come `rescue`.
```bash
# principale
openclaw --profile main setup
openclaw --profile main gateway --port 18789
# principale (profilo predefinito)
openclaw setup
openclaw gateway --port 18789
# rescue
# emergenza
openclaw --profile rescue setup
openclaw --profile rescue gateway --port 19001
```
Servizi per profilo:
Servizi:
```bash
openclaw --profile main gateway install
openclaw gateway install
openclaw --profile rescue gateway install
```
## Guida rescue-bot
Se vuoi che entrambi i Gateway usino profili con nome, funziona comunque, ma non è
obbligatorio.
Esegui un secondo Gateway sullo stesso host con i propri:
## Guida al bot di emergenza
- profilo/configurazione
- directory di stato
- spazio di lavoro
- porta base (più le porte derivate)
Configurazione consigliata:
Questo mantiene il rescue bot isolato dal bot principale, così può eseguire debug o applicare modifiche di configurazione se il bot primario è fuori servizio.
- mantieni il bot principale sul profilo predefinito
- esegui il bot di emergenza con `--profile rescue`
- usa un bot Telegram completamente separato per l'account di emergenza
- mantieni il bot di emergenza su una porta base diversa, ad esempio `19001`
Spaziatura delle porte: lascia almeno 20 porte tra le porte base, in modo che le porte derivate di browser/canvas/CDP non entrino mai in conflitto.
Questo mantiene il bot di emergenza isolato dal bot principale, così può eseguire debug o applicare
modifiche di configurazione se il bot primario non è disponibile. Lascia almeno 20 porte tra le
porte base, così le porte derivate browser/canvas/CDP non entreranno mai in conflitto.
### Come installare (rescue bot)
### Canale/account di emergenza consigliato
Per la maggior parte delle configurazioni, usa un bot Telegram completamente separato per il profilo di emergenza.
Perché Telegram:
- facile da mantenere riservato ai soli operatori
- token e identità del bot separati
- indipendente dal canale/dall'installazione dell'app del bot principale
- semplice percorso di ripristino basato su DM quando il bot principale non funziona
La parte importante è l'indipendenza completa: account bot separato, credenziali separate, profilo OpenClaw separato, workspace separato e porta separata.
### Flusso di installazione consigliato
Usa questa come configurazione predefinita, a meno che tu non abbia un motivo forte per fare qualcosa di
diverso:
```bash
# Bot principale (esistente o nuovo, senza parametro --profile)
# Esegue sulla porta 18789 + porte Chrome CDC/Canvas/...
# Bot principale (profilo predefinito, porta 18789)
openclaw onboard
openclaw gateway install
# Rescue bot (profilo + porte isolati)
# Bot di emergenza (bot Telegram separato, profilo separato, porta 19001)
openclaw --profile rescue onboard
# Note:
# - il nome dello spazio di lavoro avrà per impostazione predefinita il suffisso -rescue
# - la porta dovrebbe essere almeno 18789 + 20 porte,
# meglio scegliere una porta base completamente diversa, come 19789,
# - il resto dell'onboarding è uguale al normale
# Per installare il servizio (se non è avvenuto automaticamente durante la configurazione)
openclaw --profile rescue gateway install
```
## Mappatura delle porte (derivate)
Durante `openclaw --profile rescue onboard`:
- usa il token del bot Telegram separato
- mantieni il profilo `rescue`
- usa una porta base di almeno 20 superiore a quella del bot principale
- accetta il workspace di emergenza predefinito, a meno che tu non ne gestisca già uno personalmente
Se l'onboarding ha già installato per te il servizio di emergenza, il comando finale
`gateway install` non è necessario.
### Cosa cambia l'onboarding
`openclaw --profile rescue onboard` usa il normale flusso di onboarding, ma
scrive tutto in un profilo separato.
In pratica, questo significa che il bot di emergenza ottiene i propri:
- file di configurazione
- directory di stato
- workspace (per impostazione predefinita `~/.openclaw/workspace-rescue`)
- nome del servizio gestito
Per il resto, i prompt sono gli stessi del normale onboarding.
## Mappatura delle porte (derivata)
Porta base = `gateway.port` (o `OPENCLAW_GATEWAY_PORT` / `--port`).
- porta del servizio di controllo browser = base + 2 (solo loopback)
- l'host canvas è servito sul server HTTP del Gateway (stessa porta di `gateway.port`)
- porta del servizio di controllo del browser = base + 2 (solo loopback)
- l'host canvas viene servito sul server HTTP del Gateway (stessa porta di `gateway.port`)
- le porte CDP del profilo browser vengono allocate automaticamente da `browser.controlPort + 9 .. + 108`
Se sostituisci una di queste impostazioni in config o env, devi mantenerle univoche per istanza.
Se esegui override di uno qualsiasi di questi valori nella configurazione o nelle variabili d'ambiente, devi mantenerli univoci per ogni istanza.
## Note su browser/CDP (errore comune)
- **Non** fissare `browser.cdpUrl` agli stessi valori su più istanze.
- Ogni istanza ha bisogno della propria porta di controllo browser e del proprio intervallo CDP (derivato dalla sua porta gateway).
- Ogni istanza ha bisogno della propria porta di controllo del browser e del proprio intervallo CDP (derivato dalla sua porta gateway).
- Se hai bisogno di porte CDP esplicite, imposta `browser.profiles.<name>.cdpPort` per istanza.
- Chrome remoto: usa `browser.profiles.<name>.cdpUrl` (per profilo, per istanza).
@ -102,7 +139,7 @@ Se sostituisci una di queste impostazioni in config o env, devi mantenerle univo
```bash
OPENCLAW_CONFIG_PATH=~/.openclaw/main.json \
OPENCLAW_STATE_DIR=~/.openclaw-main \
OPENCLAW_STATE_DIR=~/.openclaw \
openclaw gateway --port 18789
OPENCLAW_CONFIG_PATH=~/.openclaw/rescue.json \
@ -110,18 +147,18 @@ OPENCLAW_STATE_DIR=~/.openclaw-rescue \
openclaw gateway --port 19001
```
## Controlli rapidi
## Verifiche rapide
```bash
openclaw --profile main gateway status --deep
openclaw gateway status --deep
openclaw --profile rescue gateway status --deep
openclaw --profile rescue gateway probe
openclaw --profile main status
openclaw status
openclaw --profile rescue status
openclaw --profile rescue browser status
```
Interpretazione:
- `gateway status --deep` aiuta a individuare servizi launchd/systemd/schtasks obsoleti da installazioni precedenti.
- `gateway status --deep` aiuta a individuare servizi `launchd`/`systemd`/`schtasks` obsoleti provenienti da installazioni precedenti.
- Il testo di avviso di `gateway probe`, come `multiple reachable gateways detected`, è previsto solo quando esegui intenzionalmente più gateway isolati.

View File

@ -5,10 +5,10 @@ read_when:
summary: 'Comandi slash: testo vs nativi, configurazione e comandi supportati'
title: Comandi slash
x-i18n:
generated_at: "2026-04-21T13:35:26Z"
generated_at: "2026-04-21T17:45:36Z"
model: gpt-5.4
provider: openai
source_hash: d90ddee54af7c05b7fdf486590561084581d750e42cd14674d43bbdc0984df5d
source_hash: 26923608329ba2aeece2d4bc8edfa40ae86e03719a9f590f26ff79f57d97521d
source_path: tools/slash-commands.md
workflow: 15
---
@ -16,21 +16,21 @@ x-i18n:
# Comandi slash
I comandi sono gestiti dal Gateway. La maggior parte dei comandi deve essere inviata come messaggio **autonomo** che inizia con `/`.
Il comando bash della chat solo host usa `! <cmd>` (con `/bash <cmd>` come alias).
Il comando di chat bash solo host usa `! <cmd>` (con `/bash <cmd>` come alias).
Esistono due sistemi correlati:
- **Comandi**: messaggi `/...` autonomi.
- **Direttive**: `/think`, `/fast`, `/verbose`, `/trace`, `/reasoning`, `/elevated`, `/exec`, `/model`, `/queue`.
- Le direttive vengono rimosse dal messaggio prima che il modello lo veda.
- Nei normali messaggi di chat (non composti solo da direttive), vengono trattate come “suggerimenti inline” e **non** rendono persistenti le impostazioni della sessione.
- Nei messaggi composti solo da direttive (il messaggio contiene solo direttive), diventano persistenti per la sessione e rispondono con una conferma.
- Nei normali messaggi di chat (non composti solo da direttive), vengono trattate come “suggerimenti inline” e **non** mantengono le impostazioni della sessione.
- Nei messaggi composti solo da direttive (il messaggio contiene solo direttive), persistono nella sessione e rispondono con una conferma.
- Le direttive vengono applicate solo ai **mittenti autorizzati**. Se `commands.allowFrom` è impostato, è l'unica
allowlist usata; altrimenti l'autorizzazione deriva dalle allowlist/associazione del canale più `commands.useAccessGroups`.
I mittenti non autorizzati vedono le direttive trattate come testo normale.
Esistono anche alcune **scorciatoie inline** (solo per mittenti in allowlist/autorizzati): `/help`, `/commands`, `/status`, `/whoami` (`/id`).
Vengono eseguite immediatamente, rimosse prima che il modello veda il messaggio, e il testo rimanente continua nel normale flusso.
Esistono anche alcune **scorciatoie inline** (solo mittenti in allowlist/autorizzati): `/help`, `/commands`, `/status`, `/whoami` (`/id`).
Vengono eseguite immediatamente, rimosse prima che il modello veda il messaggio, e il testo rimanente continua nel flusso normale.
## Configurazione
@ -62,45 +62,46 @@ Vengono eseguite immediatamente, rimosse prima che il modello veda il messaggio,
- `commands.text` (predefinito `true`) abilita il parsing di `/...` nei messaggi di chat.
- Sulle superfici senza comandi nativi (WhatsApp/WebChat/Signal/iMessage/Google Chat/Microsoft Teams), i comandi testuali continuano a funzionare anche se lo imposti su `false`.
- `commands.native` (predefinito `"auto"`) registra i comandi nativi.
- Auto: attivo per Discord/Telegram; disattivo per Slack (finché non aggiungi gli slash command); ignorato per i provider senza supporto nativo.
- Imposta `channels.discord.commands.native`, `channels.telegram.commands.native` o `channels.slack.commands.native` per forzare il comportamento per provider (bool o `"auto"`).
- Auto: attivo per Discord/Telegram; disattivo per Slack (finché non aggiungi i comandi slash); ignorato per i provider senza supporto nativo.
- Imposta `channels.discord.commands.native`, `channels.telegram.commands.native` o `channels.slack.commands.native` per sovrascrivere per provider (bool o `"auto"`).
- `false` cancella i comandi registrati in precedenza su Discord/Telegram all'avvio. I comandi Slack sono gestiti nell'app Slack e non vengono rimossi automaticamente.
- `commands.nativeSkills` (predefinito `"auto"`) registra i comandi **skill** in modo nativo quando supportato.
- Auto: attivo per Discord/Telegram; disattivo per Slack (Slack richiede la creazione di uno slash command per ogni skill).
- Imposta `channels.discord.commands.nativeSkills`, `channels.telegram.commands.nativeSkills` o `channels.slack.commands.nativeSkills` per forzare il comportamento per provider (bool o `"auto"`).
- `commands.bash` (predefinito `false`) abilita `! <cmd>` per eseguire comandi shell host (`/bash <cmd>` è un alias; richiede le allowlist `tools.elevated`).
- `commands.bashForegroundMs` (predefinito `2000`) controlla per quanto tempo bash aspetta prima di passare alla modalità in background (`0` manda subito in background).
- Auto: attivo per Discord/Telegram; disattivo per Slack (Slack richiede la creazione di un comando slash per skill).
- Imposta `channels.discord.commands.nativeSkills`, `channels.telegram.commands.nativeSkills` o `channels.slack.commands.nativeSkills` per sovrascrivere per provider (bool o `"auto"`).
- `commands.bash` (predefinito `false`) abilita `! <cmd>` per eseguire comandi della shell host (`/bash <cmd>` è un alias; richiede le allowlist `tools.elevated`).
- `commands.bashForegroundMs` (predefinito `2000`) controlla per quanto tempo bash attende prima di passare alla modalità in background (`0` manda subito in background).
- `commands.config` (predefinito `false`) abilita `/config` (legge/scrive `openclaw.json`).
- `commands.mcp` (predefinito `false`) abilita `/mcp` (legge/scrive la configurazione MCP gestita da OpenClaw in `mcp.servers`).
- `commands.plugins` (predefinito `false`) abilita `/plugins` (rilevamento/stato dei plugin più controlli di installazione + abilitazione/disabilitazione).
- `commands.mcp` (predefinito `false`) abilita `/mcp` (legge/scrive la configurazione MCP gestita da OpenClaw sotto `mcp.servers`).
- `commands.plugins` (predefinito `false`) abilita `/plugins` (individuazione/stato dei plugin più controlli di installazione e abilitazione/disabilitazione).
- `commands.debug` (predefinito `false`) abilita `/debug` (override solo runtime).
- `commands.restart` (predefinito `true`) abilita `/restart` più le azioni degli strumenti di riavvio del gateway.
- `commands.ownerAllowFrom` (opzionale) imposta l'allowlist esplicita del proprietario per le superfici di comandi/strumenti riservate al proprietario. È separata da `commands.allowFrom`.
- `commands.ownerDisplay` controlla come gli id del proprietario compaiono nel system prompt: `raw` o `hash`.
- `commands.ownerAllowFrom` (opzionale) imposta l'allowlist esplicita del proprietario per le superfici di comandi/strumenti solo proprietario. È separata da `commands.allowFrom`.
- `commands.ownerDisplay` controlla come gli ID del proprietario appaiono nel system prompt: `raw` o `hash`.
- `commands.ownerDisplaySecret` imposta facoltativamente il segreto HMAC usato quando `commands.ownerDisplay="hash"`.
- `commands.allowFrom` (opzionale) imposta un'allowlist per provider per l'autorizzazione dei comandi. Quando è configurata, è l'
- `commands.allowFrom` (opzionale) imposta un'allowlist per provider per l'autorizzazione dei comandi. Quando configurata, è l'
unica fonte di autorizzazione per comandi e direttive (`commands.useAccessGroups`
vengono ignorati). Usa `"*"` come impostazione globale predefinita; le chiavi specifiche del provider la sovrascrivono.
e le allowlist/associazione del canale vengono ignorati). Usa `"*"` per un valore predefinito globale; le chiavi specifiche del provider lo sovrascrivono.
- `commands.useAccessGroups` (predefinito `true`) applica allowlist/policy ai comandi quando `commands.allowFrom` non è impostato.
## Elenco dei comandi
Fonte di verità attuale:
Fonte di riferimento attuale:
- i built-in del core provengono da `src/auto-reply/commands-registry.shared.ts`
- i built-in core provengono da `src/auto-reply/commands-registry.shared.ts`
- i comandi dock generati provengono da `src/auto-reply/commands-registry.data.ts`
- i comandi dei plugin provengono dalle chiamate `registerCommand()` dei plugin
- la disponibilità effettiva sul tuo gateway dipende comunque da flag di configurazione, superficie del canale e plugin installati/abilitati
- la disponibilità effettiva sul tuo gateway dipende comunque dai flag di configurazione, dalla superficie del canale e dai plugin installati/abilitati
### Comandi built-in del core
### Comandi built-in core
Comandi built-in disponibili oggi:
- `/new [model]` avvia una nuova sessione; `/reset` è l'alias di reset.
- `/reset soft [message]` mantiene la trascrizione corrente, elimina gli ID di sessione del backend CLI riutilizzati e riesegue in-place il caricamento del prompt di avvio/sistema.
- `/compact [instructions]` compatta il contesto della sessione. Vedi [/concepts/compaction](/it/concepts/compaction).
- `/stop` interrompe l'esecuzione corrente.
- `/session idle <duration|off>` e `/session max-age <duration|off>` gestiscono la scadenza del binding del thread.
- `/think <level>` imposta il livello di pensiero. Le opzioni provengono dal profilo provider del modello attivo; i livelli comuni sono `off`, `minimal`, `low`, `medium` e `high`, con livelli personalizzati come `xhigh`, `adaptive`, `max` o il solo binario `on` dove supportato. Alias: `/thinking`, `/t`.
- `/think <level>` imposta il livello di pensiero. Le opzioni provengono dal profilo provider del modello attivo; i livelli comuni sono `off`, `minimal`, `low`, `medium` e `high`, con livelli personalizzati come `xhigh`, `adaptive`, `max` o `on` binario solo dove supportato. Alias: `/thinking`, `/t`.
- `/verbose on|off|full` attiva o disattiva l'output verboso. Alias: `/v`.
- `/trace on|off` attiva o disattiva l'output di trace del plugin per la sessione corrente.
- `/fast [status|on|off]` mostra o imposta la modalità veloce.
@ -110,57 +111,57 @@ Comandi built-in disponibili oggi:
- `/model [name|#|status]` mostra o imposta il modello.
- `/models [provider] [page] [limit=<n>|size=<n>|all]` elenca i provider o i modelli di un provider.
- `/queue <mode>` gestisce il comportamento della coda (`steer`, `interrupt`, `followup`, `collect`, `steer-backlog`) più opzioni come `debounce:2s cap:25 drop:summarize`.
- `/help` mostra il riepilogo sintetico della guida.
- `/help` mostra il riepilogo della guida breve.
- `/commands` mostra il catalogo dei comandi generato.
- `/tools [compact|verbose]` mostra cosa può usare in questo momento l'agente corrente.
- `/status` mostra lo stato del runtime, incluso l'utilizzo/quota del provider quando disponibile.
- `/tools [compact|verbose]` mostra cosa l'agente corrente può usare in questo momento.
- `/status` mostra lo stato di runtime, compreso l'uso/la quota del provider quando disponibile.
- `/tasks` elenca le attività in background attive/recenti per la sessione corrente.
- `/context [list|detail|json]` spiega come viene assemblato il contesto.
- `/export-session [path]` esporta la sessione corrente in HTML. Alias: `/export`.
- `/whoami` mostra il tuo id mittente. Alias: `/id`.
- `/whoami` mostra il tuo ID mittente. Alias: `/id`.
- `/skill <name> [input]` esegue una skill per nome.
- `/allowlist [list|add|remove] ...` gestisce le voci dell'allowlist. Solo testuale.
- `/allowlist [list|add|remove] ...` gestisce le voci dell'allowlist. Solo testo.
- `/approve <id> <decision>` risolve le richieste di approvazione exec.
- `/btw <question>` pone una domanda laterale senza modificare il contesto futuro della sessione. Vedi [/tools/btw](/it/tools/btw).
- `/btw <question>` pone una domanda laterale senza cambiare il contesto futuro della sessione. Vedi [/tools/btw](/it/tools/btw).
- `/subagents list|kill|log|info|send|steer|spawn` gestisce le esecuzioni dei sub-agent per la sessione corrente.
- `/acp spawn|cancel|steer|close|sessions|status|set-mode|set|cwd|permissions|timeout|model|reset-options|doctor|install|help` gestisce le sessioni ACP e le opzioni di runtime.
- `/focus <target>` associa il thread Discord corrente o l'argomento/conversazione Telegram a un target di sessione.
- `/focus <target>` associa il thread Discord o l'argomento/conversazione Telegram correnti a una destinazione di sessione.
- `/unfocus` rimuove l'associazione corrente.
- `/agents` elenca gli agent associati al thread per la sessione corrente.
- `/agents` elenca gli agenti associati al thread per la sessione corrente.
- `/kill <id|#|all>` interrompe uno o tutti i sub-agent in esecuzione.
- `/steer <id|#> <message>` invia istruzioni a un sub-agent in esecuzione. Alias: `/tell`.
- `/steer <id|#> <message>` invia steering a un sub-agent in esecuzione. Alias: `/tell`.
- `/config show|get|set|unset` legge o scrive `openclaw.json`. Solo proprietario. Richiede `commands.config: true`.
- `/mcp show|get|set|unset` legge o scrive la configurazione del server MCP gestita da OpenClaw in `mcp.servers`. Solo proprietario. Richiede `commands.mcp: true`.
- `/plugins list|inspect|show|get|install|enable|disable` ispeziona o modifica lo stato dei plugin. `/plugin` è un alias. Le scritture sono solo proprietario. Richiede `commands.plugins: true`.
- `/debug show|set|unset|reset` gestisce override di configurazione solo runtime. Solo proprietario. Richiede `commands.debug: true`.
- `/usage off|tokens|full|cost` controlla il piè di pagina di utilizzo per risposta o stampa un riepilogo locale dei costi.
- `/tts on|off|status|provider|limit|summary|audio|help` controlla il TTS. Vedi [/tools/tts](/it/tools/tts).
- `/mcp show|get|set|unset` legge o scrive la configurazione del server MCP gestita da OpenClaw sotto `mcp.servers`. Solo proprietario. Richiede `commands.mcp: true`.
- `/plugins list|inspect|show|get|install|enable|disable` ispeziona o modifica lo stato dei plugin. `/plugin` è un alias. Solo proprietario per le scritture. Richiede `commands.plugins: true`.
- `/debug show|set|unset|reset` gestisce gli override di configurazione solo runtime. Solo proprietario. Richiede `commands.debug: true`.
- `/usage off|tokens|full|cost` controlla il footer di utilizzo per risposta o stampa un riepilogo locale dei costi.
- `/tts on|off|status|provider|limit|summary|audio|help` controlla TTS. Vedi [/tools/tts](/it/tools/tts).
- `/restart` riavvia OpenClaw quando abilitato. Predefinito: abilitato; imposta `commands.restart: false` per disabilitarlo.
- `/activation mention|always` imposta la modalità di attivazione del gruppo.
- `/send on|off|inherit` imposta la policy di invio. Solo proprietario.
- `/bash <command>` esegue un comando shell host. Solo testuale. Alias: `! <command>`. Richiede `commands.bash: true` più le allowlist `tools.elevated`.
- `/bash <command>` esegue un comando della shell host. Solo testo. Alias: `! <command>`. Richiede `commands.bash: true` più le allowlist `tools.elevated`.
- `!poll [sessionId]` controlla un job bash in background.
- `!stop [sessionId]` arresta un job bash in background.
- `!stop [sessionId]` ferma un job bash in background.
### Comandi dock generati
I comandi dock sono generati dai plugin canale con supporto ai comandi nativi. Set incluso attuale:
I comandi dock sono generati dai plugin di canale con supporto ai comandi nativi. Set bundled attuale:
- `/dock-discord` (alias: `/dock_discord`)
- `/dock-mattermost` (alias: `/dock_mattermost`)
- `/dock-slack` (alias: `/dock_slack`)
- `/dock-telegram` (alias: `/dock_telegram`)
### Comandi dei plugin inclusi
### Comandi dei plugin bundled
I plugin inclusi possono aggiungere altri slash command. Comandi inclusi attuali in questo repository:
I plugin bundled possono aggiungere altri comandi slash. Comandi bundled attuali in questo repository:
- `/dreaming [on|off|status|help]` attiva o disattiva il dreaming della memoria. Vedi [Dreaming](/it/concepts/dreaming).
- `/pair [qr|status|pending|approve|cleanup|notify]` gestisce il flusso di associazione/configurazione del dispositivo. Vedi [Pairing](/it/channels/pairing).
- `/phone status|arm <camera|screen|writes|all> [duration]|disarm` arma temporaneamente i comandi ad alto rischio del nodo telefonico.
- `/phone status|arm <camera|screen|writes|all> [duration]|disarm` arma temporaneamente i comandi del nodo telefono ad alto rischio.
- `/voice status|list [limit]|set <voiceId|name>` gestisce la configurazione della voce Talk. Su Discord, il nome del comando nativo è `/talkvoice`.
- `/card ...` invia preset di rich card LINE. Vedi [LINE](/it/channels/line).
- `/codex status|models|threads|resume|compact|review|account|mcp|skills` ispeziona e controlla l'harness app-server Codex incluso. Vedi [Codex Harness](/it/plugins/codex-harness).
- `/codex status|models|threads|resume|compact|review|account|mcp|skills` ispeziona e controlla l'harness app-server Codex bundled. Vedi [Codex Harness](/it/plugins/codex-harness).
- Comandi solo QQBot:
- `/bot-ping`
- `/bot-version`
@ -170,7 +171,7 @@ I plugin inclusi possono aggiungere altri slash command. Comandi inclusi attuali
### Comandi skill dinamici
Le skill invocabili dall'utente sono esposte anche come slash command:
Anche le Skills invocabili dall'utente sono esposte come comandi slash:
- `/skill <name> [input]` funziona sempre come punto di ingresso generico.
- le skill possono anche apparire come comandi diretti come `/prose` quando la skill/il plugin li registra.
@ -178,38 +179,38 @@ Le skill invocabili dall'utente sono esposte anche come slash command:
Note:
- I comandi accettano facoltativamente un `:` tra il comando e gli argomenti (ad esempio `/think: high`, `/send: on`, `/help:`).
- `/new <model>` accetta un alias di modello, `provider/model` o il nome di un provider (corrispondenza fuzzy); se non trova corrispondenze, il testo viene trattato come corpo del messaggio.
- I comandi accettano facoltativamente `:` tra il comando e gli argomenti (per esempio `/think: high`, `/send: on`, `/help:`).
- `/new <model>` accetta un alias di modello, `provider/model` o un nome provider (corrispondenza fuzzy); se non c'è corrispondenza, il testo viene trattato come corpo del messaggio.
- Per il dettaglio completo dell'utilizzo del provider, usa `openclaw status --usage`.
- `/allowlist add|remove` richiede `commands.config=true` e rispetta `configWrites` del canale.
- Nei canali multi-account, anche `/allowlist --account <id>` orientato alla configurazione e `/config set channels.<provider>.accounts.<id>...` rispettano `configWrites` dell'account di destinazione.
- `/usage` controlla il piè di pagina di utilizzo per risposta; `/usage cost` stampa un riepilogo locale dei costi dai log di sessione di OpenClaw.
- `/usage` controlla il footer di utilizzo per risposta; `/usage cost` stampa un riepilogo locale dei costi dai log di sessione di OpenClaw.
- `/restart` è abilitato per impostazione predefinita; imposta `commands.restart: false` per disabilitarlo.
- `/plugins install <spec>` accetta le stesse specifiche di plugin di `openclaw plugins install`: percorso/archivio locale, pacchetto npm o `clawhub:<pkg>`.
- `/plugins install <spec>` accetta le stesse specifiche plugin di `openclaw plugins install`: percorso/archivio locale, pacchetto npm oppure `clawhub:<pkg>`.
- `/plugins enable|disable` aggiorna la configurazione del plugin e può richiedere un riavvio.
- Comando nativo solo Discord: `/vc join|leave|status` controlla i canali vocali (richiede `channels.discord.voice` e i comandi nativi; non disponibile come comando testuale).
- I comandi di binding dei thread di Discord (`/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age`) richiedono che i binding effettivi dei thread siano abilitati (`session.threadBindings.enabled` e/o `channels.discord.threadBindings.enabled`).
- Riferimento dei comandi ACP e comportamento del runtime: [ACP Agents](/it/tools/acp-agents).
- `/verbose` è pensato per il debug e una visibilità aggiuntiva; mantienilo **disattivato** nell'uso normale.
- `/trace` è più mirato di `/verbose`: mostra solo le righe di trace/debug possedute dal plugin e mantiene disattivo il normale output verboso di strumenti e stato.
- `/fast on|off` rende persistente un override di sessione. Usa l'opzione `inherit` nell'interfaccia Sessions per cancellarlo e tornare ai valori predefiniti della configurazione.
- `/fast` è specifico del provider: OpenAI/OpenAI Codex lo mappano a `service_tier=priority` sugli endpoint nativi Responses, mentre le richieste dirette pubbliche ad Anthropic, incluso il traffico autenticato OAuth inviato a `api.anthropic.com`, lo mappano a `service_tier=auto` o `standard_only`. Vedi [OpenAI](/it/providers/openai) e [Anthropic](/it/providers/anthropic).
- I riepiloghi degli errori degli strumenti vengono comunque mostrati quando pertinenti, ma il testo dettagliato degli errori viene incluso solo quando `/verbose` è `on` o `full`.
- `/reasoning`, `/verbose` e `/trace` sono rischiosi nei contesti di gruppo: possono rivelare reasoning interno, output degli strumenti o diagnostica dei plugin che non intendevi esporre. È preferibile lasciarli disattivati, soprattutto nelle chat di gruppo.
- `/model` rende immediatamente persistente il nuovo modello di sessione.
- Comando nativo solo Discord: `/vc join|leave|status` controlla i canali vocali (richiede `channels.discord.voice` e i comandi nativi; non disponibile come testo).
- I comandi Discord di binding del thread (`/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age`) richiedono che i thread binding effettivi siano abilitati (`session.threadBindings.enabled` e/o `channels.discord.threadBindings.enabled`).
- Riferimento del comando ACP e comportamento di runtime: [ACP Agents](/it/tools/acp-agents).
- `/verbose` è pensato per il debug e per una visibilità aggiuntiva; mantienilo **off** nell'uso normale.
- `/trace` è più ristretto di `/verbose`: mostra solo le righe di trace/debug proprie del plugin e mantiene disattivo il normale chatter verboso di strumenti.
- `/fast on|off` rende persistente un override di sessione. Usa l'opzione `inherit` nella UI Sessioni per cancellarlo e tornare ai valori predefiniti della configurazione.
- `/fast` è specifico del provider: OpenAI/OpenAI Codex lo mappano a `service_tier=priority` sugli endpoint nativi Responses, mentre le richieste Anthropic pubbliche dirette, incluso il traffico autenticato via OAuth inviato a `api.anthropic.com`, lo mappano a `service_tier=auto` o `standard_only`. Vedi [OpenAI](/it/providers/openai) e [Anthropic](/it/providers/anthropic).
- I riepiloghi dei fallimenti degli strumenti vengono comunque mostrati quando pertinenti, ma il testo dettagliato del fallimento è incluso solo quando `/verbose` è `on` o `full`.
- `/reasoning`, `/verbose` e `/trace` sono rischiosi nelle impostazioni di gruppo: possono rivelare reasoning interno, output degli strumenti o diagnostica dei plugin che non intendevi esporre. È preferibile lasciarli disattivati, soprattutto nelle chat di gruppo.
- `/model` rende persistente immediatamente il nuovo modello della sessione.
- Se l'agente è inattivo, l'esecuzione successiva lo usa subito.
- Se è già in corso un'esecuzione, OpenClaw contrassegna un cambio live come in attesa e riavvia nel nuovo modello solo in un punto di retry pulito.
- Se l'attività degli strumenti o l'output della risposta sono già iniziati, il cambio in attesa può restare in coda fino a una successiva opportunità di retry o al turno utente seguente.
- **Percorso rapido:** i messaggi composti solo da comandi provenienti da mittenti in allowlist vengono gestiti immediatamente (saltano coda + modello).
- **Filtro per menzioni nei gruppi:** i messaggi composti solo da comandi provenienti da mittenti in allowlist bypassano i requisiti di menzione.
- **Scorciatoie inline (solo mittenti in allowlist):** alcuni comandi funzionano anche quando sono incorporati in un messaggio normale e vengono rimossi prima che il modello veda il testo rimanente.
- Esempio: `hey /status` attiva una risposta di stato e il testo rimanente continua nel normale flusso.
- Se un'esecuzione è già attiva, OpenClaw contrassegna uno switch live come in sospeso e riavvia nel nuovo modello solo a un punto pulito di retry.
- Se l'attività degli strumenti o l'output della risposta sono già iniziati, lo switch in sospeso può restare in coda fino a una successiva opportunità di retry o al prossimo turno utente.
- **Percorso veloce:** i messaggi composti solo da comandi provenienti da mittenti in allowlist vengono gestiti immediatamente (saltano coda + modello).
- **Controllo tramite menzione nei gruppi:** i messaggi composti solo da comandi provenienti da mittenti in allowlist saltano i requisiti di menzione.
- **Scorciatoie inline (solo mittenti in allowlist):** alcuni comandi funzionano anche se incorporati in un messaggio normale e vengono rimossi prima che il modello veda il testo rimanente.
- Esempio: `hey /status` attiva una risposta di stato, e il testo rimanente continua nel flusso normale.
- Attualmente: `/help`, `/commands`, `/status`, `/whoami` (`/id`).
- I messaggi composti solo da comandi non autorizzati vengono ignorati silenziosamente e i token inline `/...` vengono trattati come testo normale.
- **Comandi skill:** le skill `user-invocable` sono esposte come slash command. I nomi vengono sanitizzati in `a-z0-9_` (massimo 32 caratteri); in caso di collisione ricevono suffissi numerici (ad esempio `_2`).
- `/skill <name> [input]` esegue una skill per nome (utile quando i limiti dei comandi nativi impediscono comandi per-skill).
- Per impostazione predefinita, i comandi skill vengono inoltrati al modello come richiesta normale.
- Le skill possono facoltativamente dichiarare `command-dispatch: tool` per instradare il comando direttamente a uno strumento (deterministico, senza modello).
- I messaggi composti solo da comandi non autorizzati vengono ignorati silenziosamente, e i token inline `/...` vengono trattati come testo normale.
- **Comandi skill:** le Skills `user-invocable` sono esposte come comandi slash. I nomi vengono sanificati in `a-z0-9_` (massimo 32 caratteri); le collisioni ricevono suffissi numerici (per esempio `_2`).
- `/skill <name> [input]` esegue una skill per nome (utile quando i limiti dei comandi nativi impediscono comandi per singola skill).
- Per impostazione predefinita, i comandi skill vengono inoltrati al modello come una richiesta normale.
- Le skill possono dichiarare facoltativamente `command-dispatch: tool` per instradare il comando direttamente a uno strumento (deterministico, senza modello).
- Esempio: `/prose` (plugin OpenProse) — vedi [OpenProse](/it/prose).
- **Argomenti dei comandi nativi:** Discord usa l'autocompletamento per le opzioni dinamiche (e menu a pulsanti quando ometti argomenti obbligatori). Telegram e Slack mostrano un menu a pulsanti quando un comando supporta scelte e ometti l'argomento.
@ -220,21 +221,20 @@ questa conversazione**.
- Il valore predefinito di `/tools` è compatto e ottimizzato per una rapida scansione.
- `/tools verbose` aggiunge brevi descrizioni.
- Le superfici con comandi nativi che supportano argomenti espongono lo stesso cambio di modalità `compact|verbose`.
- I risultati hanno ambito di sessione, quindi cambiare agente, canale, thread, autorizzazione del mittente o modello può
- Le superfici con comandi nativi che supportano argomenti espongono lo stesso selettore di modalità `compact|verbose`.
- I risultati sono limitati alla sessione, quindi cambiare agente, canale, thread, autorizzazione del mittente o modello può
modificare l'output.
- `/tools` include gli strumenti realmente raggiungibili a runtime, inclusi gli strumenti core, gli strumenti dei
plugin connessi e gli strumenti posseduti dal canale.
- `/tools` include gli strumenti effettivamente raggiungibili a runtime, inclusi strumenti core, strumenti di plugin collegati e strumenti del canale.
Per modificare profili e override, usa il pannello Tools dell'interfaccia Control o le superfici config/catalogo invece
Per modificare profili e override, usa il pannello Tools della UI Control o le superfici config/catalogo invece
di trattare `/tools` come un catalogo statico.
## Superfici di utilizzo (cosa appare dove)
- **Utilizzo/quota del provider** (esempio: “Claude 80% left”) appare in `/status` per il provider del modello corrente quando il tracciamento dell'utilizzo è abilitato. OpenClaw normalizza le finestre dei provider in `% left`; per MiniMax, i campi percentuali con solo il rimanente vengono invertiti prima della visualizzazione, e le risposte `model_remains` preferiscono la voce del modello chat più un'etichetta del piano con tag modello.
- **Righe token/cache** in `/status` possono ricadere sull'ultima voce di utilizzo della trascrizione quando lo snapshot live della sessione è scarno. I valori live esistenti non nulli continuano comunque ad avere la precedenza, e il fallback alla trascrizione può anche recuperare l'etichetta del modello runtime attivo più un totale più ampio orientato al prompt quando i totali memorizzati mancano o sono inferiori.
- **Token/costo per risposta** è controllato da `/usage off|tokens|full` (aggiunto alle normali risposte).
- `/model status` riguarda **modelli/autenticazione/endpoint**, non l'utilizzo.
- **Utilizzo/quota del provider** (esempio: “Claude 80% left”) appare in `/status` per il provider del modello corrente quando il tracciamento dell'utilizzo è abilitato. OpenClaw normalizza le finestre del provider in `% left`; per MiniMax, i campi percentuali solo-rimanenti vengono invertiti prima della visualizzazione, e le risposte `model_remains` privilegiano la voce del modello chat più un'etichetta di piano associata al modello.
- Le **righe token/cache** in `/status` possono usare come fallback l'ultima voce di utilizzo della trascrizione quando lo snapshot live della sessione è scarno. I valori live esistenti e diversi da zero mantengono comunque la priorità, e il fallback dalla trascrizione può anche recuperare l'etichetta del modello di runtime attivo più un totale più ampio orientato al prompt quando i totali memorizzati mancano o sono inferiori.
- I **token/costo per risposta** sono controllati da `/usage off|tokens|full` (aggiunti alle risposte normali).
- `/model status` riguarda **modelli/auth/endpoint**, non l'utilizzo.
## Selezione del modello (`/model`)
@ -253,14 +253,14 @@ Esempi:
Note:
- `/model` e `/model list` mostrano un selettore compatto numerato (famiglia del modello + provider disponibili).
- Su Discord, `/model` e `/models` aprono un selettore interattivo con menu a discesa di provider e modello più un passaggio Submit.
- `/model` e `/model list` mostrano un selettore compatto numerato (famiglia di modelli + provider disponibili).
- Su Discord, `/model` e `/models` aprono un selettore interattivo con menu a discesa per provider e modello più un passaggio Submit.
- `/model <#>` seleziona da quel selettore (e preferisce il provider corrente quando possibile).
- `/model status` mostra la vista dettagliata, incluso l'endpoint del provider configurato (`baseUrl`) e la modalità API (`api`) quando disponibili.
## Override di debug
`/debug` ti consente di impostare override di configurazione **solo runtime** (in memoria, non su disco). Solo proprietario. Disabilitato per impostazione predefinita; abilitalo con `commands.debug: true`.
`/debug` ti permette di impostare override di configurazione **solo runtime** (in memoria, non su disco). Solo proprietario. Disabilitato per impostazione predefinita; abilitalo con `commands.debug: true`.
Esempi:
@ -277,9 +277,9 @@ Note:
- Gli override si applicano immediatamente alle nuove letture della configurazione, ma **non** scrivono in `openclaw.json`.
- Usa `/debug reset` per cancellare tutti gli override e tornare alla configurazione su disco.
## Output trace del plugin
## Output di trace del plugin
`/trace` ti consente di attivare o disattivare le **righe di trace/debug del plugin con ambito di sessione** senza attivare la modalità verbose completa.
`/trace` ti permette di attivare o disattivare le **righe di trace/debug del plugin limitate alla sessione** senza attivare la modalità verbosa completa.
Esempi:
@ -291,16 +291,16 @@ Esempi:
Note:
- `/trace` senza argomenti mostra lo stato di trace della sessione corrente.
- `/trace on` abilita le righe trace del plugin per la sessione corrente.
- `/trace` senza argomenti mostra lo stato trace corrente della sessione.
- `/trace on` abilita le righe di trace del plugin per la sessione corrente.
- `/trace off` le disabilita di nuovo.
- Le righe di trace del plugin possono apparire in `/status` e come messaggio diagnostico di follow-up dopo la normale risposta dell'assistente.
- `/trace` non sostituisce `/debug`; `/debug` continua a gestire gli override di configurazione solo runtime.
- `/trace` non sostituisce `/verbose`; il normale output verboso di strumenti/stato continua ad appartenere a `/verbose`.
- `/trace` non sostituisce `/verbose`; il normale output verboso di strumenti/stato continua a appartenere a `/verbose`.
## Aggiornamenti della configurazione
`/config` scrive nella configurazione su disco (`openclaw.json`). Solo proprietario. Disabilitato per impostazione predefinita; abilitalo con `commands.config: true`.
`/config` scrive nella tua configurazione su disco (`openclaw.json`). Solo proprietario. Disabilitato per impostazione predefinita; abilitalo con `commands.config: true`.
Esempi:
@ -315,11 +315,11 @@ Esempi:
Note:
- La configurazione viene validata prima della scrittura; le modifiche non valide vengono rifiutate.
- Gli aggiornamenti di `/config` persistono dopo i riavvii.
- Gli aggiornamenti di `/config` persistono tra i riavvii.
## Aggiornamenti MCP
`/mcp` scrive le definizioni del server MCP gestite da OpenClaw sotto `mcp.servers`. Solo proprietario. Disabilitato per impostazione predefinita; abilitalo con `commands.mcp: true`.
`/mcp` scrive le definizioni dei server MCP gestite da OpenClaw sotto `mcp.servers`. Solo proprietario. Disabilitato per impostazione predefinita; abilitalo con `commands.mcp: true`.
Esempi:
@ -337,7 +337,7 @@ Note:
## Aggiornamenti dei plugin
`/plugins` consente agli operatori di ispezionare i plugin rilevati e attivare o disattivare l'abilitazione nella configurazione. I flussi in sola lettura possono usare `/plugin` come alias. Disabilitato per impostazione predefinita; abilitalo con `commands.plugins: true`.
`/plugins` permette agli operatori di ispezionare i plugin individuati e attivare/disattivare l'abilitazione nella configurazione. I flussi in sola lettura possono usare `/plugin` come alias. Disabilitato per impostazione predefinita; abilitalo con `commands.plugins: true`.
Esempi:
@ -353,24 +353,24 @@ Note:
- `/plugins list` e `/plugins show` usano il rilevamento reale dei plugin rispetto al workspace corrente più la configurazione su disco.
- `/plugins enable|disable` aggiorna solo la configurazione del plugin; non installa né disinstalla plugin.
- Dopo modifiche di abilitazione/disabilitazione, riavvia il gateway per applicarle.
- Dopo modifiche di enable/disable, riavvia il gateway per applicarle.
## Note sulle superfici
## Note sulla superficie
- **Comandi testuali** vengono eseguiti nella normale sessione di chat (i messaggi diretti condividono `main`, i gruppi hanno una propria sessione).
- **Comandi nativi** usano sessioni isolate:
- I **comandi testuali** vengono eseguiti nella normale sessione di chat (i DM condividono `main`, i gruppi hanno la propria sessione).
- I **comandi nativi** usano sessioni isolate:
- Discord: `agent:<agentId>:discord:slash:<userId>`
- Slack: `agent:<agentId>:slack:slash:<userId>` (prefisso configurabile tramite `channels.slack.slashCommand.sessionPrefix`)
- Telegram: `telegram:slash:<userId>` (indirizza la sessione della chat tramite `CommandTargetSessionKey`)
- **`/stop`** prende di mira la sessione di chat attiva così da poter interrompere l'esecuzione corrente.
- **Slack:** `channels.slack.slashCommand` è ancora supportato per un singolo comando in stile `/openclaw`. Se abiliti `commands.native`, devi creare uno slash command Slack per ogni comando built-in (con gli stessi nomi di `/help`). I menu argomento dei comandi per Slack vengono forniti come pulsanti Block Kit effimeri.
- Eccezione nativa Slack: registra `/agentstatus` (non `/status`) perché Slack riserva `/status`. Il comando testuale `/status` continua comunque a funzionare nei messaggi Slack.
- Telegram: `telegram:slash:<userId>` (punta alla sessione della chat tramite `CommandTargetSessionKey`)
- **`/stop`** punta alla sessione di chat attiva così può interrompere l'esecuzione corrente.
- **Slack:** `channels.slack.slashCommand` è ancora supportato per un singolo comando in stile `/openclaw`. Se abiliti `commands.native`, devi creare un comando slash Slack per ogni comando built-in (stessi nomi di `/help`). I menu degli argomenti dei comandi per Slack vengono forniti come pulsanti Block Kit effimeri.
- Eccezione nativa Slack: registra `/agentstatus` (non `/status`) perché Slack riserva `/status`. Il comando testuale `/status` continua a funzionare nei messaggi Slack.
## Domande laterali BTW
`/btw` è una rapida **domanda laterale** sulla sessione corrente.
A differenza della normale chat:
A differenza della chat normale:
- usa la sessione corrente come contesto di sfondo,
- viene eseguito come chiamata one-shot separata **senza strumenti**,
@ -378,13 +378,14 @@ A differenza della normale chat:
- non viene scritto nella cronologia della trascrizione,
- viene consegnato come risultato laterale live invece che come normale messaggio dell'assistente.
Questo rende `/btw` utile quando vuoi un chiarimento temporaneo mentre l'attività principale continua.
Questo rende `/btw` utile quando vuoi un chiarimento temporaneo mentre l'attività principale
continua.
Esempio:
```text
/btw cosa stiamo facendo in questo momento?
/btw what are we doing right now?
```
Vedi [BTW Side Questions](/it/tools/btw) per il comportamento completo e i
dettagli dell'esperienza utente del client.
Vedi [BTW Side Questions](/it/tools/btw) per il comportamento completo e i dettagli
della UX del client.