Associazione
Per impostazione predefinita, i messaggi diretti di Slack usano la modalità di associazione.
Comandi slash
Comportamento dei comandi nativi e catalogo dei comandi.
Risoluzione dei problemi dei canali
Procedure diagnostiche e di riparazione comuni a più canali.
Scelta del trasporto
Socket Mode e gli URL delle richieste HTTP offrono le stesse funzionalità per messaggistica, comandi slash, App Home e interattività. La scelta deve basarsi sul tipo di distribuzione, non sulle funzionalità.Scegliere Socket Mode per host con un singolo Gateway, portatili di sviluppo e reti locali che possono raggiungere
*.slack.com in uscita ma non possono accettare HTTPS in ingresso.Scegliere gli URL delle richieste HTTP quando si eseguono più repliche del Gateway dietro un bilanciatore del carico, quando il WSS in uscita è bloccato ma l’HTTPS in ingresso è consentito oppure quando i webhook di Slack vengono già terminati presso un proxy inverso.Modalità relay
La modalità relay separa l’ingresso da Slack dal Gateway OpenClaw. Un router attendibile gestisce l’unica connessione Slack Socket Mode, sceglie un Gateway di destinazione e inoltra un evento tipizzato tramite un websocket autenticato. Il Gateway continua a utilizzare il proprio token del bot per le chiamate in uscita all’API Web di Slack.wss://, a meno che non sia destinato a localhost. Il token bearer e la tabella di instradamento del router devono essere considerati parte del confine di autorizzazione di Slack: gli eventi instradati entrano nel normale gestore dei messaggi Slack come attivazioni autorizzate. Un slack_identity fornito dal router nel frame websocket hello può impostare il nome utente e l’icona predefiniti per l’uscita; un’identità esplicita fornita dal chiamante mantiene comunque la precedenza. La connessione relay si riconnette con gli stessi intervalli di backoff limitato di Socket Mode e cancella l’identità fornita dal router ogni volta che si disconnette.
Installazioni a livello di organizzazione Enterprise Grid
Un singolo account Slack può ricevere messaggi da ogni area di lavoro inclusa in un’installazione Enterprise Grid a livello di organizzazione. Scegliere Socket Mode diretto o gli URL delle richieste HTTP; la modalità relay non è supportata per gli account aziendali. Entrambi i manifest con privilegi minimi riportati di seguito abilitano solo il percorso degli eventi V1message e app_mention,
le risposte immediate e le reazioni di stato gestite dal listener.
Socket Mode
connections:write per Socket Mode,
quindi copiare il token del bot dall’installazione dell’organizzazione. Configurare l’account che
utilizza il token del bot installato a livello di organizzazione:
URL delle richieste HTTP
Utilizzare la modalità HTTP quando il Gateway dispone di un endpoint HTTPS pubblico e non apre una connessione Socket Mode. Sostituire l’URL di esempio con l’URL pubblicowebhookPath del Gateway (predefinito /slack/events):
enterpriseOrgInstall tramite auth.test di Slack.
Un token installato a livello di organizzazione senza il flag, oppure un token dell’area di lavoro con il flag,
causa il mancato avvio. Slack rimane la fonte autorevole per determinare quali aree di lavoro hanno
concesso l’installazione; OpenClaw applica quindi i criteri configurati per canali, utenti,
messaggi diretti e menzioni a ciascun evento recapitato. Enterprise V1 rifiuta tutti gli eventi
message e app_mention creati dai bot prima dell’inoltro, indipendentemente da
allowBots, poiché le installazioni a livello di organizzazione non forniscono un’identità del bot stabile
e qualificata per area di lavoro per prevenire i cicli.
Il supporto aziendale è intenzionalmente limitato agli eventi diretti Socket Mode o HTTP
message e app_mention e alle relative risposte immediate. La modalità relay,
i comandi slash, le interazioni, App Home, i listener degli eventi di reazione, gli elementi fissati, gli
strumenti di azione Slack, le approvazioni native di Slack, le associazioni, la consegna in coda o pianificata
e gli invii proattivi non sono disponibili per un account aziendale. Le reazioni di
conferma, digitazione e stato in uscita sono supportate tramite il client Slack
gestito dal listener e richiedono reactions:write; le notifiche delle reazioni
in ingresso e gli strumenti di azione per le reazioni rimangono non disponibili.
Le risposte immediate riutilizzano il comportamento standard di recapito di Slack per blocchi,
contenuti multimediali, metadati, ripiego dell’identità, anteprime dei link e conferme di ricezione, ma solo finché il
client convalidato di proprietà del listener rimane nel turno dell’evento attivo. La
coda di invio in memoria e i record di partecipazione ai thread sono partizionati in base allo
spazio di lavoro dell’evento; il client stesso non viene mai serializzato né reso persistente.
Le chiavi dei criteri dei canali e le voci dm.groupChannels devono utilizzare ID di canale Slack stabili non elaborati oppure il
formato channel:<id>. OpenClaw normalizza entrambi i formati nell’ID di canale non elaborato per la
corrispondenza in fase di esecuzione; i prefissi slack:, group: e mpim: impediscono l’avvio.
Le voci dei criteri utente devono utilizzare ID utente Slack stabili; nomi, slug, nomi visualizzati
e indirizzi email impediscono l’avvio. Gli ID devono utilizzare il prefisso e il corpo canonici in maiuscolo di Slack
(ad esempio, C0123456789 o U0123456789); le varianti in minuscolo e
le forme abbreviate simili impediscono l’avvio. Gli account Enterprise non possono abilitare
dangerouslyAllowNameMatching. Gli account Enterprise possono impostare il valore globale
mentionPatterns.mode, ma mentionPatterns.allowIn e
mentionPatterns.denyIn impediscono l’avvio perché gli ID di canale Slack semplici non sono
qualificati per spazio di lavoro e possono essere riutilizzati in spazi di lavoro diversi. Le installazioni nello spazio di lavoro
mantengono il comportamento esistente dei modelli di menzione con ambito. Ogni spazio di lavoro accettato
ottiene identità separate per instradamento, sessione, trascrizione, deduplicazione, cronologia e cache,
anche quando gli ID Slack coincidono. Nel flusso message sono supportati i normali messaggi utente
e gli eventi file_share creati dagli utenti; gli altri sottotipi di messaggio vengono
rifiutati prima dell’autorizzazione o della gestione degli eventi di sistema.
I messaggi diretti Enterprise devono essere disabilitati (dm.enabled=false o
dmPolicy="disabled") oppure esplicitamente aperti con dmPolicy="open" e
un valore effettivo dell’account allowFrom contenente il valore letterale "*". Un elenco di elementi consentiti vuoto
o ID specifici degli utenti senza "*" impediscono l’avvio. L’associazione e
gli elenchi di utenti consentiti per i messaggi diretti vengono rifiutati perché gli ID utente Slack non sono
qualificati per spazio di lavoro in tali archivi di autorizzazione. I criteri relativi al canale e al mittente
continuano ad applicarsi ai messaggi dei canali.
Installazione
plugins install registra e abilita il plugin. Non esegue alcuna operazione finché non vengono configurate l’app Slack e le impostazioni dei canali riportate di seguito. Consultare Plugin per le regole generali di installazione dei plugin.
Configurazione rapida
I manifesti di questa sezione creano un’installazione con ambito limitato allo spazio di lavoro. Per un’installazione nell’intera organizzazione Enterprise Grid, utilizzare invece il manifesto e flusso di lavoro dedicati per l’intera organizzazione.- Modalità Socket (predefinita)
- URL delle richieste HTTP
1
Creare una nuova app Slack
Aprire api.slack.com/apps → Create New App → From a manifest → selezionare lo spazio di lavoro → incollare uno dei manifesti riportati di seguito → Next → Create.Dopo che Slack ha creato l’app:
Recommended corrisponde al set completo di funzionalità del plugin Slack: App Home, comandi slash, file, reazioni, elementi fissati, messaggi diretti di gruppo e lettura di emoji/gruppi di utenti. Scegliere Minimal quando i criteri dello spazio di lavoro limitano gli ambiti: copre i messaggi diretti, la cronologia dei canali/gruppi, le menzioni e i comandi slash, ma esclude file, reazioni, elementi fissati, messaggi diretti di gruppo (
mpim:*), emoji:read e usergroups:read. Consultare Elenco di controllo del manifesto e degli ambiti per la motivazione di ciascun ambito e le opzioni aggiuntive, come ulteriori comandi slash.- Basic Information -> App-Level Tokens -> Generate Token and Scopes: aggiungere
connections:write, salvare e copiare l’App-Level Token. - Install App -> Install to Workspace: copiare il Bot User OAuth Token.
2
Configurare OpenClaw
Configurazione SecretRef consigliata:Ripiego sulle variabili di ambiente (solo account predefinito):
3
Avviare il Gateway
Ottimizzazione del trasporto in modalità Socket
Per impostazione predefinita, OpenClaw configura su 15 secondi il timeout pong del client SDK Slack per la modalità Socket. Modificare le impostazioni di trasporto solo quando è necessaria un’ottimizzazione specifica per lo spazio di lavoro o l’host:clientPingTimeout è il tempo di attesa del pong dopo l’invio di un ping client da parte dell’SDK; serverPingTimeout è il tempo di attesa dei ping del server Slack. I messaggi e gli eventi dell’app rimangono stato dell’applicazione, non segnali di attività del trasporto.
Note:
socketModeviene ignorato nella modalità URL di richiesta HTTP.- Le impostazioni
channels.slack.socketModedi base si applicano a tutti gli account Slack, salvo sostituzioni. Le sostituzioni per account utilizzanochannels.slack.accounts.<accountId>.socketMode; poiché si tratta della sostituzione di un oggetto, includere tutti i campi di ottimizzazione del socket desiderati per tale account. - Solo
clientPingTimeoutdispone di un valore predefinito OpenClaw (15000).serverPingTimeoutepingPongLoggingEnabledvengono passati all’SDK Slack solo quando sono configurati. - Il backoff per il riavvio della modalità Socket parte da circa 2 secondi e raggiunge un massimo di circa 30 secondi. Gli errori recuperabili di avvio, attesa dell’avvio e disconnessione vengono ritentati finché il canale non si arresta. Gli errori permanenti relativi all’account e alle credenziali, come autenticazione non valida, token revocati o ambiti mancanti, causano immediatamente un errore anziché essere ritentati indefinitamente.
Elenco di controllo del manifesto e degli ambiti
Il manifesto di base dell’app Slack è identico per la modalità Socket e per gli URL di richiesta HTTP. Cambiano solo il bloccosettings e il valore url del comando slash.
Manifesto di base (modalità Socket predefinita):
settings con la variante HTTP e aggiungere url a ogni comando slash. È richiesto un URL pubblico:
Impostazioni aggiuntive del manifesto
Rendono disponibili funzionalità diverse che estendono i valori predefiniti precedenti. Il manifesto predefinito abilita la scheda Home della sezione App Home di Slack e sottoscriveapp_home_opened. Quando un membro dello spazio di lavoro apre la scheda Home, OpenClaw pubblica una vista Home predefinita sicura con views.publish; non viene incluso alcun payload di conversazione né alcuna configurazione privata. Quando è abilitata la modalità con un singolo comando slash, il suggerimento del comando utilizza channels.slack.slashCommand.name; le installazioni che utilizzano comandi nativi o nessun comando slash omettono tale suggerimento. La scheda Messages rimane abilitata per i messaggi diretti di Slack. Il manifesto abilita inoltre i thread dell’assistente Slack con features.assistant_view, assistant:write, assistant_thread_started e assistant_thread_context_changed; i thread dell’assistente vengono instradati verso sessioni di thread OpenClaw dedicate e mantengono disponibile per l’agente il contesto del thread fornito da Slack.
Comandi slash nativi facoltativi
Comandi slash nativi facoltativi
È possibile utilizzare più comandi slash nativi anziché un singolo comando configurato, tenendo conto delle seguenti precisazioni:
- Utilizzare
/agentstatusanziché/status, perché il comando/statusè riservato. - Su un’app Slack non è possibile registrare contemporaneamente più di 25 comandi slash (limite della piattaforma Slack).
features.slash_commands esistente con un sottoinsieme dei comandi disponibili:- Modalità Socket (predefinita)
- URL delle richieste HTTP
Ambiti di attribuzione facoltativi (operazioni di scrittura)
Ambiti di attribuzione facoltativi (operazioni di scrittura)
Aggiungere l’ambito del bot
chat:write.customize se si desidera che i messaggi in uscita utilizzino l’identità dell’agente attivo (nome utente e icona personalizzati) anziché l’identità predefinita dell’app Slack.Se si utilizza un’icona emoji, Slack richiede la sintassi :emoji_name:.Ambiti facoltativi del token utente (operazioni di lettura)
Ambiti facoltativi del token utente (operazioni di lettura)
Se si configura
channels.slack.userToken, gli ambiti di lettura tipici sono:channels:history,groups:history,im:history,mpim:historychannels:read,groups:read,im:read,mpim:readusers:readreactions:readpins:reademoji:readsearch:read(se si dipende dalle letture di ricerca di Slack)
Modello dei token
botToken+appTokensono obbligatori per la modalità Socket.- La modalità HTTP richiede
botToken+signingSecret. - La modalità relay richiede
botTokenoltre arelay.url,relay.authTokenerelay.gatewayId; non utilizza un token dell’app né un segreto di firma. botToken,appToken,signingSecret,relay.authTokeneuserTokenaccettano stringhe di testo normale oppure oggetti SecretRef.- I token di configurazione hanno la precedenza sui valori di ripiego dell’ambiente.
- I valori di ripiego dell’ambiente
SLACK_BOT_TOKEN,SLACK_APP_TOKENeSLACK_USER_TOKENsi applicano ciascuno soltanto all’account predefinito. userTokenadotta per impostazione predefinita un comportamento di sola lettura (userTokenReadOnly: true).
- L’ispezione dell’account Slack tiene traccia dei campi
*Sourcee*Statusper ciascuna credenziale (botToken,appToken,signingSecret,userToken). - Lo stato è
available,configured_unavailableomissing. configured_unavailableindica che l’account è configurato tramite SecretRef o un’altra origine di segreti non incorporata, ma il percorso corrente del comando/runtime non è riuscito a risolvere il valore effettivo.- In modalità HTTP è incluso
signingSecretStatus; in modalità Socket, la coppia obbligatoria èbotTokenStatus+appTokenStatus.
Azioni e controlli
Le azioni Slack sono controllate dachannels.slack.actions.*.
Gruppi di azioni disponibili negli strumenti Slack correnti:
Le azioni correnti sui messaggi Slack includono
send, upload-file, download-file, read, edit, delete, pin, unpin, list-pins, member-info e emoji-list. download-file accetta gli ID dei file Slack mostrati nei segnaposto dei file in entrata e restituisce anteprime per le immagini oppure metadati dei file locali per gli altri tipi di file.
Controllo degli accessi e instradamento
- Criterio per i messaggi diretti
- Criterio per i canali
- Menzioni e utenti dei canali
channels.slack.dmPolicy controlla l’accesso ai messaggi diretti. channels.slack.allowFrom è l’elenco consentiti canonico per i messaggi diretti.pairing(predefinito)allowlistopen(richiede chechannels.slack.allowFromincluda"*")disabled
dm.enabled(valore predefinito: true)channels.slack.allowFromdm.allowFrom(legacy)dm.groupEnabled(valore predefinito per i messaggi diretti di gruppo: false)dm.groupChannels(elenco consentiti MPIM facoltativo)
channels.slack.accounts.default.allowFromsi applica soltanto all’accountdefault.- Gli account denominati ereditano
channels.slack.allowFromquando il proprioallowFromnon è impostato. - Gli account denominati non ereditano
channels.slack.accounts.default.allowFrom.
channels.slack.dm.policy e channels.slack.dm.allowFrom vengono ancora letti per compatibilità. openclaw doctor --fix li migra a dmPolicy e allowFrom quando può farlo senza modificare l’accesso.L’associazione nei messaggi diretti utilizza openclaw pairing approve slack <code>.Thread, sessioni e tag di risposta
- I DM vengono instradati come
direct; i canali comechannel; gli MPIM comegroup. - Le associazioni di instradamento Slack accettano ID peer non elaborati e formati di destinazione Slack come
channel:C12345678,user:U12345678e<@U12345678>. - Con il valore predefinito
session.dmScope=main, i DM di Slack confluiscono nella sessione principale dell’agente. - Sessioni dei canali:
agent:<agentId>:slack:channel:<channelId>. - I normali messaggi di primo livello nei canali rimangono nella sessione specifica del canale, anche quando
replyToModeè diverso daoff. - Le risposte nei thread di Slack usano il valore
thread_tsdel messaggio Slack padre per i suffissi delle sessioni (:thread:<threadTs>), anche quando i thread delle risposte in uscita sono disabilitati tramitereplyToMode="off". - OpenClaw inizializza una radice di canale di primo livello idonea in
agent:<agentId>:slack:channel:<channelId>:thread:<rootTs>quando si prevede che tale radice avvii un thread Slack visibile, in modo che la radice e le successive risposte nel thread condividano un’unica sessione OpenClaw. Ciò si applica agli eventiapp_mention, alle corrispondenze esplicite con il bot o con i modelli di menzione configurati e ai canalirequireMention: falseconreplyToModediverso daoff. - Il valore predefinito di
channels.slack.thread.historyScopeèthread; il valore predefinito dithread.inheritParentèfalse. channels.slack.thread.initialHistoryLimitcontrolla quanti messaggi esistenti del thread vengono recuperati all’avvio di una nuova sessione del thread (valore predefinito20; impostare0per disabilitare).channels.slack.thread.requireExplicitMention(valore predefinitofalse): quando è impostato sutrue, elimina le menzioni implicite nei thread, in modo che il bot risponda solo alle menzioni esplicite@botall’interno dei thread, anche se ha già partecipato al thread. Senza questa opzione, le risposte in un thread a cui ha partecipato il bot ignorano il controllorequireMention.
channels.slack.channels.<id>.replyToMode: sostituzione specifica per canale per i messaggi nei canali pubblici e privati di Slackchannels.slack.replyToMode:off|first|all|batched(valore predefinitooff)channels.slack.replyToModeByChatType: perdirect|group|channel- ripiego legacy per le chat dirette:
channels.slack.dm.replyToMode
[[reply_to_current]][[reply_to:<id>]]
message, impostare replyBroadcast: true con action: "send" e threadId oppure replyTo per chiedere a Slack di trasmettere la risposta del thread anche nel canale padre. Ciò corrisponde al flag reply_broadcast di chat.postMessage in Slack ed è supportato solo per gli invii di testo o Block Kit, non per i caricamenti multimediali.
Quando una chiamata allo strumento message viene eseguita all’interno di un thread Slack e ha come destinazione lo stesso canale, OpenClaw normalmente eredita il thread Slack corrente in base al valore effettivo replyToMode dell’account, del tipo di chat o specifico del canale. Le risposte automatiche e le chiamate send o upload-file nello stesso canale usano la stessa sostituzione specifica del canale. Impostare topLevel: true su action: "send" o action: "upload-file" per forzare un nuovo messaggio nel canale padre. Anche threadId: null è accettato come esclusione equivalente di primo livello.
replyToMode="off" disabilita i thread delle risposte Slack in uscita, inclusi i tag espliciti [[reply_to_*]]. Non appiattisce le sessioni dei thread Slack in entrata: i messaggi già pubblicati all’interno di un thread Slack continuano a essere instradati alla sessione :thread:<threadTs>. Questo comportamento è diverso da Telegram, dove i tag espliciti vengono comunque rispettati in modalità "off". I thread Slack nascondono i messaggi dal canale, mentre le risposte di Telegram rimangono visibili in linea.Reazioni di conferma
ackReaction invia un’emoji di conferma mentre OpenClaw elabora un messaggio in entrata. ackReactionScope determina quando tale emoji viene effettivamente inviata.
Per impostazione predefinita, la conferma rimane statica mentre lo stato nativo del thread dell’assistente Slack mostra l’avanzamento tramite messaggi di caricamento a rotazione. Impostare messages.statusReactions.enabled: true per attivare invece il ciclo di vita delle reazioni in coda/elaborazione/strumento/completamento/errore.
Emoji (ackReaction)
Ordine di risoluzione:
channels.slack.accounts.<accountId>.ackReactionchannels.slack.ackReactionmessages.ackReaction- ripiego sull’emoji dell’identità dell’agente (
agents.list[].identity.emoji, altrimenti"eyes"/ 👀)
- Slack richiede codici brevi (ad esempio
"eyes"). - Usare
""per disabilitare la reazione per l’account Slack o globalmente.
Ambito (messages.ackReactionScope)
Il provider Slack legge l’ambito da messages.ackReactionScope (valore predefinito "group-mentions"). Attualmente non esiste una sostituzione a livello di account o canale Slack; il valore è globale per il Gateway.
Valori:
"all": reagisce nei DM e nei gruppi, inclusi gli eventi ambientali delle stanze."direct": reagisce solo nei DM."group-all": reagisce a ogni messaggio di gruppo, eccetto gli eventi ambientali delle stanze (nessun DM)."group-mentions"(valore predefinito): reagisce nei gruppi, ma solo quando il bot viene menzionato (o nei gruppi menzionabili che hanno aderito). I DM sono esclusi."off"/"none": non reagisce mai.
L’ambito predefinito (
"group-mentions") non attiva le reazioni di conferma nei messaggi diretti o negli eventi ambientali delle stanze. Per visualizzare il valore ackReaction configurato (ad esempio "eyes") nei DM Slack in entrata e negli eventi silenziosi delle stanze, impostare messages.ackReactionScope su "all". messages.ackReactionScope viene letto all’avvio del provider Slack, quindi è necessario riavviare il Gateway affinché la modifica abbia effetto.Streaming del testo
channels.slack.streaming controlla il comportamento dell’anteprima in tempo reale:
off: disabilita lo streaming dell’anteprima in tempo reale.partial(valore predefinito): sostituisce il testo dell’anteprima con l’output parziale più recente.block: aggiunge gli aggiornamenti dell’anteprima in segmenti.progress: mostra il testo sullo stato di avanzamento durante la generazione, quindi invia il testo finale.streaming.preview.toolProgress: quando l’anteprima della bozza è attiva, instrada gli aggiornamenti degli strumenti e dell’avanzamento nello stesso messaggio di anteprima modificato (valore predefinito:true). Impostarefalseper mantenere separati i messaggi degli strumenti e dell’avanzamento.streaming.preview.commandText/streaming.progress.commandText: impostare sustatusper mantenere righe compatte sullo stato degli strumenti nascondendo il testo non elaborato dei comandi e delle esecuzioni (valore predefinito:raw).
channels.slack.streaming.nativeTransport controlla lo streaming di testo nativo di Slack quando channels.slack.streaming.mode è partial (valore predefinito: true).
Le schede attività di avanzamento native di Slack sono facoltative per la modalità di avanzamento. Impostare channels.slack.streaming.progress.nativeTaskCards su true con channels.slack.streaming.mode="progress" per inviare una scheda piano/attività nativa di Slack durante l’esecuzione del lavoro, quindi aggiornare la stessa scheda al completamento. Senza questo flag, la modalità di avanzamento mantiene il comportamento portabile dell’anteprima della bozza.
- Per visualizzare lo streaming di testo nativo e lo stato del thread dell’assistente Slack, deve essere disponibile un thread di risposta. La selezione del thread continua a seguire
replyToMode. - Le radici dei canali, delle chat di gruppo e dei DM di primo livello possono comunque usare la normale anteprima della bozza quando lo streaming nativo non è disponibile o non esiste alcun thread di risposta.
- I DM Slack di primo livello rimangono fuori dai thread per impostazione predefinita, quindi non mostrano l’anteprima dello streaming o dello stato nativo in stile thread di Slack; OpenClaw pubblica e modifica invece un’anteprima della bozza nel DM.
- I contenuti multimediali e i payload non testuali ricorrono alla normale consegna.
- I risultati finali multimediali o di errore annullano le modifiche dell’anteprima in sospeso; i risultati finali di testo o blocchi idonei vengono completati solo quando possono modificare direttamente l’anteprima.
- Se lo streaming non riesce durante una risposta, OpenClaw ricorre alla normale consegna per i payload rimanenti.
channels.slack.streamMode(replace | status_final | append) è un alias legacy dichannels.slack.streaming.mode.- Il valore booleano
channels.slack.streamingè un alias legacy dichannels.slack.streaming.modeechannels.slack.streaming.nativeTransport. channels.slack.chunkModeechannels.slack.nativeStreamingdi primo livello sono alias legacy dichannels.slack.streaming.chunkModeechannels.slack.streaming.nativeTransport.- Gli alias legacy non vengono letti in fase di esecuzione; eseguire
openclaw doctor --fixper riscrivere la configurazione persistente dello streaming Slack usando le chiavi canoniche.
Ripiego sulla reazione di digitazione
typingReaction aggiunge una reazione temporanea al messaggio Slack in entrata mentre OpenClaw elabora una risposta, quindi la rimuove al termine dell’esecuzione. Ciò è particolarmente utile al di fuori delle risposte nei thread, che usano un indicatore di stato predefinito “is typing…”.
Ordine di risoluzione:
channels.slack.accounts.<accountId>.typingReactionchannels.slack.typingReaction
- Slack richiede codici brevi (ad esempio
"hourglass_flowing_sand"). - La reazione è basata sul massimo impegno possibile e la pulizia viene tentata automaticamente dopo il completamento della risposta o del percorso di errore.
Input vocale
Attualmente, per parlare con OpenClaw in Slack, inviare un clip audio Slack all’app OpenClaw. Il microfono di dettatura di Slackbot è una funzionalità separata di proprietà di Slack, non un’API per le app.- La dettatura vocale di Slackbot avviene all’interno della conversazione Slackbot privata dell’utente. Slack trasforma la registrazione in un prompt per Slackbot, ma non trasmette alle app Slack di terze parti, tramite l’Events API, alcun file audio, evento di dettatura, prompt o indicatore della sorgente di input. Il plugin Slack di OpenClaw non può abilitarla né riceverla.
- I clip audio di Slack sono file archiviati da Slack che possono essere pubblicati in un messaggio diretto, un canale o un thread di OpenClaw. OpenClaw scarica un clip accessibile con il token del bot, normalizza i metadati MIME del clip forniti da Slack e lo invia attraverso la pipeline condivisa di trascrizione audio. Il manifesto dell’app consigliato include l’ambito
files:readrichiesto.
requireMention: true, un clip audio senza didascalia può superare il controllo pronunciando un pattern di menzione configurato (agents.list[].groupChat.mentionPatterns, con ripiego su messages.groupChat.mentionPatterns). OpenClaw autorizza il mittente prima di scaricare o trascrivere il clip, quindi lo ammette solo quando la trascrizione corrisponde. Una trascrizione speculativa non riuscita o non corrispondente viene eliminata insieme al clip scaricato e non viene conservata nella cronologia del canale. L’identità Slack nativa @bot non può essere dedotta dalla voce, quindi occorre configurare un pattern per il nome pronunciato o includere una menzione digitata. Se l’eco della trascrizione è abilitata, viene inviato solo dopo l’ammissione.
Contenuti multimediali, suddivisione e consegna
Allegati in entrata
Allegati in entrata
Gli allegati di file Slack vengono scaricati dagli URL privati ospitati da Slack (flusso di richieste autenticato tramite token) e scritti nell’archivio multimediale quando il recupero riesce e i limiti di dimensione lo consentono. I segnaposto dei file includono l’elemento Slack
fileId, in modo che gli agenti possano recuperare il file originale con download-file.I download utilizzano timeout limitati sia per l’inattività sia per la durata totale. Se il recupero del file da Slack si blocca o non riesce, OpenClaw continua a elaborare il messaggio e ripiega sul segnaposto del file.Il limite predefinito di runtime per le dimensioni in entrata è 20MB, salvo sostituzione mediante channels.slack.mediaMaxMb.Testo e file in uscita
Testo e file in uscita
- i segmenti di testo usano
channels.slack.textChunkLimit(valore predefinito8000, limitato alla lunghezza massima dei messaggi di Slack) channels.slack.streaming.chunkMode="newline"abilita la suddivisione dando priorità ai paragrafi- gli invii di file usano le API di caricamento di Slack e possono includere risposte nei thread (
thread_ts) - le didascalie lunghe dei file usano il primo segmento di testo compatibile con Slack come commento del caricamento e inviano i segmenti rimanenti come messaggi successivi
- il limite dei contenuti multimediali in uscita segue
channels.slack.mediaMaxMb, se configurato; altrimenti gli invii del canale usano i valori predefiniti per tipo MIME della pipeline multimediale
Destinazioni di consegna
Destinazioni di consegna
Destinazioni esplicite preferite:
user:<id>per i messaggi direttichannel:<id>per i canali
Comandi e comportamento dei comandi slash
I comandi slash vengono visualizzati in Slack come un singolo comando configurato oppure come più comandi nativi. Configurarechannels.slack.slashCommand per modificare le impostazioni predefinite dei comandi:
enabled: falsename: "openclaw"sessionPrefix: "slack:slash"ephemeral: true
channels.slack.commands.native: true o commands.native: true nelle configurazioni globali.
- La modalità automatica dei comandi nativi è disattivata per Slack, pertanto
commands.native: "auto"non abilita i comandi nativi di Slack.
- 3-5 opzioni sufficientemente brevi: un menu di overflow (”…”)
- più di 100 opzioni, con disponibilità del filtro asincrono delle opzioni: selezione esterna
- 1-2 opzioni oppure qualsiasi opzione il cui valore codificato sia troppo lungo per una selezione: blocchi di pulsanti
- negli altri casi (6-100 opzioni oppure più di 100 senza filtro asincrono): menu di selezione statico, suddiviso in gruppi di 100 opzioni per menu
agent:<agentId>:slack:slash:<userId> e continuano a instradare le esecuzioni dei comandi alla sessione della conversazione di destinazione mediante CommandTargetSessionKey.
Grafici nativi
Il blocco Block Kitdata_visualization pubblico di Slack
visualizza grafici a linee, a barre, ad area e a torta nei messaggi. OpenClaw associa il blocco
portabile presentation chart a tale formato nativo; non sono necessari ambiti OAuth aggiuntivi,
caricamenti di file, renderer di immagini o configurazioni di Slack oltre al normale
accesso ai messaggi chat:write.
- titolo ed etichette facoltative degli assi: 50 caratteri
- torta: 1-12 segmenti positivi
- linee/barre/area: 1-12 serie con nomi univoci e 1-20 categorie condivise
- etichette di segmenti, categorie e serie: 20 caratteri
- ogni serie deve contenere un valore finito per ogni categoria; i valori non appartenenti a grafici a torta possono essere negativi
invalid_blocks durante un’implementazione graduale, OpenClaw
rimuove i blocchi di dati nativi rifiutati, conserva gli eventuali controlli adiacenti e invia
la rappresentazione completa del grafico come testo visibile.
Slack accetta attualmente fino a due blocchi data_visualization per messaggio. Quando
una presentazione contiene più di due grafici validi, OpenClaw ne mantiene l’ordine
e prosegue la visualizzazione nativa nei messaggi successivi, con non più di due
grafici in ciascun messaggio.
L’annuncio per sviluppatori di Slack
documenta il blocco come funzionalità Block Kit destinata alle app e non indica alcuna
restrizione legata ai piani a pagamento. Le indicazioni di idoneità per Business+/Enterprise si applicano alla
generazione automatica di grafici tramite IA di Slackbot, che è distinta dall’invio,
da parte di un’app, di un grafico Block Kit già strutturato. I grafici sono blocchi destinati esclusivamente ai messaggi, non
a App Home, finestre modali o contenuti Canvas.
Tabelle native
L’attuale blocco Block Kitdata_table di Slack
visualizza righe e colonne strutturate nei messaggi. OpenClaw associa un blocco portabile
esplicito presentation table a data_table; non usa il
blocco table legacy di Slack.
Non sono necessari ambiti OAuth aggiuntivi né configurazioni di Slack oltre al normale
accesso ai messaggi chat:write.
raw_text. Le celle numeriche
vengono associate a raw_number, preservando il valore numerico finito per l’ordinamento
e il filtro nativi. rowHeaderColumnIndex, quando presente, contrassegna tale colonna con indice a base zero
come intestazione di riga Slack.
I limiti data_table pubblicati da Slack vengono applicati prima della visualizzazione nativa:
- 1-20 colonne
- 1-100 righe di dati, oltre alla riga di intestazione
- lo stesso numero di celle in ogni riga
- al massimo 10.000 caratteri complessivi in tutte le celle delle tabelle di un singolo messaggio
<@U123> non diventano una menzione Slack.
Se Slack rifiuta i blocchi nativi di grafici o tabelle con invalid_blocks, OpenClaw
rimuove tutti i blocchi di dati nativi in un unico passaggio di ripristino limitato, conserva i
blocchi adiacenti validi, come pulsanti e selezioni, e invia il testo visibile completo di grafici
e tabelle con la formattazione Slack disabilitata. La consegna dei comandi slash
tiene traccia del limite di cinque chiamate response_url di Slack per l’intero comando. Prima di ogni
lotto di risposte, seleziona un piano completo che rientra nelle chiamate rimanenti oppure non riesce
prima di pubblicare tale lotto.
Solo i blocchi tabella espliciti presentation vengono convertiti in tabelle native.
Le tabelle Markdown con barre verticali restano testo creato dall’autore; OpenClaw non tenta di dedurre la struttura
della tabella né i tipi delle celle. I produttori Slack nativi attendibili esistenti possono continuare
a passare blocchi non elaborati tramite channelData.slack.blocks; OpenClaw ricava il testo
di ripiego dalle celle data_table non elaborate valide, mentre i blocchi personalizzati non validi possono
ridursi alla relativa didascalia o al ripiego generale di Block Kit. L’output portabile di agenti, CLI
e plugin dovrebbe usare presentation.
Risposte interattive
Slack può visualizzare controlli di risposta interattivi creati dagli agenti, ma questa funzionalità è disabilitata per impostazione predefinita. Per il nuovo output di agenti, CLI e plugin, è preferibile usare i pulsanti o i blocchi di selezione condivisipresentation. Usano lo stesso percorso di interazione
di Slack e si adattano anche agli altri canali.
Per abilitarla globalmente:
[[slack_buttons: Approve:approve, Reject:reject]][[slack_select: Choose a target | Canary:canary, Production:production]]
compileSlackInteractiveReplies(...)parseSlackOptionsLine(...)isSlackInteractiveRepliesEnabled(...)buildSlackInteractiveBlocks(...)
presentation e buildSlackPresentationBlocks(...).
Note:
- Questa è un’interfaccia utente legacy specifica di Slack. Gli altri canali non traducono le direttive di Slack Block Kit nei propri sistemi di pulsanti.
- I valori dei 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 ripiega sulla risposta testuale originale anziché inviare un payload di blocchi non valido.
Invii di modali gestiti dai Plugin
I Plugin Slack che registrano un gestore interattivo possono anche ricevere gli eventi del ciclo di vitaview_submission e view_closed prima che OpenClaw esegua la Compaction
del payload per l’evento di sistema visibile all’agente. Quando si apre un modale Slack, utilizzare uno di questi
schemi di instradamento:
- Impostare
callback_idsuopenclaw:<namespace>:<payload>. - In alternativa, mantenere un
callback_idesistente e inserirepluginInteractiveData: "<namespace>:<payload>"nelprivate_metadatadel modale.
ctx.interaction.kind come view_submission o
view_closed, il valore inputs normalizzato e l’oggetto grezzo completo stateValues da
Slack. L’instradamento basato solo sull’ID del callback è sufficiente per invocare il gestore del Plugin; includere
i campi di instradamento utente/sessione private_metadata del modale esistente quando il
modale deve anche produrre un evento di sistema visibile all’agente. L’agente riceve un
evento di sistema Slack interaction: ... compatto e oscurato. Se il gestore restituisce
systemEvent.summary, systemEvent.reference o systemEvent.data, tali
campi vengono inclusi nell’evento compatto affinché l’agente possa fare riferimento
allo spazio di archiviazione gestito dal Plugin senza vedere il payload completo del modulo.
Approvazioni native in Slack
Slack può fungere da client di approvazione nativo con pulsanti e interazioni, anziché ripiegare sull’interfaccia web o sul terminale.- Le approvazioni dell’esecuzione e dei Plugin possono essere visualizzate come richieste native di Slack Block Kit.
channels.slack.execApprovals.*rimane la configurazione per l’abilitazione del client nativo delle approvazioni dell’esecuzione e per l’instradamento tramite messaggio diretto/canale.- I messaggi diretti per l’approvazione dell’esecuzione utilizzano
channels.slack.execApprovals.approversocommands.ownerAllowFrom. - Le approvazioni dei Plugin utilizzano pulsanti nativi di Slack quando Slack è abilitato come client di approvazione nativo per la sessione di origine oppure quando
approvals.pluginindirizza alla sessione Slack di origine o a una destinazione Slack. - I messaggi diretti per l’approvazione dei Plugin utilizzano gli approvatori dei Plugin Slack da
channels.slack.allowFrom, il valoreallowFromdell’account denominato o l’instradamento predefinito dell’account. - L’autorizzazione degli approvatori viene comunque applicata: gli approvatori autorizzati solo per l’esecuzione non possono approvare richieste dei Plugin, a meno che non siano anche approvatori dei Plugin.
interactivity è abilitato nelle impostazioni dell’app Slack, le richieste di approvazione vengono visualizzate come pulsanti Block Kit direttamente nella conversazione.
Quando tali pulsanti sono presenti, costituiscono l’esperienza utente principale per l’approvazione; OpenClaw
deve includere un comando manuale /approve solo quando il risultato dello strumento indica che le
approvazioni tramite chat non sono disponibili o che l’approvazione manuale è l’unica opzione.
Percorso di configurazione:
channels.slack.execApprovals.enabledchannels.slack.execApprovals.approvers(facoltativo; ripiega sucommands.ownerAllowFromquando possibile)channels.slack.execApprovals.target(dm|channel|both, valore predefinito:dm)agentFilter,sessionFilter
enabled non è impostato oppure è "auto" e viene individuato almeno un
approvatore dell’esecuzione. Slack può inoltre gestire le approvazioni native dei Plugin tramite questo percorso
del client nativo quando vengono individuati approvatori dei Plugin Slack e la richiesta corrisponde ai filtri del client nativo. Impostare
enabled: false per disabilitare esplicitamente Slack come client di approvazione nativo. Impostare enabled: true per
forzare l’attivazione delle approvazioni native quando vengono individuati approvatori. La disabilitazione delle approvazioni dell’esecuzione in Slack non disabilita
la consegna delle approvazioni native dei Plugin Slack abilitata tramite approvals.plugin; per la consegna delle approvazioni
dei Plugin vengono invece utilizzati gli approvatori dei Plugin Slack.
Comportamento predefinito senza una configurazione esplicita delle approvazioni dell’esecuzione in Slack:
approvals.exec è separato. Utilizzarlo solo quando le richieste di approvazione dell’esecuzione devono essere
instradate anche ad altre chat o a destinazioni esplicite fuori banda. Anche l’inoltro condiviso approvals.plugin è
separato; la consegna nativa di Slack sopprime tale ripiego solo quando Slack può gestire nativamente la richiesta
di approvazione del Plugin.
Anche /approve nella stessa chat funziona nei canali e nei messaggi diretti Slack che supportano già i comandi. Consultare Approvazioni dell’esecuzione per il modello completo di inoltro delle approvazioni.
Eventi e comportamento operativo
- Le modifiche/eliminazioni dei messaggi vengono convertite in eventi di sistema.
- Le trasmissioni delle discussioni (risposte alle discussioni con “Also send to channel”) vengono elaborate come normali messaggi utente.
- Gli eventi di aggiunta/rimozione delle reazioni vengono convertiti in eventi di sistema.
- Gli eventi di ingresso/uscita dei membri, creazione/ridenominazione dei canali e aggiunta/rimozione degli elementi fissati vengono convertiti in eventi di sistema.
- Il polling facoltativo della presenza può convertire la transizione da
awayaactivedi un partecipante umano osservato nella sessione Slack idonea attiva più di recente del partecipante. Per impostazione predefinita è disattivato. channel_id_changedpuò migrare le chiavi di configurazione dei canali quandoconfigWritesè abilitato.- I metadati relativi ad argomento/scopo del canale vengono considerati contesto non attendibile e possono essere inseriti nel contesto di instradamento.
- Il messaggio iniziale della discussione e il popolamento iniziale del contesto della cronologia della discussione vengono filtrati in base agli elenchi configurati dei mittenti consentiti, quando applicabile.
- Le azioni dei blocchi, le scorciatoie e le interazioni con i modali generano eventi di sistema strutturati
Slack interaction: ...con campi del payload dettagliati:- azioni dei blocchi: valori selezionati, etichette, valori dei selettori e metadati
workflow_* - scorciatoie globali: metadati del callback e dell’attore, instradati alla sessione diretta dell’attore
- scorciatoie dei messaggi: contesto del callback, dell’attore, del canale, della discussione e del messaggio selezionato
- eventi modali
view_submissioneview_closedcon metadati del canale instradato e dati immessi nel modulo
- azioni dei blocchi: valori selezionati, etichette, valori dei selettori e metadati
Eventi di presenza
Slack non invia le modifiche della presenza tramite l’API Events o Socket Mode. OpenClaw può invece eseguire il polling diusers.getPresence per i partecipanti umani i cui messaggi hanno superato i normali controlli di accesso e instradamento di Slack.
off(valore predefinito): nessun timer di presenza o chiamata API Slack.auto: monitora i messaggi diretti, gli MPIM e le discussioni Slack attivi nelle ultime 24 ore con non più di 8 partecipanti umani osservati. Le sessioni dei canali di primo livello sono escluse.on: monitora le stesse conversazioni senza il limite di partecipanti e include le sessioni dei canali di primo livello. Utilizzare una sostituzione per canale per forzare o sopprimere un canale.
away a active. Per ogni account Slack e utente si applica un intervallo di attesa persistente di 8 ore, anche se la persona partecipa a più discussioni. L’evento viene instradato solo alla conversazione idonea attiva più di recente di quella persona e indica all’agente di consultare la memoria/wiki e il contesto noto del fuso orario prima di decidere se inviare un breve saluto. L’agente può rimanere in silenzio.
Il token del bot richiede users:read, già incluso nel manifesto consigliato. Gli eventi di presenza non sono disponibili per le installazioni a livello di organizzazione Enterprise Grid.
Riferimento della configurazione
Riferimento principale: Riferimento della configurazione - Slack.Campi Slack più significativi
Campi Slack più significativi
- modalità/autenticazione:
mode,enterpriseOrgInstall,botToken,appToken,signingSecret,webhookPath,accounts.* - accesso ai messaggi diretti:
dm.enabled,dmPolicy,allowFrom(legacy:dm.policy,dm.allowFrom),dm.groupEnabled,dm.groupChannels - opzione di compatibilità:
dangerouslyAllowNameMatching(di emergenza; mantenerla disattivata se non necessaria) - accesso ai canali:
groupPolicy,channels.*,channels.*.users,channels.*.requireMention - discussioni/cronologia:
replyToMode,replyToModeByChatType,thread.*,historyLimit,dmHistoryLimit,dms.*.historyLimit - riattivazioni in base alla presenza:
presenceEvents.mode,channels.*.presenceEvents.mode(off|auto|on; valore predefinitooff) - consegna:
textChunkLimit,streaming.chunkMode,mediaMaxMb,streaming,streaming.nativeTransport,streaming.preview.toolProgress - anteprime:
unfurlLinks(valore predefinito:false),unfurlMediaper il controllo dell’anteprima di link/contenuti multimedialichat.postMessage; impostareunfurlLinks: trueper riabilitare esplicitamente le anteprime dei link - operazioni/funzionalità:
configWrites,commands.native,slashCommand.*,actions.*,userToken,userTokenReadOnly
Risoluzione dei problemi
Nessuna risposta nei canali
Nessuna risposta nei canali
Verificare, nell’ordine:Comandi utili:
groupPolicy- elenco dei canali consentiti (
channels.slack.channels) — le chiavi devono essere ID di canale (C12345678), non nomi (#channel-name). Le chiavi basate sui nomi non producono errori ma non funzionano congroupPolicy: "allowlist", perché per impostazione predefinita l’instradamento dei canali usa prima l’ID. Per trovare un ID: fare clic con il pulsante destro del mouse sul canale in Slack → Copy link — il valoreC...alla fine dell’URL è l’ID del canale. requireMention- elenco consentito
usersper canale messages.groupChat.visibleReplies: le normali richieste di gruppo/canale utilizzano per impostazione predefinita"automatic". Se è stato abilitato esplicitamente"message_tool"e i log mostrano testo dell’assistente senza una chiamata amessage(action=send), il modello non ha utilizzato il percorso visibile dello strumento per i messaggi. In questa modalità, il testo finale rimane privato; esaminare il log dettagliato del Gateway per i metadati del payload soppressi oppure impostare il valore su"automatic"se si desidera che ogni normale risposta finale dell’assistente venga pubblicata tramite il percorso legacy.messages.groupChat.unmentionedInbound: se è"room_event", le conversazioni non menzionate dei canali consentiti costituiscono contesto ambientale e rimangono silenziose a meno che l’agente non chiami lo strumentomessage. Consultare Eventi ambientali delle stanze.
Messaggi diretti ignorati
Messaggi diretti ignorati
Verificare:
channels.slack.dm.enabledchannels.slack.dmPolicy(o il precedentechannels.slack.dm.policy)- approvazioni di associazione / voci dell’elenco consentito (
dmPolicy: "open"richiede comunquechannels.slack.allowFrom: ["*"]) - i messaggi diretti di gruppo usano la gestione MPIM; abilitare
channels.slack.dm.groupEnablede, se configurato, includere l’MPIM inchannels.slack.dm.groupChannels - eventi dei messaggi diretti di Slack Assistant: i log dettagliati che menzionano
drop message_changedindicano solitamente che Slack ha inviato un evento modificato di un thread dell’Assistant senza un mittente umano recuperabile nei metadati del messaggio
La modalità Socket non si connette
La modalità Socket non si connette
Verificare i token del bot e dell’app e l’abilitazione di Socket Mode nelle impostazioni dell’app Slack.
Il token a livello di app richiede
connections:write, mentre il Bot User OAuth Token
del bot deve appartenere alla stessa app e allo stesso spazio di lavoro Slack del token dell’app.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
basato su SecretRef.I log come slack socket mode failed to start; retry ... indicano errori di
avvio recuperabili. Gli ambiti mancanti, i token revocati e l’autenticazione non valida causano
invece un errore immediato. Un log slack token mismatch ... indica che il token del bot e quello dell’app
sembrano appartenere ad app Slack diverse; correggere le credenziali dell’app Slack.La modalità HTTP non riceve eventi
La modalità HTTP non riceve eventi
Verificare:
- segreto di firma
- percorso del Webhook
- URL delle richieste Slack (eventi + interattività + comandi slash)
webhookPathunivoco per ogni account HTTP- che l’URL pubblico termini TLS e inoltri le richieste al percorso del Gateway
- che il percorso
request_urldell’app Slack corrisponda esattamente achannels.slack.webhookPath(valore predefinito/slack/events)
signingSecretStatus: "configured_unavailable" appare nelle istantanee
dell’account, l’account HTTP è configurato, ma il runtime corrente non è riuscito a
risolvere il segreto di firma basato su SecretRef.La ripetizione del log slack: webhook path ... already registered indica che due account HTTP
usano lo stesso webhookPath; assegnare un percorso distinto a ciascun account.I comandi nativi/slash non vengono eseguiti
I comandi nativi/slash non vengono eseguiti
Verificare quale modalità si intendeva usare:
- modalità dei comandi nativi (
channels.slack.commands.native: true) con i comandi slash corrispondenti registrati in Slack - oppure modalità con un singolo comando slash (
channels.slack.slashCommand.enabled: true)
commands.native: "auto" non abilita i comandi nativi di Slack; usare true e creare i comandi corrispondenti nell’app Slack. In modalità HTTP, ogni comando slash di Slack deve includere l’URL del Gateway. In Socket Mode, i payload dei comandi arrivano tramite websocket e Slack ignora slash_commands[].url.Controllare anche commands.useAccessGroups, l’autorizzazione dei messaggi diretti, gli elenchi consentiti dei canali
e gli elenchi consentiti users per canale. Slack restituisce errori effimeri per
i mittenti bloccati dei comandi slash, tra cui:This channel is not allowed.You are not authorized to use this command here.
Riferimento per gli allegati multimediali
Slack può allegare i contenuti multimediali scaricati al turno dell’agente quando il download dei file Slack riesce e i limiti di dimensione lo consentono. Le clip audio possono essere trascritte, i file immagine possono essere elaborati dal percorso di comprensione multimediale o passati direttamente a un modello di risposta con funzionalità visive, mentre gli altri file restano disponibili come contesto di file scaricabile.Tipi di contenuti multimediali supportati
Pipeline in ingresso
Quando arriva un messaggio Slack con file allegati:- OpenClaw scarica il file dall’URL privato di Slack usando il token del bot.
- Se l’operazione riesce, il file viene scritto nell’archivio multimediale.
- I percorsi dei contenuti multimediali scaricati e i tipi di contenuto vengono aggiunti al contesto in ingresso.
- Le clip audio vengono instradate alla pipeline di trascrizione condivisa; i percorsi di modelli e strumenti con funzionalità di elaborazione delle immagini possono usare gli allegati immagine dello stesso contesto.
- Gli altri file restano disponibili come metadati di file o riferimenti multimediali per gli strumenti in grado di gestirli.
Ereditarietà degli allegati del messaggio radice del thread
Quando arriva un messaggio in un thread (con un elemento padrethread_ts):
- Se la risposta non contiene contenuti multimediali diretti e il messaggio radice incluso contiene file, Slack può caricare i file radice come contesto iniziale del thread.
- I file radice vengono caricati solo durante l’inizializzazione di una sessione di thread nuova o reimpostata. Le successive risposte contenenti solo testo riutilizzano il contesto della sessione esistente e non allegano nuovamente i file radice come nuovi contenuti multimediali.
- Gli allegati diretti della risposta hanno la precedenza sugli allegati del messaggio radice.
- Un messaggio radice contenente solo file e nessun testo viene rappresentato con un segnaposto per l’allegato, in modo che il meccanismo di riserva possa comunque includerne i file.
Gestione di più allegati
Quando un singolo messaggio Slack contiene più file allegati:- Ogni allegato viene elaborato separatamente attraverso la pipeline multimediale.
- I riferimenti ai contenuti multimediali scaricati vengono aggregati nel contesto del messaggio.
- L’ordine di elaborazione segue l’ordine dei file di Slack nel payload dell’evento.
- Il mancato download di un allegato non blocca gli altri.
Limiti di dimensione, download e modello
- Limite di dimensione: valore predefinito di 20 MB per file. Configurabile tramite
channels.slack.mediaMaxMb. - Limite della trascrizione audio:
tools.media.audio.maxBytessi applica anche quando il file scaricato viene inviato a un provider di trascrizione o a una CLI. - Errori di download: i file che Slack non riesce a fornire, gli URL scaduti, i file inaccessibili, i file troppo grandi e le risposte HTML di autenticazione/accesso di Slack vengono ignorati anziché essere segnalati come formati non supportati.
- Modello visivo: l’analisi delle immagini usa il modello di risposta attivo quando supporta le funzionalità visive oppure il modello di immagini configurato in
agents.defaults.imageModel.
Limiti noti
Documentazione correlata
Argomenti correlati
Associazione
Associare un utente Slack al Gateway.
Gruppi
Comportamento dei canali e dei messaggi diretti di gruppo.
Instradamento dei canali
Instradare i messaggi in ingresso agli agenti.
Sicurezza
Modello delle minacce e rafforzamento della sicurezza.
Configurazione
Struttura e precedenza della configurazione.
Comandi slash
Catalogo e comportamento dei comandi.