Status: downloadbare plugin (bottoken + WebSocket-gebeurtenissen). Kanalen, groepen en DM’s worden ondersteund. Mattermost is een zelf te hosten platform voor teamberichten; zie de officiële site op mattermost.com voor productdetails en downloads.Documentation Index
Fetch the complete documentation index at: https://docs2.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
Installeren
Installeer Mattermost voordat je het kanaal configureert:- npm registry
- Lokale checkout
Snelle installatie
Zorg dat de plugin beschikbaar is
Huidige verpakte OpenClaw-releases bundelen deze al. Oudere/aangepaste installaties kunnen deze handmatig toevoegen met de opdrachten hierboven.
Native slashcommando’s
Native slashcommando’s zijn opt-in. Wanneer ze zijn ingeschakeld, registreert OpenClawoc_*-slashcommando’s via de Mattermost API en ontvangt het callback-POST’s op de Gateway-HTTP-server.
Gedragsnotities
Gedragsnotities
native: "auto"is standaard uitgeschakeld voor Mattermost. Stelnative: truein om dit in te schakelen.- Als
callbackUrlis weggelaten, leidt OpenClaw er een af uit Gateway-host/poort +callbackPath. - Voor configuraties met meerdere accounts kan
commandsop het hoogste niveau worden ingesteld of onderchannels.mattermost.accounts.<id>.commands(accountwaarden overschrijven velden op het hoogste niveau). - Commandocallbacks worden gevalideerd met de tokens per commando die Mattermost retourneert wanneer OpenClaw
oc_*-commando’s registreert. - OpenClaw vernieuwt de huidige Mattermost-commandoregistratie voordat elke callback wordt geaccepteerd, zodat verouderde tokens van verwijderde of opnieuw gegenereerde slashcommando’s niet meer worden geaccepteerd zonder een herstart van de Gateway.
- Callbackvalidatie faalt gesloten als de Mattermost API niet kan bevestigen dat het commando nog actueel is; mislukte validaties worden kort gecachet, gelijktijdige lookups worden samengevoegd, en nieuwe lookup-starts worden per commando beperkt in snelheid om replay-druk te begrenzen.
- Slashcallbacks falen gesloten wanneer registratie is mislukt, het opstarten gedeeltelijk was, of de callbacktoken niet overeenkomt met de geregistreerde token van het opgeloste commando (een token die geldig is voor één commando kan geen upstreamvalidatie bereiken voor een ander commando).
Bereikbaarheidsvereiste
Bereikbaarheidsvereiste
Het callback-eindpunt moet bereikbaar zijn vanaf de Mattermost-server.
- Stel
callbackUrlniet in oplocalhost, tenzij Mattermost op dezelfde host/netwerknaamruimte draait als OpenClaw. - Stel
callbackUrlniet in op je Mattermost-basis-URL, tenzij die URL/api/channels/mattermost/commandvia een reverse proxy naar OpenClaw doorstuurt. - Een snelle controle is
curl https://<gateway-host>/api/channels/mattermost/command; een GET moet405 Method Not Allowedvan OpenClaw retourneren, niet404.
Mattermost-egress-allowlist
Mattermost-egress-allowlist
Als je callback naar private/tailnet/interne adressen verwijst, stel dan Mattermost
ServiceSettings.AllowedUntrustedInternalConnections in om de callbackhost/het callbackdomein op te nemen.Gebruik host-/domeinitems, geen volledige URL’s.- Goed:
gateway.tailnet-name.ts.net - Fout:
https://gateway.tailnet-name.ts.net
Omgevingsvariabelen (standaardaccount)
Stel deze in op de Gateway-host als je liever omgevingsvariabelen gebruikt:MATTERMOST_BOT_TOKEN=...MATTERMOST_URL=https://chat.example.com
Omgevingsvariabelen gelden alleen voor het standaardaccount (
default). Andere accounts moeten configuratiewaarden gebruiken.MATTERMOST_URL kan niet worden ingesteld vanuit een werkruimte-.env; zie Werkruimte-.env-bestanden.Chatmodi
Mattermost reageert automatisch op DM’s. Kanaalgedrag wordt bepaald doorchatmode:
- oncall (standaard)
- onmessage
- onchar
Reageer alleen wanneer er in kanalen een @vermelding is.
oncharreageert nog steeds op expliciete @vermeldingen.channels.mattermost.requireMentionwordt gerespecteerd voor legacyconfiguraties, maarchatmodeheeft de voorkeur.
Threads en sessies
Gebruikchannels.mattermost.replyToMode om te bepalen of kanaal- en groepsantwoorden in het hoofdkanaal blijven of een thread starten onder het activerende bericht.
off(standaard): antwoord alleen in een thread wanneer het inkomende bericht daar al in staat.first: start voor kanaal-/groepsberichten op het hoogste niveau een thread onder dat bericht en routeer het gesprek naar een threadgebonden sessie.all: hetzelfde gedrag alsfirstvoor Mattermost vandaag.- Direct messages negeren deze instelling en blijven zonder thread.
- Threadgebonden sessies gebruiken de id van het activerende bericht als threadroot.
firstenallzijn momenteel equivalent, omdat zodra Mattermost een threadroot heeft, vervolgdelen en media in dezelfde thread doorgaan.
Toegangscontrole (DM’s)
- Standaard:
channels.mattermost.dmPolicy = "pairing"(onbekende afzenders krijgen een koppelingscode). - Goedkeuren via:
openclaw pairing list mattermostopenclaw pairing approve mattermost <CODE>
- Openbare DM’s:
channels.mattermost.dmPolicy="open"pluschannels.mattermost.allowFrom=["*"]. channels.mattermost.allowFromaccepteertaccessGroup:<name>-items. Zie Toegangsgroepen.
Kanalen (groepen)
- Standaard:
channels.mattermost.groupPolicy = "allowlist"(vermelding vereist). - Sta afzenders toe met
channels.mattermost.groupAllowFrom(gebruikers-ID’s aanbevolen). channels.mattermost.groupAllowFromaccepteertaccessGroup:<name>-items. Zie Toegangsgroepen.- Vermeldingsoverrides per kanaal staan onder
channels.mattermost.groups.<channelId>.requireMentionofchannels.mattermost.groups["*"].requireMentionvoor een standaardwaarde. @username-matching is veranderlijk en alleen ingeschakeld wanneerchannels.mattermost.dangerouslyAllowNameMatching: true.- Open kanalen:
channels.mattermost.groupPolicy="open"(vermelding vereist). - Runtime-notitie: als
channels.mattermostvolledig ontbreekt, valt runtime terug opgroupPolicy="allowlist"voor groepscontroles (zelfs alschannels.defaults.groupPolicyis ingesteld).
Doelen voor uitgaande levering
Gebruik deze doelformaten metopenclaw message send of Cron/Webhooks:
channel:<id>voor een kanaaluser:<id>voor een DM@usernamevoor een DM (opgelost via de Mattermost API)
DM-kanaal opnieuw proberen
Wanneer OpenClaw naar een Mattermost-DM-doel verzendt en eerst het directe kanaal moet oplossen, probeert het tijdelijke fouten bij het maken van het directe kanaal standaard opnieuw. Gebruikchannels.mattermost.dmChannelRetry om dat gedrag globaal af te stemmen voor de Mattermost-plugin, of channels.mattermost.accounts.<id>.dmChannelRetry voor één account.
- Dit geldt alleen voor het maken van DM-kanalen (
/api/v4/channels/direct), niet voor elke Mattermost API-aanroep. - Nieuwe pogingen gelden voor tijdelijke fouten zoals snelheidslimieten, 5xx-responsen en netwerk- of time-outfouten.
- 4xx-clientfouten anders dan
429worden als permanent behandeld en niet opnieuw geprobeerd.
Previewstreaming
Mattermost streamt denken, toolactiviteit en gedeeltelijke antwoordtekst naar één conceptpreviewbericht dat ter plekke definitief wordt wanneer het definitieve antwoord veilig kan worden verzonden. De preview wordt bijgewerkt op dezelfde bericht-ID in plaats van het kanaal te overspoelen met berichten per deel. Media-/foutfinales annuleren openstaande previewbewerkingen en gebruiken normale levering in plaats van een wegwerppreviewbericht te flushen. Inschakelen viachannels.mattermost.streaming:
Streamingmodi
Streamingmodi
partialis de gebruikelijke keuze: één previewbericht dat wordt bewerkt terwijl het antwoord groeit, en daarna definitief wordt gemaakt met het volledige antwoord.blockgebruikt conceptdelen in append-stijl binnen het previewbericht.progresstoont een statuspreview tijdens het genereren en plaatst het definitieve antwoord pas bij voltooiing.offschakelt previewstreaming uit.
Gedragsnotities voor streaming
Gedragsnotities voor streaming
- Als de stream niet ter plekke definitief kan worden gemaakt (bijvoorbeeld omdat het bericht halverwege de stream is verwijderd), valt OpenClaw terug op het verzenden van een nieuw definitief bericht, zodat het antwoord nooit verloren gaat.
- Payloads met alleen redenering worden onderdrukt in kanaalberichten, inclusief tekst die binnenkomt als een
> Reasoning:-blockquote. Stel/reasoning onin om denken op andere oppervlakken te zien; het definitieve Mattermost-bericht behoudt alleen het antwoord. - Zie Streaming voor de kanaaltoewijzingsmatrix.
Reacties (berichttool)
- Gebruik
message action=reactmetchannel=mattermost. messageIdis de Mattermost-bericht-ID.emojiaccepteert namen zoalsthumbsupof:+1:(dubbelepunten zijn optioneel).- Stel
remove=true(booleaans) in om een reactie te verwijderen. - Gebeurtenissen voor toevoegen/verwijderen van reacties worden als systeemgebeurtenissen doorgestuurd naar de gerouteerde agentsessie.
channels.mattermost.actions.reactions: schakel reactieacties in/uit (standaard true).- Override per account:
channels.mattermost.accounts.<id>.actions.reactions.
Interactieve knoppen (berichttool)
Verzend berichten met klikbare knoppen. Wanneer een gebruiker op een knop klikt, ontvangt de agent de selectie en kan deze reageren. Schakel knoppen in doorinlineButtons toe te voegen aan de kanaalcapabilities:
message action=send met een parameter buttons. Knoppen zijn een 2D-array (rijen met knoppen):
Weergavelabel.
Waarde die bij klikken wordt teruggestuurd (gebruikt als actie-ID).
Knopstijl.
Buttons replaced with confirmation
Alle knoppen worden vervangen door een bevestigingsregel (bijvoorbeeld ”✓ Yes geselecteerd door @user”).
Implementation notes
Implementation notes
- Knop-callbacks gebruiken HMAC-SHA256-verificatie (automatisch, geen configuratie nodig).
- Mattermost verwijdert callbackgegevens uit zijn API-antwoorden (beveiligingsfunctie), dus alle knoppen worden bij klikken verwijderd - gedeeltelijke verwijdering is niet mogelijk.
- Actie-ID’s met koppeltekens of underscores worden automatisch gesaneerd (routeringsbeperking van Mattermost).
Config and reachability
Config and reachability
channels.mattermost.capabilities: array van capability-strings. Voeg"inlineButtons"toe om de beschrijving van de knoppentool in de systeemprompt van de agent in te schakelen.channels.mattermost.interactions.callbackBaseUrl: optionele externe basis-URL voor knop-callbacks (bijvoorbeeldhttps://gateway.example.com). Gebruik dit wanneer Mattermost de gateway niet rechtstreeks kan bereiken op de bindhost ervan.- In opstellingen met meerdere accounts kun je hetzelfde veld ook instellen onder
channels.mattermost.accounts.<id>.interactions.callbackBaseUrl. - Als
interactions.callbackBaseUrlwordt weggelaten, leidt OpenClaw de callback-URL af uitgateway.customBindHost+gateway.port, en valt daarna terug ophttp://localhost:<port>. - Bereikbaarheidsregel: de URL voor knop-callbacks moet bereikbaar zijn vanaf de Mattermost-server.
localhostwerkt alleen wanneer Mattermost en OpenClaw op dezelfde host/netwerknamespace draaien. - Als je callbackdoel privé/tailnet/intern is, voeg dan de host/het domein toe aan Mattermost
ServiceSettings.AllowedUntrustedInternalConnections.
Rechtstreekse API-integratie (externe scripts)
Externe scripts en webhooks kunnen knoppen rechtstreeks via de Mattermost REST API plaatsen in plaats van via demessage-tool van de agent. Gebruik waar mogelijk buildButtonAttachments() uit de Plugin; volg deze regels als je ruwe JSON plaatst:
Payloadstructuur:
Derive the secret from the bot token
HMAC-SHA256(key="openclaw-mattermost-interactions", data=botToken)Serialize with sorted keys
Serialiseer met gesorteerde sleutels en zonder spaties (de Gateway gebruikt
JSON.stringify met gesorteerde sleutels, wat compacte uitvoer oplevert).Common HMAC pitfalls
Common HMAC pitfalls
- Python’s
json.dumpsvoegt standaard spaties toe ({"key": "val"}). Gebruikseparators=(",", ":")om overeen te komen met de compacte uitvoer van JavaScript ({"key":"val"}). - Onderteken altijd alle contextvelden (minus
_token). De Gateway verwijdert_tokenen ondertekent daarna alles wat overblijft. Het ondertekenen van een subset veroorzaakt een stilzwijgende verificatiefout. - Gebruik
sort_keys=True- de Gateway sorteert sleutels vóór het ondertekenen, en Mattermost kan contextvelden opnieuw ordenen bij het opslaan van de payload. - Leid het geheim af uit het bottoken (deterministisch), niet uit willekeurige bytes. Het geheim moet hetzelfde zijn in het proces dat knoppen maakt en de Gateway die verifieert.
Directory-adapter
De Mattermost-Plugin bevat een directory-adapter die kanaal- en gebruikersnamen via de Mattermost API oplost. Dit maakt#channel-name- en @username-doelen mogelijk in openclaw message send en cron-/Webhook-leveringen.
Er is geen configuratie nodig - de adapter gebruikt het bottoken uit de accountconfiguratie.
Meerdere accounts
Mattermost ondersteunt meerdere accounts onderchannels.mattermost.accounts:
Probleemoplossing
No replies in channels
No replies in channels
Zorg dat de bot in het kanaal zit en vermeld deze (oncall), gebruik een triggerprefix (onchar), of stel
chatmode: "onmessage" in.Auth or multi-account errors
Auth or multi-account errors
- Controleer het bottoken, de basis-URL en of het account is ingeschakeld.
- Problemen met meerdere accounts: env-vars zijn alleen van toepassing op het
default-account.
Native slash commands fail
Native slash commands fail
Unauthorized: invalid command token.: OpenClaw heeft het callbacktoken niet geaccepteerd. Typische oorzaken:- registratie van slash commands is mislukt of slechts gedeeltelijk voltooid bij het opstarten
- de callback raakt de verkeerde gateway/het verkeerde account
- Mattermost heeft nog oude commands die naar een eerder callbackdoel wijzen
- de Gateway is opnieuw gestart zonder slash commands opnieuw te activeren
- Als native slash commands niet meer werken, controleer dan de logs op
mattermost: failed to register slash commandsofmattermost: native slash commands enabled but no commands could be registered. - Als
callbackUrlwordt weggelaten en logs waarschuwen dat de callback is opgelost naarhttp://127.0.0.1:18789/..., is die URL waarschijnlijk alleen bereikbaar wanneer Mattermost op dezelfde host/netwerknamespace draait als OpenClaw. Stel in plaats daarvan een expliciete extern bereikbarecommands.callbackUrlin.
Buttons issues
Buttons issues
Gerelateerd
- Kanaalroutering - sessieroutering voor berichten
- Kanalenoverzicht - alle ondersteunde kanalen
- Groepen - gedrag van groepschats en vermeldingsgate
- Koppelen - DM-authenticatie en koppelingsflow
- Beveiliging - toegangsmodel en hardening