Koppelen
Slack-DM’s gebruiken standaard de koppelingsmodus.
Slash-opdrachten
Gedrag van native opdrachten en opdrachtencatalogus.
Problemen met kanalen oplossen
Diagnostiek en herstelprocedures voor meerdere kanalen.
Een transport kiezen
Socket Mode en HTTP Request URLs bieden dezelfde functionaliteit voor berichten, slash-opdrachten, App Home en interactiviteit. Kies op basis van de implementatievorm, niet van de functies.Kies Socket Mode voor hosts met één Gateway, ontwikkellaptops en on-premisesnetwerken die
*.slack.com uitgaand kunnen bereiken, maar geen inkomende HTTPS kunnen accepteren.Kies HTTP Request URLs wanneer je meerdere Gateway-replica’s achter een loadbalancer uitvoert, wanneer uitgaande WSS is geblokkeerd maar inkomende HTTPS is toegestaan, of wanneer je Slack-webhooks al op een reverse proxy afhandelt.Relay-modus
Relay-modus scheidt de Slack-ingang van de OpenClaw-gateway. Een vertrouwde router beheert de enige Slack Socket Mode-verbinding, kiest een bestemmingsgateway en stuurt een getypeerde gebeurtenis door via een geauthenticeerde websocket. De gateway gebruikt nog steeds zijn eigen bottoken voor uitgaande aanroepen naar de Slack Web API.wss:// gebruiken, tenzij deze naar localhost verwijst. Beschouw het bearertoken en de routeringstabel van de router als onderdeel van de Slack-autorisatiegrens: gerouteerde gebeurtenissen komen de normale Slack-berichtenhandler binnen als geautoriseerde activeringen. Een door de router verstrekte slack_identity in het websocket-hello-frame kan de standaard uitgaande gebruikersnaam en het pictogram instellen; een expliciete identiteit die door de aanroeper wordt verstrekt, heeft nog steeds voorrang. De relay-verbinding maakt opnieuw verbinding met dezelfde begrensde back-offtiming als Socket Mode en wist de door de router verstrekte identiteit telkens wanneer de verbinding wordt verbroken.
Organisatiebrede installaties voor Enterprise Grid
Eén Slack-account kan berichten ontvangen uit elke workspace die onder een organisatiebrede Enterprise Grid-installatie valt. Kies rechtstreekse Socket Mode of HTTP Request URLs; relay-modus wordt niet ondersteund voor enterprise-accounts. Beide onderstaande manifesten met minimale bevoegdheden schakelen alleen het V1-pad voormessage- en app_mention-gebeurtenissen, directe antwoorden en
door de listener beheerde statusreacties in.
Socket Mode
connections:write en kopieer
vervolgens het bottoken uit de organisatie-installatie. Configureer het account dat
het organisatiebreed geïnstalleerde bottoken gebruikt:
HTTP Request URLs
Gebruik de HTTP-modus wanneer de Gateway een openbaar HTTPS-eindpunt heeft en geen Socket Mode-verbinding opent. Vervang de voorbeeld-URL door de openbarewebhookPath-URL van de Gateway (standaard /slack/events):
enterpriseOrgInstall met Slack
auth.test. Een organisatiebreed geïnstalleerd token zonder de vlag, of een
workspace-token met de vlag, zorgt ervoor dat het opstarten mislukt. Slack blijft de
gezaghebbende bron voor welke workspaces de installatie hebben toegestaan; OpenClaw past
vervolgens het geconfigureerde beleid voor kanalen, gebruikers, DM’s en vermeldingen toe
op elke geleverde gebeurtenis. Enterprise V1 weigert vóór het doorsturen alle door bots
geschreven message- en app_mention-gebeurtenissen, ongeacht
allowBots, omdat organisatie-installaties geen stabiele, aan een workspace
gekoppelde botidentiteit bieden om lussen te voorkomen.
Enterprise-ondersteuning is bewust beperkt tot rechtstreekse Socket Mode- of HTTP-
message- en app_mention-gebeurtenissen en de directe antwoorden daarop.
Relay-modus, slash-opdrachten, interacties, App Home, listeners voor reactiegebeurtenissen,
vastgezette items, Slack-actietools, native Slack-goedkeuringen, bindingen, levering in de
wachtrij of volgens een planning en proactieve verzendingen zijn niet beschikbaar voor
een enterprise-account. Uitgaande bevestigings-, typ- en statusreacties worden ondersteund
via de door de listener beheerde Slack-client en vereisen reactions:write; inkomende
reactiemeldingen en reactie-actietools blijven niet beschikbaar.
Directe antwoorden hergebruiken het standaardbezorggedrag van Slack voor fragmenten,
media, metagegevens, identiteitsterugval, linkvoorvertoningen en ontvangstbevestigingen, maar alleen zolang de
gevalideerde client die eigendom is van de listener in de actieve gebeurtenisafhandeling blijft. De
verzendwachtrij in het geheugen en registraties van deelname aan threads worden gepartitioneerd op basis van de
workspace van die gebeurtenis; de client zelf wordt nooit geserialiseerd of persistent opgeslagen.
Kanaalbeleidsleutels en dm.groupChannels-vermeldingen moeten onbewerkte, stabiele Slack-kanaal-ID’s of de
channel:<id>-vorm gebruiken. OpenClaw normaliseert beide vormen naar het onbewerkte kanaal-ID voor
runtimeovereenkomsten; voorvoegsels slack:, group: en mpim: laten het opstarten mislukken.
Gebruikersbeleidsvermeldingen moeten stabiele Slack-gebruikers-ID’s gebruiken; namen, slugs, weergavenamen
en e-mailadressen laten het opstarten mislukken. ID’s moeten het canonieke Slack-voorvoegsel in hoofdletters
en de canonieke hoofdtekst gebruiken (bijvoorbeeld C0123456789 of U0123456789); varianten in kleine letters en
korte lookalikes laten het opstarten mislukken. Enterprise-accounts kunnen
dangerouslyAllowNameMatching niet inschakelen. Enterprise-accounts mogen de algemene
mentionPatterns.mode instellen, maar mentionPatterns.allowIn en
mentionPatterns.denyIn laten het opstarten mislukken omdat kale Slack-kanaal-ID’s niet
aan een workspace zijn gekoppeld en in meerdere workspaces kunnen worden hergebruikt. Workspace-installaties
behouden het bestaande, begrensde gedrag voor vermeldingspatronen. Elke geaccepteerde workspace
krijgt een afzonderlijke identiteit voor routering, sessies, transcripties, deduplicatie, geschiedenis en caching,
zelfs wanneer Slack-ID’s overlappen. Binnen de message-stream worden gewone gebruikersberichten
en door gebruikers aangemaakte file_share-gebeurtenissen ondersteund; andere berichtsubtypen worden
vóór autorisatie of verwerking van systeemgebeurtenissen geweigerd.
Enterprise-DM’s moeten uitgeschakeld zijn (dm.enabled=false of
dmPolicy="disabled") of expliciet geopend zijn met dmPolicy="open" en
een effectieve account-allowFrom die de letterlijke waarde "*" bevat. Een lege
toegestane lijst of gebruikersspecifieke ID’s zonder "*" laten het opstarten mislukken. Koppeling en
DM-toegestane lijsten per gebruiker worden geweigerd omdat Slack-gebruikers-ID’s in die autorisatieopslag
niet aan een workspace zijn gekoppeld. Kanaal- en afzenderbeleid
blijft van toepassing op kanaalberichten.
Installatie
plugins install registreert en activeert de Plugin. Deze doet niets totdat je de Slack-app en onderstaande kanaalinstellingen configureert. Zie Plugins voor algemene regels voor het installeren van plugins.
Snelle configuratie
De manifesten in deze sectie maken een installatie die tot één workspace is beperkt. Gebruik voor een installatie voor een volledige Enterprise Grid-organisatie in plaats daarvan het speciale organisatiebrede manifest en de bijbehorende workflow.- Socket Mode (standaard)
- HTTP Request URLs
1
Een nieuwe Slack-app maken
Open api.slack.com/apps → Create New App → From a manifest → selecteer je workspace → plak een van de onderstaande manifesten → Next → Create.Nadat Slack de app heeft gemaakt:
Recommended komt overeen met de volledige functieset van de Slack-plugin: App Home, slash-opdrachten, bestanden, reacties, vastgezette items, groeps-DM’s en het lezen van emoji’s/gebruikersgroepen. Kies Minimal wanneer het workspacebeleid scopes beperkt — deze optie omvat DM’s, kanaal-/groepsgeschiedenis, vermeldingen en slash-opdrachten, maar laat bestanden, reacties, vastgezette items, groeps-DM’s (
mpim:*), emoji:read en usergroups:read weg. Zie Checklist voor manifest en scopes voor de onderbouwing per scope en aanvullende opties, zoals extra slash-opdrachten.- Basic Information -> App-Level Tokens -> Generate Token and Scopes: voeg
connections:writetoe, sla op en kopieer het App-Level Token. - Install App -> Install to Workspace: kopieer het Bot User OAuth Token.
2
OpenClaw configureren
Aanbevolen SecretRef-configuratie:Terugval op omgevingsvariabelen (alleen standaardaccount):
3
Gateway starten
Gebruikersidentiteit (plaatsen als een echte persoon)
Met een gebruikersidentiteit kan OpenClaw lezen en berichten plaatsen als de persoon die de Slack-app autoriseert. DeuserToken is de handelende identiteit; een bijbehorende Slack-app verwerkt verkeer van de Events API via Socket Mode of een HTTP Request URL. De bijbehorende app heeft geen botgebruiker of bottoken nodig.
Stel de bijbehorende app als volgt in:
-
Voeg onder OAuth & Permissions -> User Token Scopes deze machtigingen met gebruikersscope toe:
- geschiedenis:
channels:history,groups:history,im:history,mpim:history - gesprekken opzoeken:
channels:read,groups:read,im:read,mpim:read - personen:
users:read - berichten plaatsen:
chat:write(berichten worden geplaatst als de autoriserende gebruiker) - DM’s openen:
im:write,mpim:write
- geschiedenis:
-
Voeg onder Event Subscriptions -> Subscribe to events on behalf of users deze gebruikersgebeurtenissen toe. Voeg ze niet alleen toe aan de lijst met botgebeurtenissen:
message.channelsmessage.groupsmessage.immessage.mpim
-
Kies één gebeurtenistransport:
- Socket Mode: schakel Socket Mode in en maak een token op appniveau met
connections:write. Configureer dit alsappToken. - HTTP Request URL: laat Event Subscriptions verwijzen naar het openbare Slack-eindpunt van OpenClaw en kopieer Basic Information -> App Credentials -> Signing Secret. Configureer dit als
signingSecret.
- Socket Mode: schakel Socket Mode in en maak een token op appniveau met
-
Installeer de app of installeer deze opnieuw, autoriseer deze als de beoogde persoon en kopieer het resulterende OAuth-gebruikerstoken naar
userToken.
Transportafstemming voor Socket Mode
OpenClaw stelt voor Socket Mode de pong-time-out van de Slack SDK-client standaard in op 15 seconden. Pas de transportinstellingen alleen aan wanneer werkruimte- of hostspecifieke afstemming nodig is:clientPingTimeout is de wachttijd voor een pong nadat de SDK een clientping heeft verzonden; serverPingTimeout is de wachttijd voor serverpings van Slack. Appberichten en gebeurtenissen blijven applicatiestatus, geen signalen voor de beschikbaarheid van het transport.
Opmerkingen:
socketModewordt genegeerd in de HTTP Request URL-modus.- Basisinstellingen voor
channels.slack.socketModegelden voor alle Slack-accounts, tenzij ze worden overschreven. Overschrijvingen per account gebruikenchannels.slack.accounts.<accountId>.socketMode; omdat dit een objectoverschrijving is, moet je elk veld voor socketafstemming opnemen dat je voor dat account wilt gebruiken. - Alleen
clientPingTimeoutheeft een OpenClaw-standaardwaarde (15000).serverPingTimeoutenpingPongLoggingEnabledworden alleen aan de Slack SDK doorgegeven wanneer ze zijn geconfigureerd. - De wachttijd voor het opnieuw starten van Socket Mode begint rond 2 seconden en loopt op tot maximaal ongeveer 30 seconden. Herstelbare fouten bij het starten, wachten op het starten en verbreken van de verbinding worden opnieuw geprobeerd totdat het kanaal stopt. Permanente account- en referentiefouten, zoals ongeldige authenticatie, ingetrokken tokens of ontbrekende scopes, mislukken direct in plaats van eindeloos opnieuw te worden geprobeerd.
Checklist voor manifest en scopes
Het basismanifest van de Slack-app is hetzelfde voor Socket Mode en HTTP Request URL’s. Alleen het bloksettings (en url van de slash-opdracht) verschilt.
Basismanifest (standaard voor Socket Mode):
settings door de HTTP-variant en voeg url toe aan elke slash-opdracht. Openbare URL vereist:
Aanvullende manifestinstellingen
Maak verschillende functies beschikbaar die de bovenstaande standaardinstellingen uitbreiden. Het standaardmanifest schakelt het tabblad Home van Slack App Home in en abonneert zich opapp_home_opened. Wanneer een werkruimtelid het tabblad Home opent, publiceert OpenClaw een veilige standaardweergave voor Home met views.publish; er worden geen gespreksgegevens of privéconfiguratie opgenomen. Wanneer de modus met één slash-opdracht is ingeschakeld, gebruikt de opdrachthint channels.slack.slashCommand.name; installaties die native opdrachten of geen slash-opdrachten gebruiken, laten die hint weg. Het tabblad Messages blijft ingeschakeld voor Slack-DM’s. Nieuwe apps gebruiken Slack Agent View via features.agent_view, assistant:write en app_context_changed. Elke zichtbare hoofdweergave van Agent View wordt naar een eigen OpenClaw-threadsessie gerouteerd en de geordende actieve-weergave-entiteiten van Slack bereiken de agent uitsluitend als niet-vertrouwde context.
Bestaande apps die features.assistant_view al gebruiken, kunnen hun huidige manifest behouden. OpenClaw blijft assistant_thread_started en assistant_thread_context_changed voor die installaties afhandelen. Slack maakt de migratie van Assistant View naar Agent View onomkeerbaar en vereist dat gebruikers daarna een harde vernieuwing uitvoeren. Vervang assistant_view daarom pas in een bestaande app wanneer je de volledige werkruimte wilt migreren.
Optionele native slash-opdrachten
Optionele native slash-opdrachten
Meerdere native slash-opdrachten kunnen met enige nuance worden gebruikt in plaats van één geconfigureerde opdracht:
- Gebruik
/agentstatusin plaats van/status, omdat de opdracht/statusis gereserveerd. - Er kunnen niet meer dan 25 slash-opdrachten tegelijk voor een Slack-app worden geregistreerd (limiet van het Slack-platform).
/login handmatig aan het manifest toe; het onderstaande voorbeeld bevat deze in plaats van de optionele alias /side om op 25 opdrachten te blijven. /login kan overal worden weergegeven, maar geeft alleen koppelcodes uit in privéchats of de webinterface.Vervang je bestaande sectie features.slash_commands door een subset van de beschikbare opdrachten:- Socket Mode (standaard)
- HTTP-aanvraag-URL's
Optionele auteurschapsbereiken (schrijfbewerkingen)
Optionele auteurschapsbereiken (schrijfbewerkingen)
Voeg het botbereik
chat:write.customize toe als je wilt dat uitgaande berichten de identiteit van de actieve agent gebruiken (aangepaste gebruikersnaam en pictogram) in plaats van de standaardidentiteit van de Slack-app.Als je een emoji-pictogram gebruikt, verwacht Slack de syntaxis :emoji_name:.Optionele gebruikerstokenbereiken (leesbewerkingen)
Optionele gebruikerstokenbereiken (leesbewerkingen)
Als je
channels.slack.userToken configureert, zijn gebruikelijke leesbereiken:channels:history,groups:history,im:history,mpim:historychannels:read,groups:read,im:read,mpim:readusers:readreactions:readpins:reademoji:readsearch:read(als je afhankelijk bent van zoekleesbewerkingen van Slack)
Tokenmodel
- Botidentiteit (standaard) vereist
botToken+appTokenvoor Socket Mode, ofbotToken+signingSecretvoor HTTP-modus. - Gebruikersidentiteit vereist
userToken+appTokenvoor Socket Mode, ofuserToken+signingSecretvoor HTTP-modus. Hierbij wordt geen bottoken gebruikt. - Relaymodus vereist
botTokenplusrelay.url,relay.authTokenenrelay.gatewayId; hierbij wordt geen apptoken of ondertekeningsgeheim gebruikt. botToken,appToken,signingSecret,relay.authTokenenuserTokenaccepteren tekenreeksen met platte tekst of SecretRef-objecten.- Tokens in de configuratie overschrijven de terugval op omgevingsvariabelen.
- De terugval via de omgevingsvariabelen
SLACK_BOT_TOKEN,SLACK_APP_TOKENenSLACK_USER_TOKENgeldt telkens alleen voor het standaardaccount. userTokengebruikt standaard alleen-lezen gedrag (userTokenReadOnly: true).
- Slack-accountinspectie houdt per aanmeldgegeven de velden
*Sourceen*Statusbij (botToken,appToken,signingSecret,userToken). - De status is
available,configured_unavailableofmissing. configured_unavailablebetekent dat het account via SecretRef of een andere niet-inline bron voor geheimen is geconfigureerd, maar dat het huidige opdracht-/runtimepad de daadwerkelijke waarde niet kon omzetten.- In HTTP-modus wordt
signingSecretStatusopgenomen. Socket Mode gebruiktbotTokenStatus+appTokenStatusvoor botidentiteit enuserTokenStatus+appTokenStatusvoor gebruikersidentiteit.
Acties en poorten
Slack-acties worden beheerd doorchannels.slack.actions.*.
Beschikbare actiegroepen in de huidige Slack-tooling:
De huidige Slack-berichtacties omvatten
send, upload-file, download-file, read, edit, delete, pin, unpin, list-pins, member-info en emoji-list. download-file accepteert Slack-bestands-ID’s die in tijdelijke aanduidingen voor inkomende bestanden worden weergegeven en retourneert afbeeldingsvoorbeelden voor afbeeldingen of lokale bestandsmetadata voor andere bestandstypen.
Toegangsbeheer en routering
- DM-beleid
- Kanaalbeleid
- Vermeldingen en kanaalgebruikers
channels.slack.dmPolicy beheert DM-toegang. channels.slack.allowFrom is de canonieke DM-toegestane lijst.pairing(standaard)allowlistopen(vereist datchannels.slack.allowFrom"*"bevat)disabled
dm.enabled(standaard true)channels.slack.allowFromdm.allowFrom(verouderd)dm.groupEnabled(groeps-DM’s standaard false)dm.groupChannels(optionele MPIM-toegestane lijst)
channels.slack.accounts.default.allowFromgeldt alleen voor het accountdefault.- Benoemde accounts nemen
channels.slack.allowFromover wanneer hun eigenallowFromniet is ingesteld. - Benoemde accounts nemen
channels.slack.accounts.default.allowFromniet over.
channels.slack.dm.policy en channels.slack.dm.allowFrom worden voor compatibiliteit nog steeds gelezen. openclaw doctor --fix migreert ze naar dmPolicy en allowFrom wanneer dat zonder wijziging van de toegang mogelijk is.Voor koppeling in DM’s wordt openclaw pairing approve slack <code> gebruikt.Threads, sessies en antwoordtags
- Privéberichten worden gerouteerd als
direct; kanalen alschannel; MPIM’s alsgroup. - Slack-routekoppelingen accepteren onbewerkte peer-ID’s plus Slack-doelvormen zoals
channel:C12345678,user:U12345678en<@U12345678>. - Met de standaardwaarde
session.dmScope=mainworden gewone Slack-privéberichten samengevoegd in de hoofdsessie van de agent. Hoofdelementen van Agent View en bestaande threads van Assistant View blijven geïsoleerd als:thread:<threadTs>-sessies. - Kanaalsessies:
agent:<agentId>:slack:channel:<channelId>. - Gewone kanaalberichten op het hoogste niveau blijven in de sessie per kanaal, zelfs wanneer
replyToModenietoffis. - Antwoorden in threads van Slack-kanalen, MPIM’s, Agent View en Assistant View gebruiken de bovenliggende Slack-
thread_tsvoor sessieachtervoegsels (:thread:<threadTs>). Gewone antwoordthreads in privéberichten blijven een UI-voorziening binnen de basisprivéberichtsessie. - OpenClaw voegt een geschikt kanaalhoofdelement op het hoogste niveau toe aan
agent:<agentId>:slack:channel:<channelId>:thread:<rootTs>wanneer wordt verwacht dat dit hoofdelement een zichtbare Slack-thread start, zodat het hoofdelement en latere antwoorden in de thread één OpenClaw-sessie delen. Dit geldt voorapp_mention-gebeurtenissen, expliciete botvermeldingen of overeenkomsten met geconfigureerde vermeldingspatronen, enrequireMention: false-kanalen met een niet-offreplyToMode. - De standaardwaarde van
channels.slack.thread.historyScopeisthread; de standaardwaarde vanthread.inheritParentisfalse. channels.slack.thread.initialHistoryLimitbepaalt hoeveel bestaande threadberichten worden opgehaald wanneer een nieuwe threadsessie begint (standaard20; stel in op0om uit te schakelen).channels.slack.implicitMentions.replyToBotbepaalt of een antwoord op het eigen bericht van de bot de vereiste vermelding omzeilt (standaardtrue).channels.slack.implicitMentions.threadParticipationbepaalt of vervolgberichten in een thread waarin de bot heeft geantwoord de vereiste vermelding omzeilen (standaardtrue). Stel dit in opfalseom in die vervolgberichten een nieuwe expliciete vermelding te vereisen.openclaw doctor --fixmigreert de voormalige sleutelchannels.slack.thread.requireExplicitMentionnaar deze positieve canonieke vlag.- Accountoverschrijvingen staan onder
channels.slack.accounts.<id>.implicitMentions; gedeelde standaardwaarden staan onderchannels.defaults.implicitMentions.
channels.slack.channels.<id>.replyToMode: overschrijving per kanaal voor berichten in Slack-kanalen/privékanalenchannels.slack.replyToMode:off|first|all|batched(standaardoff)channels.slack.replyToModeByChatType: perdirect|group|channel- verouderde terugvaloptie voor directe chats:
channels.slack.dm.replyToMode
[[reply_to_current]][[reply_to:<id>]]
message replyBroadcast: true in met action: "send" en threadId of replyTo om Slack te vragen het threadantwoord ook naar het bovenliggende kanaal te verspreiden. Dit wordt gekoppeld aan Slacks chat.postMessage-vlag reply_broadcast en wordt alleen ondersteund voor verzendingen met tekst of Block Kit, niet voor media-uploads.
Wanneer een aanroep van het hulpprogramma message binnen een Slack-thread wordt uitgevoerd en op hetzelfde kanaal is gericht, neemt OpenClaw normaal gesproken de huidige Slack-thread over volgens de effectieve replyToMode voor het account, chattype of kanaal. Automatische antwoorden en aanroepen van send of upload-file binnen hetzelfde kanaal gebruiken dezelfde overschrijving per kanaal. Stel topLevel: true in op action: "send" of action: "upload-file" om in plaats daarvan een nieuw bericht in het bovenliggende kanaal af te dwingen. threadId: null wordt geaccepteerd als dezelfde afmelding op het hoogste niveau.
replyToMode="off" schakelt optionele uitgaande Slack-antwoordthreads uit, inclusief expliciete [[reply_to_*]]-tags. Agent View en Assistant View zijn door Slack beheerde threadervaringen, waardoor hun antwoorden en status ongeacht deze instelling op het zichtbare hoofdelement blijven. Andere binnenkomende Slack-threadsessies worden hierdoor niet afgevlakt. Dit verschilt van Telegram, waar expliciete tags nog steeds worden gehonoreerd in de modus "off". Slack-threads verbergen berichten voor het kanaal, terwijl Telegram-antwoorden inline zichtbaar blijven.Bevestigingsreacties
ackReaction verzendt een bevestigingsemoji terwijl OpenClaw een binnenkomend bericht verwerkt. ackReactionScope bepaalt wanneer die emoji daadwerkelijk wordt verzonden.
Standaard blijft de bevestiging statisch terwijl de ingebouwde threadstatus van de Slack-agent/-assistent de voortgang toont met wisselende laadberichten. Stel messages.statusReactions.enabled: true in om in plaats daarvan de reactielevenscyclus in wachtrij/nadenken/hulpprogramma/voltooid/fout te gebruiken.
Emoji (ackReaction)
Volgorde van omzetting:
channels.slack.accounts.<accountId>.ackReactionchannels.slack.ackReactionmessages.ackReaction- terugvalemoji voor de agentidentiteit (
agents.entries.*.identity.emoji, anders"eyes"/ 👀)
- Slack verwacht shortcodes (bijvoorbeeld
"eyes"). - Gebruik
""om de reactie voor het Slack-account of globaal uit te schakelen.
Bereik (messages.ackReactionScope)
De Slack-provider leest het bereik uit messages.ackReactionScope (standaard "group-mentions"). Momenteel bestaat er geen overschrijving op Slack-account- of Slack-kanaalniveau; de waarde geldt globaal voor de Gateway.
Waarden:
"all": reageer in privéberichten en groepen, inclusief omgevingsgebeurtenissen in ruimtes."direct": reageer alleen in privéberichten."group-all": reageer op elk groepsbericht behalve omgevingsgebeurtenissen in ruimtes (geen privéberichten)."group-mentions"(standaard): reageer in groepen, maar alleen wanneer de bot wordt vermeld (of in groepsvermeldingen waarvoor deelname is ingeschakeld). Privéberichten zijn uitgesloten."off"/"none": reageer nooit.
Het standaardbereik (
"group-mentions") activeert geen bevestigingsreacties in directe berichten of omgevingsgebeurtenissen in ruimtes. Om de geconfigureerde ackReaction (bijvoorbeeld "eyes") te zien bij binnenkomende Slack-privéberichten en stille ruimtegebeurtenissen, stel je messages.ackReactionScope in op "all". messages.ackReactionScope wordt gelezen wanneer de Slack-provider opstart. De Gateway moet daarom opnieuw worden gestart voordat de wijziging van kracht wordt.Tekststreaming
channels.slack.streaming bepaalt het gedrag van livevoorbeelden:
off: schakel het streamen van livevoorbeelden uit.partial(standaard): vervang de voorbeeldtekst door de nieuwste gedeeltelijke uitvoer.block: voeg voorbeeldupdates in delen toe.progress: toon voortgangsstatustekst tijdens het genereren en verzend daarna de definitieve tekst.streaming.preview.toolProgress: wanneer een conceptvoorbeeld actief is, worden updates van hulpprogramma’s en voortgang naar hetzelfde bewerkte voorbeeldbericht gerouteerd (standaard:true). Stelfalsein om afzonderlijke berichten voor hulpprogramma’s en voortgang te behouden.streaming.preview.commandText/streaming.progress.commandText: stel in opstatusom compacte voortgangsregels voor hulpprogramma’s te behouden en onbewerkte opdracht-/uitvoeringstekst te verbergen (standaard:raw).
channels.slack.streaming.nativeTransport bepaalt het ingebouwde streamen van tekst in Slack wanneer channels.slack.streaming.mode partial is (standaard: true).
Ingebouwde Slack-taakkaarten voor voortgang moeten expliciet worden ingeschakeld voor de voortgangsmodus. Stel channels.slack.streaming.progress.nativeTaskCards in op true met channels.slack.streaming.mode="progress" om tijdens het werk een ingebouwde plan-/taakkaart van Slack te verzenden en dezelfde taakkaart na voltooiing bij te werken. Zonder deze vlag behoudt de voortgangsmodus het overdraagbare gedrag voor conceptvoorbeelden.
- Er moet een antwoordthread beschikbaar zijn om native tekststreaming en de Slack-assistentthreadstatus weer te geven. De threadselectie volgt nog steeds
replyToMode. - Kanalen, groepschats en DM-hoofdberichten kunnen nog steeds het normale conceptvoorbeeld gebruiken wanneer native streaming niet beschikbaar is of er geen antwoordthread bestaat.
- Slack-DM’s op hoofdniveau blijven standaard buiten een thread, zodat ze Slacks threadachtige native streaming-/statusvoorbeeld niet weergeven; in plaats daarvan plaatst en bewerkt OpenClaw een conceptvoorbeeld in de DM.
- Media en niet-tekstuele payloads vallen terug op normale aflevering.
- Definitieve media-/foutpayloads annuleren wachtende voorbeeldbewerkingen; geschikte definitieve tekst-/blokpayloads worden alleen verzonden wanneer ze het voorbeeld ter plaatse kunnen bewerken.
- Als streaming halverwege een antwoord mislukt, valt OpenClaw voor de resterende payloads terug op normale aflevering.
channels.slack.streamMode(replace | status_final | append) is een verouderde alias voorchannels.slack.streaming.mode.- boolean
channels.slack.streamingis een verouderde alias voorchannels.slack.streaming.modeenchannels.slack.streaming.nativeTransport. channels.slack.chunkModeenchannels.slack.nativeStreamingop hoofdniveau zijn verouderde aliassen voorchannels.slack.streaming.chunkModeenchannels.slack.streaming.nativeTransport.- Verouderde aliassen worden tijdens runtime niet gelezen; voer
openclaw doctor --fixuit om de opgeslagen Slack-streamingconfiguratie te herschrijven naar de canonieke sleutels.
Terugvalreactie voor typen
typingReaction voegt tijdelijk een reactie toe aan het binnenkomende Slack-bericht terwijl OpenClaw een antwoord verwerkt en verwijdert deze wanneer de uitvoering is voltooid. Dit is vooral nuttig buiten antwoorden in threads, die standaard de statusindicator “is aan het typen…” gebruiken.
Volgorde van omzetting:
channels.slack.accounts.<accountId>.typingReactionchannels.slack.typingReaction
- Slack verwacht shortcodes (bijvoorbeeld
"hourglass_flowing_sand"). - De reactie is op basis van beste inspanning en er wordt automatisch geprobeerd deze op te ruimen nadat het antwoord- of foutpad is voltooid.
Spraakinvoer
Als je OpenClaw momenteel in Slack met spraak wilt gebruiken, stuur je een Slack-audiofragment naar de OpenClaw-app. De dicteermicrofoon van Slackbot is een afzonderlijke functie van Slack en geen app-API.- Spraakdicteren met Slackbot vindt plaats in het privégesprek van de gebruiker met Slackbot. Slack zet de opname om in een Slackbot-prompt, maar verstuurt via de Events API geen audiobestand, dicteergebeurtenis, prompt of invoerbronmarkering naar Slack-apps van derden. De OpenClaw-Plugin voor Slack kan deze functie niet inschakelen of ontvangen.
- Slack-audiofragmenten zijn opgeslagen Slack-bestanden die in een OpenClaw-DM, kanaal of thread kunnen worden geplaatst. OpenClaw downloadt een toegankelijk fragment met het bottoken, normaliseert Slacks MIME-metadata voor fragmenten en stuurt het door de gedeelde pijplijn voor audiotranscriptie. Het aanbevolen app-manifest bevat het vereiste bereik
files:read.
requireMention: true kan een audiofragment zonder bijschrift aan de voorwaarde voldoen door een geconfigureerd vermeldingspatroon uit te spreken (agents.entries.*.groupChat.mentionPatterns, met terugval op messages.groupChat.mentionPatterns). OpenClaw autoriseert de afzender voordat het fragment wordt gedownload of getranscribeerd en laat het vervolgens alleen toe wanneer het transcript overeenkomt. Een mislukt of niet-overeenkomend voorlopig transcript wordt samen met het gedownloade fragment verwijderd; het wordt niet bewaard in de kanaalgeschiedenis. De native Slack-identiteit @bot kan niet uit spraak worden afgeleid, dus configureer een patroon voor een gesproken naam of voeg een getypte vermelding toe. Als het terugsturen van het transcript is ingeschakeld, wordt dit pas na toelating verzonden.
Media, opsplitsing en aflevering
Binnenkomende bijlagen
Binnenkomende bijlagen
Slack-bestandsbijlagen worden gedownload van door Slack gehoste privé-URL’s (via een met een token geauthenticeerde aanvraag) en naar de mediaopslag geschreven wanneer het ophalen slaagt en de groottelimieten dit toestaan. Bestandsplaatsaanduidingen bevatten de Slack-
fileId, zodat agents het oorspronkelijke bestand kunnen ophalen met download-file.Downloads gebruiken begrensde time-outs voor inactiviteit en totale duur. Als het ophalen van Slack-bestanden vastloopt of mislukt, blijft OpenClaw het bericht verwerken en valt het terug op de bestandsplaatsaanduiding.De limiet voor de grootte van binnenkomende runtimegegevens is standaard 20MB, tenzij deze wordt overschreven door channels.slack.mediaMaxMb.Uitgaande tekst en bestanden
Uitgaande tekst en bestanden
- tekstfragmenten gebruiken
channels.slack.textChunkLimit(standaard8000, begrensd op Slacks eigen limiet voor berichtlengte) channels.slack.streaming.chunkMode="newline"schakelt opsplitsing met voorrang voor alinea’s in- bestanden worden verzonden via Slacks upload-API’s en kunnen antwoorden in threads bevatten (
thread_ts) - lange bestandsbijschriften gebruiken het eerste voor Slack veilige tekstfragment als uploadopmerking en verzenden de resterende fragmenten als vervolgberichten
- de limiet voor uitgaande media volgt
channels.slack.mediaMaxMbwanneer deze is geconfigureerd; anders gebruiken kanaalverzendingen de standaardwaarden per MIME-type uit de mediapijplijn
Afleveringsdoelen
Afleveringsdoelen
Voorkeursdoelen die expliciet zijn opgegeven:
user:<id>voor DM’schannel:<id>voor kanalen
Opdrachten en slashgedrag
Slashopdrachten verschijnen in Slack als één geconfigureerde opdracht of als meerdere native opdrachten. Configureerchannels.slack.slashCommand om de standaardwaarden voor opdrachten te wijzigen:
enabled: falsename: "openclaw"sessionPrefix: "slack:slash"ephemeral: true
channels.slack.commands.native: true of commands.native: true in algemene configuraties.
- De automatische modus voor native opdrachten staat voor Slack uit, zodat
commands.native: "auto"native Slack-opdrachten niet inschakelt.
- 3-5 opties die kort genoeg zijn: een overloopmenu (”…”)
- meer dan 100 opties, wanneer asynchrone filtering van opties beschikbaar is: externe selectie
- 1-2 opties, of een optie waarvan de gecodeerde waarde te lang is voor een selectie: knopblokken
- anders (6-100 opties, of meer dan 100 zonder asynchrone filtering): statisch selectiemenu, opgesplitst in 100 opties per menu
agent:<agentId>:slack:slash:<userId> en leiden de uitvoering van opdrachten nog steeds met CommandTargetSessionKey naar de sessie van het doelgesprek.
Native grafieken
Slacks openbaredata_visualization Block Kit-blok
geeft lijn-, staaf-, vlak- en cirkeldiagrammen weer in berichten. OpenClaw zet het overdraagbare
presentation chart-blok om naar die native vorm; buiten de normale
chat:write-berichttoegang zijn geen aanvullend OAuth-bereik,
bestandsupload, afbeeldingsrenderer of Slack-configuratie vereist.
- titel en optionele aslabels: 50 tekens
- cirkel: 1-12 positieve segmenten
- lijn/staaf/vlak: 1-12 reeksen met unieke namen en 1-20 gedeelde categorieën
- labels voor segmenten, categorieën en reeksen: 20 tekens
- elke reeks moet voor elke categorie één eindige waarde bevatten; niet-cirkelwaarden mogen negatief zijn
invalid_blocks, verwijdert OpenClaw
de afgewezen native gegevensblokken, behoudt het eventuele aangrenzende bedieningselementen en verzendt het
de volledige grafiekweergave als zichtbare tekst.
Slack accepteert momenteel maximaal twee data_visualization-blokken per bericht. Wanneer
een presentatie meer dan twee geldige grafieken bevat, behoudt OpenClaw hun volgorde
en gaat de native weergave verder in vervolgberichten, met maximaal twee
grafieken in elk bericht.
Slacks lancering voor ontwikkelaars
beschrijft het blok als een appgerichte Block Kit-functie en vermeldt geen beperking
tot betaalde abonnementen. De tekst over beschikbaarheid voor Business+/Enterprise is van toepassing op
Slakbots automatische AI-grafiekgeneratie, die losstaat van een app die
een reeds gestructureerde Block Kit-grafiek verzendt. Grafieken zijn uitsluitend berichtblokken, geen inhoud
voor App Home, modals of Canvas.
Native tabellen
Slacks huidigedata_table Block Kit-blok
geeft gestructureerde rijen en kolommen weer in berichten. OpenClaw zet een expliciet
overdraagbaar presentation table-blok om naar data_table; het gebruikt niet Slacks
verouderde table-blok.
Buiten de normale chat:write-berichttoegang is geen aanvullend OAuth-bereik of
Slack-configuratie vereist.
raw_text-cellen. Numerieke cellen
worden omgezet naar raw_number, waarbij de eindige numerieke waarde behouden blijft voor native sortering
en filtering. rowHeaderColumnIndex markeert, indien aanwezig, die op nul gebaseerde
kolom als Slack-rijkoppen.
Slacks gepubliceerde data_table-limieten worden vóór native weergave afgedwongen:
- 1-20 kolommen
- 1-100 gegevensrijen, plus de koprij
- hetzelfde aantal cellen in elke rij
- maximaal 10.000 tekens in totaal voor alle tabelcellen in één bericht
<@U123> geen Slack-vermelding worden.
Als Slack systeemeigen diagram- of tabelblokken weigert met invalid_blocks, verwijdert OpenClaw
alle systeemeigen gegevensblokken in één begrensde herstelstap, behoudt het geldige
naastliggende blokken zoals knoppen en selecties, en verzendt het volledige zichtbare diagram-
en tabeltekst met Slack-opmaak uitgeschakeld. Levering via slash-opdrachten
houdt voor de hele opdracht het budget van vijf aanroepen van Slack voor response_url bij. Vóór elke
antwoordbatch selecteert OpenClaw een volledig plan dat binnen de resterende aanroepen past, of mislukt het
voordat die batch wordt geplaatst.
Alleen expliciete presentation-tabelblokken worden naar systeemeigen tabellen gepromoveerd.
Markdown-tabellen met sluistekens blijven geschreven tekst; OpenClaw doet geen aannames over de tabelstructuur
of celtypen. Bestaande vertrouwde producenten van systeemeigen Slack-inhoud kunnen ruwe blokken blijven
doorgeven via channelData.slack.blocks; OpenClaw leidt terugvaltekst
af uit geldige ruwe data_table-cellen, terwijl onjuist gevormde aangepaste blokken mogelijk
terugvallen op hun bijschrift of de algemene Block Kit-terugvalweergave. Draagbare uitvoer van agents, de CLI
en plugins moet presentation gebruiken.
Interactieve antwoorden
Slack kan door agents gemaakte interactieve antwoordbedieningselementen weergeven, maar deze functie is standaard uitgeschakeld. Geef voor nieuwe uitvoer van agents, de CLI en plugins de voorkeur aan de gedeeldepresentation-knoppen of selectieblokken. Ze gebruiken hetzelfde Slack-interactiepad
en vallen ook bruikbaar terug op andere kanalen.
Schakel dit globaal in:
[[slack_buttons: Approve:approve, Reject:reject]][[slack_select: Choose a target | Canary:canary, Production:production]]
compileSlackInteractiveReplies(...)parseSlackOptionsLine(...)isSlackInteractiveRepliesEnabled(...)buildSlackInteractiveBlocks(...)
presentation-payloads en buildSlackPresentationBlocks(...) voor nieuwe
in Slack weergegeven bedieningselementen.
Opmerkingen:
- Dit is verouderde Slack-specifieke UI. Andere kanalen vertalen Slack Block Kit-richtlijnen niet naar hun eigen knopsystemen.
- De interactieve callbackwaarden zijn door OpenClaw gegenereerde ondoorzichtige tokens, geen ruwe door agents gemaakte waarden.
- Als gegenereerde interactieve blokken de limieten van Slack Block Kit zouden overschrijden, valt OpenClaw terug op het oorspronkelijke tekstantwoord in plaats van een ongeldige blokkenpayload te verzenden.
Door plugins beheerde modale inzendingen
Slack-plugins die een interactieve handler registreren, kunnen ook modaleview_submission- en view_closed-levenscyclusgebeurtenissen ontvangen voordat OpenClaw
de payload comprimeert voor de systeemgebeurtenis die voor de agent zichtbaar is. Gebruik een van deze routeringspatronen
bij het openen van een modaal venster in Slack:
- Stel
callback_idin opopenclaw:<namespace>:<payload>. - Of behoud een bestaande
callback_iden plaatspluginInteractiveData: "<namespace>:<payload>"in de modaleprivate_metadata.
ctx.interaction.kind als view_submission of
view_closed, genormaliseerde inputs en het volledige ruwe stateValues-object van
Slack. Routering uitsluitend op callback-id volstaat om de pluginhandler aan te roepen; neem
de bestaande modale private_metadata-routeringsvelden voor gebruiker/sessie op wanneer het
modale venster ook een voor de agent zichtbare systeemgebeurtenis moet produceren. De agent ontvangt een
compacte, geredigeerde Slack interaction: ...-systeemgebeurtenis. Als de handler
systemEvent.summary, systemEvent.reference of systemEvent.data retourneert, worden die
velden opgenomen in die compacte gebeurtenis, zodat de agent kan verwijzen naar
door plugins beheerde opslag zonder de volledige formulierpayload te zien.
Systeemeigen goedkeuringen in Slack
Slack kan fungeren als systeemeigen goedkeuringsclient met interactieve knoppen en interacties, in plaats van terug te vallen op de web-UI of terminal.- Uitvoerings- en plugingoedkeuringen kunnen worden weergegeven als systeemeigen Slack-prompts in Block Kit.
channels.slack.execApprovals.*blijft de configuratie voor inschakeling van de systeemeigen goedkeuringsclient voor uitvoering en routering naar DM/kanaal.- DM’s voor uitvoeringsgoedkeuring gebruiken
channels.slack.execApprovals.approversofcommands.ownerAllowFrom. - Plugingoedkeuringen gebruiken systeemeigen Slack-knoppen wanneer Slack is ingeschakeld als systeemeigen goedkeuringsclient voor de oorspronkelijke sessie, of wanneer
approvals.pluginnaar de oorspronkelijke Slack-sessie of een Slack-doel routeert. - DM’s voor plugingoedkeuring gebruiken Slack-plugingoedkeurders uit
channels.slack.allowFrom,allowFromvoor een benoemd account, of de standaardroute van het account. - Autorisatie van goedkeurders wordt nog steeds afgedwongen: goedkeurders die alleen uitvoering mogen goedkeuren, kunnen pluginverzoeken niet goedkeuren tenzij ze ook plugingoedkeurders zijn.
interactivity is ingeschakeld in de instellingen van je Slack-app, worden goedkeuringsprompts rechtstreeks als Block Kit-knoppen in het gesprek weergegeven.
Wanneer die knoppen aanwezig zijn, vormen ze de primaire goedkeurings-UX; OpenClaw
mag alleen een handmatige /approve-opdracht opnemen wanneer het gereedschapsresultaat aangeeft dat chatgoedkeuringen
niet beschikbaar zijn of handmatige goedkeuring de enige mogelijkheid is.
Configuratiepad:
channels.slack.execApprovals.enabledchannels.slack.execApprovals.approvers(optioneel; valt indien mogelijk terug opcommands.ownerAllowFrom)channels.slack.execApprovals.target(dm|channel|both, standaard:dm)agentFilter,sessionFilter
enabled niet is ingesteld of "auto" is, en ten minste één
uitvoeringsgoedkeurder kan worden bepaald. Slack kan via dit systeemeigen-clientpad ook systeemeigen plugingoedkeuringen afhandelen
wanneer Slack-plugingoedkeurders kunnen worden bepaald en het verzoek overeenkomt met de systeemeigen-clientfilters. Stel
enabled: false in om Slack expliciet uit te schakelen als systeemeigen goedkeuringsclient. Stel enabled: true in om
systeemeigen goedkeuringen geforceerd in te schakelen wanneer goedkeurders kunnen worden bepaald. Het uitschakelen van Slack-uitvoeringsgoedkeuringen schakelt
de levering van systeemeigen Slack-plugingoedkeuringen die via approvals.plugin is ingeschakeld niet uit; voor de levering van plugingoedkeuringen
worden in plaats daarvan Slack-plugingoedkeurders gebruikt.
Standaardgedrag zonder expliciete Slack-configuratie voor uitvoeringsgoedkeuring:
approvals.exec staat hiervan los. Gebruik dit alleen wanneer prompts voor uitvoeringsgoedkeuring ook
naar andere chats of expliciete externe doelen moeten worden gerouteerd. Gedeeld doorsturen via approvals.plugin staat eveneens
los hiervan; systeemeigen Slack-levering onderdrukt die terugval alleen wanneer Slack het verzoek om
plugingoedkeuring systeemeigen kan afhandelen.
/approve in dezelfde chat werkt ook in Slack-kanalen en DM’s die al opdrachten ondersteunen. Zie Uitvoeringsgoedkeuringen voor het volledige model voor het doorsturen van goedkeuringen.
Gebeurtenissen en operationeel gedrag
- Bewerkingen/verwijderingen van berichten worden omgezet in systeemgebeurtenissen.
- Threaduitzendingen (threadantwoorden met “Also send to channel”) worden verwerkt als normale gebruikersberichten.
- Gebeurtenissen voor het toevoegen/verwijderen van reacties worden omgezet in systeemgebeurtenissen.
- Gebeurtenissen voor het toetreden/verlaten van leden, het maken/hernoemen van kanalen en het toevoegen/verwijderen van pins worden omgezet in systeemgebeurtenissen.
- Optionele aanwezigheidspeiling kan een waargenomen overgang van
awaynaaractivevan een menselijke deelnemer omzetten in een gebeurtenis in de meest recent actieve, geschikte Slack-sessie van die deelnemer. Dit is standaard uitgeschakeld. channel_id_changedkan kanaalconfiguratiesleutels migreren wanneerconfigWritesis ingeschakeld.- Metadata voor kanaalonderwerp/-doel wordt behandeld als niet-vertrouwde context en kan in de routeringscontext worden geïnjecteerd.
- Agent View-
app_context-entiteiten worden gevalideerd in de relevantievolgorde van Slack en uitsluitend beschikbaar gesteld als gestructureerde, niet-vertrouwde context; bij een ontbrekende context wordt de beurt gewist in plaats van verouderde entiteiten opnieuw te gebruiken. - De threadstarter en initiële contextvulling uit de threadgeschiedenis worden, indien van toepassing, gefilterd op basis van geconfigureerde afzenderstoegestane lijsten.
- Blokacties, snelkoppelingen en modale interacties genereren gestructureerde
Slack interaction: ...-systeemgebeurtenissen met uitgebreide payloadvelden:- blokacties: geselecteerde waarden, labels, kiezerwaarden en
workflow_*-metadata - globale snelkoppelingen: callback- en actormetadata, gerouteerd naar de directe sessie van de actor
- berichtsnelkoppelingen: callback, actor, kanaal, thread en context van het geselecteerde bericht
- modale
view_submission- enview_closed-gebeurtenissen met gerouteerde kanaalmetadata en formulierinvoer
- blokacties: geselecteerde waarden, labels, kiezerwaarden en
Aanwezigheidsgebeurtenissen
Slack verstuurt aanwezigheidswijzigingen niet via de Events API of Socket Mode. OpenClaw kan in plaats daarvanusers.getPresence peilen voor menselijke deelnemers van wie de berichten de normale Slack-toegangs- en routeringscontroles hebben doorstaan.
off(standaard): geen aanwezigheidstimer of Slack-API-aanroepen.auto: bewaak DM’s, MPIM’s en Slack-threads die in de afgelopen 24 uur actief waren, met maximaal 8 waargenomen menselijke deelnemers. Kanaalsessies op het hoogste niveau zijn uitgesloten.on: bewaak dezelfde gesprekken zonder deelnemerslimiet en neem kanaalsessies op het hoogste niveau mee. Gebruik een overschrijving per kanaal om één kanaal af te dwingen of te onderdrukken.
away naar active. Per Slack-account en gebruiker geldt een duurzame afkoelperiode van 8 uur, zelfs als die persoon aan meerdere threads deelneemt. De gebeurtenis wordt alleen naar het meest recent actieve, geschikte gesprek van die persoon gerouteerd en instrueert de agent om het geheugen/de wiki en bekende tijdzonecontext te raadplegen voordat deze beslist of één korte begroeting wordt verzonden. De agent mag stil blijven.
Het bottoken heeft users:read nodig, dat al in het aanbevolen manifest is opgenomen. Aanwezigheidsgebeurtenissen zijn niet beschikbaar voor organisatiebrede Enterprise Grid-installaties.
Configuratiereferentie
Primaire referentie: Configuratiereferentie - Slack.Belangrijkste Slack-velden
Belangrijkste Slack-velden
- modus/authenticatie:
identity,mode,enterpriseOrgInstall,botToken,appToken,userToken,signingSecret,webhookPath,accounts.* - DM-toegang:
dm.enabled,dmPolicy,allowFrom(verouderd:dm.policy,dm.allowFrom),dm.groupEnabled,dm.groupChannels - compatibiliteitsschakelaar:
dangerouslyAllowNameMatching(noodvoorziening; uitgeschakeld laten tenzij nodig) - kanaaltoegang:
groupPolicy,channels.*,channels.*.users,channels.*.requireMention,implicitMentions.* - threads/geschiedenis:
replyToMode,replyToModeByChatType,thread.*,historyLimit,dmHistoryLimit,dms.*.historyLimit - activering door aanwezigheid:
presenceEvents.mode,channels.*.presenceEvents.mode(off|auto|on; standaardoff) - bezorging:
textChunkLimit,streaming.chunkMode,mediaMaxMb,streaming,streaming.nativeTransport,streaming.preview.toolProgress - voorvertoningen:
unfurlLinks(standaard:false),unfurlMediavoor beheer van link-/mediavoorvertoningen viachat.postMessage; stelunfurlLinks: truein om linkvoorvertoningen weer in te schakelen - beheer/functies:
configWrites,commands.native,slashCommand.*,actions.*,userToken,userTokenReadOnly
Problemen oplossen
Geen antwoorden in kanalen
Geen antwoorden in kanalen
Controleer in deze volgorde:Nuttige opdrachten:
groupPolicy- toegestane kanalen (
channels.slack.channels) — sleutels moeten kanaal-ID’s zijn (C12345678), geen namen (#channel-name). Op namen gebaseerde sleutels werken stilzwijgend niet ondergroupPolicy: "allowlist", omdat kanaalroutering standaard eerst het ID gebruikt. Een ID vinden: klik met de rechtermuisknop op het kanaal in Slack → Copy link — de waardeC...aan het einde van de URL is het kanaal-ID. requireMention- toegestane lijst
usersper kanaal messages.groupChat.visibleReplies: normale groeps-/kanaalverzoeken gebruiken standaard"automatic". Als je"message_tool"hebt ingeschakeld en de logboeken assistenttekst zonder aanroep vanmessage(action=send)tonen, heeft het model het zichtbare berichttoolpad gemist. Definitieve tekst blijft in deze modus privé; controleer het uitgebreide Gateway-logboek op onderdrukte payloadmetadata, of stel dit in op"automatic"als je wilt dat elk normaal definitief assistentantwoord via het verouderde pad wordt geplaatst.messages.groupChat.unmentionedInbound: als dit"room_event"is, vormt niet-vermeld toegestaan kanaalverkeer omgevingscontext en blijft het stil, tenzij de agent het hulpmiddelmessageaanroept. Zie Omgevingsgebeurtenissen in ruimtes.
DM-berichten worden genegeerd
DM-berichten worden genegeerd
Controleer:
channels.slack.dm.enabledchannels.slack.dmPolicy(of het verouderdechannels.slack.dm.policy)- koppelingsgoedkeuringen/vermeldingen in de toegestane lijst (
dmPolicy: "open"vereist nog steedschannels.slack.allowFrom: ["*"]) - groeps-DM’s gebruiken MPIM-afhandeling; schakel
channels.slack.dm.groupEnabledin en neem, indien geconfigureerd, de MPIM op inchannels.slack.dm.groupChannels - DM-gebeurtenissen van Slack Assistant: uitgebreide logboeken die
drop message_changedvermelden, betekenen meestal dat Slack een bewerkte Assistant-threadgebeurtenis heeft verzonden zonder een herstelbare menselijke afzender in de berichtmetadata
Socketmodus maakt geen verbinding
Socketmodus maakt geen verbinding
Valideer de bot- en app-tokens en controleer of Socket Mode is ingeschakeld in de instellingen van de Slack-app.
Het App-Level Token heeft
connections:write nodig en het Bot User OAuth Token
moet bij dezelfde Slack-app/werkruimte horen als het app-token.Als openclaw channels status --probe --json botTokenStatus of
appTokenStatus: "configured_unavailable" toont, is het Slack-account
geconfigureerd, maar kon de huidige runtime de door SecretRef ondersteunde
waarde niet vinden.Logboeken zoals slack socket mode failed to start; retry ... duiden op herstelbare
opstartfouten. Ontbrekende bereiken, ingetrokken tokens en ongeldige authenticatie leiden
daarentegen direct tot een fout. Een logboekvermelding slack token mismatch ... betekent dat het bot-token en app-token
bij verschillende Slack-apps lijken te horen; corrigeer de inloggegevens van de Slack-app.HTTP-modus ontvangt geen gebeurtenissen
HTTP-modus ontvangt geen gebeurtenissen
Valideer:
- ondertekeningsgeheim
- Webhook-pad
- Slack Request URLs (Events + Interactivity + Slash Commands)
- unieke
webhookPathper HTTP-account - de openbare URL beëindigt TLS en stuurt verzoeken door naar het Gateway-pad
- het pad
request_urlvan de Slack-app komt exact overeen metchannels.slack.webhookPath(standaard/slack/events)
signingSecretStatus: "configured_unavailable" in accountmomentopnamen
voorkomt, is het HTTP-account geconfigureerd, maar kon de huidige runtime het door
SecretRef ondersteunde ondertekeningsgeheim niet vinden.Een herhaalde logboekvermelding slack: webhook path ... already registered betekent dat twee HTTP-
accounts dezelfde webhookPath gebruiken; geef elk account een afzonderlijk pad.Native/slash-opdrachten worden niet uitgevoerd
Native/slash-opdrachten worden niet uitgevoerd
Controleer of je het volgende bedoelde:
- native-opdrachtmodus (
channels.slack.commands.native: true) met overeenkomende slash-opdrachten die in Slack zijn geregistreerd - of modus voor één slash-opdracht (
channels.slack.slashCommand.enabled: true)
commands.native: "auto" schakelt native Slack-opdrachten niet in; gebruik true en maak de overeenkomende opdrachten in de Slack-app. In HTTP-modus moet elke Slack-slash-opdracht de Gateway-URL bevatten. In Socket Mode komen opdrachtpayloads binnen via de websocket en negeert Slack slash_commands[].url.Controleer ook commands.useAccessGroups, DM-autorisatie, toegestane kanalen
en toegestane lijsten users per kanaal. Slack retourneert tijdelijke fouten voor
geblokkeerde afzenders van slash-opdrachten, waaronder:This channel is not allowed.You are not authorized to use this command here.
Naslaginformatie voor bijlagemedia
Slack kan gedownloade media aan de agentbeurt toevoegen wanneer het downloaden van Slack-bestanden slaagt en de groottelimieten dit toestaan. Audioclips kunnen worden getranscribeerd, afbeeldingsbestanden kunnen via het pad voor mediabegrip of rechtstreeks naar een antwoordmodel met beeldondersteuning worden doorgegeven, en andere bestanden blijven beschikbaar als downloadbare bestandscontext.Ondersteunde mediatypen
Inkomende pijplijn
Wanneer een Slack-bericht met bestandsbijlagen binnenkomt:- OpenClaw downloadt het bestand vanaf de privé-URL van Slack met behulp van het bot-token.
- Na een geslaagde download wordt het bestand naar de mediaopslag geschreven.
- Paden en inhoudstypen van gedownloade media worden aan de inkomende context toegevoegd.
- Audioclips worden naar de gedeelde transcriptiepijplijn gerouteerd; model-/hulpmiddelpaden met beeldondersteuning kunnen afbeeldingsbijlagen uit dezelfde context gebruiken.
- Andere bestanden blijven beschikbaar als bestandsmetadata of mediaverwijzingen voor hulpmiddelen die ze kunnen verwerken.
Overerving van bijlagen uit het hoofdbericht van een thread
Wanneer een bericht binnenkomt in een thread (met een bovenliggendthread_ts):
- Als het antwoord zelf geen directe media bevat en het opgenomen hoofdbericht bestanden bevat, kan Slack de hoofdbestanden laden als context van de threadstarter.
- Hoofdbestanden worden alleen geladen bij het initialiseren van een nieuwe of opnieuw ingestelde threadsessie. Latere antwoorden met alleen tekst hergebruiken de bestaande sessiecontext en koppelen hoofdbestanden niet opnieuw als nieuwe media.
- Directe antwoordbijlagen hebben voorrang op bijlagen van het hoofdbericht.
- Een hoofdbericht dat alleen bestanden en geen tekst bevat, wordt weergegeven met een bijlageplaceholder, zodat de terugvaloptie de bestanden toch kan opnemen.
Verwerking van meerdere bijlagen
Wanneer één Slack-bericht meerdere bestandsbijlagen bevat:- Elke bijlage wordt afzonderlijk via de mediapijplijn verwerkt.
- Verwijzingen naar gedownloade media worden samengevoegd in de berichtcontext.
- De verwerkingsvolgorde volgt de bestandsvolgorde van Slack in de gebeurtenispayload.
- Een mislukte download van één bijlage blokkeert de andere niet.
Limieten voor grootte, downloaden en modellen
- Groottelimiet: standaard 20 MB per bestand. Configureerbaar via
channels.slack.mediaMaxMb. - Limiet voor audiotranscriptie: de
maxBytesvan de geselecteerde vermeldingtools.media.models[]met audio-ondersteuning is ook van toepassing wanneer het gedownloade bestand naar een transcriptieprovider of CLI wordt verzonden. - Downloadfouten: bestanden die Slack niet kan leveren, verlopen URL’s, ontoegankelijke bestanden, te grote bestanden en HTML-antwoorden voor Slack-authenticatie/-aanmelding worden overgeslagen in plaats van als niet-ondersteunde indelingen te worden gemeld.
- Beeldmodel: voor beeldanalyse wordt het actieve antwoordmodel gebruikt wanneer dit beeld ondersteunt, of het afbeeldingsmodel dat is geconfigureerd bij
agents.defaults.imageModel.
Bekende beperkingen
Gerelateerde documentatie
Gerelateerd
Koppelen
Koppel een Slack-gebruiker aan de Gateway.
Groepen
Gedrag van kanaal- en groeps-DM’s.
Kanaalroutering
Routeer inkomende berichten naar agents.
Beveiliging
Dreigingsmodel en beveiliging.
Configuratie
Configuratie-indeling en prioriteitsvolgorde.
Slash-opdrachten
Opdrachtencatalogus en gedrag.