Groepen
OpenClaw behandelt groepschats consistent over verschillende platforms: WhatsApp, Telegram, Discord, Slack, Signal, iMessage, Microsoft Teams.Beginnerintro (2 minuten)
OpenClaw “leeft” op je eigen messaging-accounts. Er is geen aparte WhatsApp-botgebruiker. Als jij in een groep zit, kan OpenClaw die groep zien en daar reageren. Standaardgedrag:- Groepen zijn beperkt (
groupPolicy: "allowlist"). - Antwoorden vereisen een mention, tenzij je mention-gating expliciet uitschakelt.
TL;DRSnelle flow (wat gebeurt er met een groepsbericht):
- DM-toegang wordt geregeld door
*.allowFrom.- Groepstoegang wordt geregeld door
*.groupPolicy+ toegestane lijsten (*.groups,*.groupAllowFrom).- Antwoordtriggering wordt geregeld door mention-gating (
requireMention,/activation).
| Doel | Wat instellen |
|---|---|
| Alle groepen toestaan maar alleen reageren op @mentions | groups: { "*": { requireMention: true } } |
| Alle groepsreacties uitschakelen | groupPolicy: "disabled" |
| Alleen specifieke groepen | groups: { "<group-id>": { ... } } (geen sleutel "*") |
| Alleen jij kunt in groepen triggeren | groupPolicy: "allowlist", groupAllowFrom: ["+1555..."] |
Sessiesleutels
- Groepssessies gebruiken
agent:<agentId>:<channel>:group:<id>sessiesleutels (rooms/kanalen gebruikenagent:<agentId>:<channel>:channel:<id>). - Telegram-forumtopics voegen
:topic:<threadId>toe aan de groeps-id, zodat elk topic een eigen sessie heeft. - Directe chats gebruiken de hoofdsessie (of per afzender indien geconfigureerd).
- Heartbeat-signalen worden overgeslagen voor groepssessies.
Patroon: persoonlijke DM’s + publieke groepen (enkele agent)
Ja — dit werkt goed als je “persoonlijke” verkeer DM’s zijn en je “publieke” verkeer groepen. Waarom: in de modus met één agent komen DM’s doorgaans terecht in de hoofdsessiesleutel (agent:main:main), terwijl groepen altijd niet-hoofdsessiesleutels gebruiken (agent:main:<channel>:group:<id>). Als je sandboxing inschakelt met mode: "non-main", draaien die groepssessies in Docker terwijl je hoofd-DM-sessie op de host blijft.
Dit geeft je één agent-“brein” (gedeelde werkruimte + geheugen), maar twee uitvoeringshoudingen:
- DM’s: volledige tools (host)
- Groepen: sandbox + beperkte tools (Docker)
Als je echt gescheiden werkruimtes/persona’s nodig hebt (“persoonlijk” en “publiek” mogen nooit mengen), gebruik dan een tweede agent + bindings. Zie Multi-Agent Routing.Voorbeeld (DM’s op host, groepen gesandboxed + alleen messaging-tools):
workspaceAccess: "none" en mount alleen toegestane paden in de sandbox:
- Configuratiesleutels en standaardwaarden: Gateway-configuratie
- Debuggen waarom een tool is geblokkeerd: Sandbox vs Tool Policy vs Elevated
- Details over bind mounts: Sandboxing
Weergavelabels
- UI-labels gebruiken
displayNamewanneer beschikbaar, opgemaakt als<channel>:<token>. #roomis gereserveerd voor rooms/kanalen; groepschats gebruikeng-<slug>(kleine letters, spaties ->-, behoud#@+._-).
Groepsbeleid
Beheer hoe groeps-/roomberichten per kanaal worden afgehandeld:| Beleid | Gedrag |
|---|---|
"open" | Groepen omzeilen toegestane lijsten; mention-gating blijft van toepassing. |
"disabled" | Blokkeer alle groepsberichten volledig. |
"allowlist" | Sta alleen groepen/rooms toe die overeenkomen met de geconfigureerde toegestane lijst. |
groupPolicystaat los van mention-gating (dat @mentions vereist).- WhatsApp/Telegram/Signal/iMessage/Microsoft Teams: gebruik
groupAllowFrom(fallback: explicietallowFrom). - Discord: toegestane lijst gebruikt
channels.discord.guilds.<id>.channels. - Slack: toegestane lijst gebruikt
channels.slack.channels. - Matrix: toegestane lijst gebruikt
channels.matrix.groups(room-ID’s, aliassen of namen). Gebruikchannels.matrix.groupAllowFromom afzenders te beperken; per-roomusers-lijsten worden ook ondersteund. - Groeps-DM’s worden afzonderlijk beheerd (
channels.discord.dm.*,channels.slack.dm.*). - Telegram-toegestane lijst kan user-ID’s matchen (
"123456789","telegram:123456789","tg:123456789") of gebruikersnamen ("@alice"of"alice"); voorvoegsels zijn niet hoofdlettergevoelig. - Standaard is
groupPolicy: "allowlist"; als je groeps-allowlist leeg is, worden groepsberichten geblokkeerd.
groupPolicy(open/uitgeschakeld/allowlist)- groeps-allowlists (
*.groups,*.groupAllowFrom, kanaalspecifieke allowlist) - mention-gating (
requireMention,/activation)
Mention-gating (standaard)
Groepsberichten vereisen een mention, tenzij per groep overschreven. Standaarden leven per subsysteem onder*.groups."*".
Antwoorden op een botbericht tellen als een impliciete mention (wanneer het kanaal reply-metadata ondersteunt). Dit geldt voor Telegram, WhatsApp, Slack, Discord en Microsoft Teams.
mentionPatternszijn niet-hoofdlettergevoelige regexen.- Platforms die expliciete mentions bieden, blijven werken; patronen zijn een fallback.
- Per-agent override:
agents.list[].groupChat.mentionPatterns(handig wanneer meerdere agents een groep delen). - Mention-gating wordt alleen afgedwongen wanneer mention-detectie mogelijk is (native mentions of wanneer
mentionPatternsis geconfigureerd). - Discord-standaarden staan in
channels.discord.guilds."*"(per guild/kanaal te overschrijven). - Context van groepsgeschiedenis wordt uniform verpakt over kanalen en is alleen pending (berichten overgeslagen door mention-gating); gebruik
messages.groupChat.historyLimitvoor de globale standaard enchannels.<channel>.historyLimit(ofchannels.<channel>.accounts.*.historyLimit) voor overrides. Stel0in om uit te schakelen.
Groeps-/kanaaltoolbeperkingen (optioneel)
Sommige kanaalconfiguraties ondersteunen het beperken van welke tools beschikbaar zijn binnen een specifieke groep/room/kanaal.tools: tools toestaan/weigeren voor de hele groep.toolsBySender: per-afzender overrides binnen de groep (sleutels zijn afzender-ID’s/gebruiksnamen/e-mails/telefoonnummers, afhankelijk van het kanaal). Gebruik"*"als wildcard.
- groep/kanaal
toolsBySender-match - groep/kanaal
tools - standaard (
"*")toolsBySender-match - standaard (
"*")tools
- Groeps-/kanaaltoolbeperkingen worden toegepast bovenop het globale/agent toolbeleid (weigeren wint nog steeds).
- Sommige kanalen gebruiken een andere nesting voor rooms/kanalen (bijv. Discord
guilds.*.channels.*, Slackchannels.*, MS Teamsteams.*.channels.*).
Groeps-allowlists
Wanneerchannels.whatsapp.groups, channels.telegram.groups of channels.imessage.groups is geconfigureerd, fungeren de sleutels als groeps-allowlist. Gebruik "*" om alle groepen toe te staan terwijl je toch standaard mention-gedrag instelt.
Veelvoorkomende intents (kopiëren/plakken):
- Alle groepsreacties uitschakelen
- Alleen specifieke groepen toestaan (WhatsApp)
- Alle groepen toestaan maar mention vereisen (expliciet)
- Alleen de eigenaar kan in groepen triggeren (WhatsApp)
Activatie (alleen eigenaar)
Groepseigenaren kunnen per groep activatie toggelen:/activation mention/activation always
channels.whatsapp.allowFrom (of de eigen E.164 van de bot wanneer niet ingesteld). Stuur het commando als een losstaand bericht. Andere platforms negeren momenteel /activation.
Contextvelden
Inkomende payloads van groepen zetten:ChatType=groupGroupSubject(indien bekend)GroupMembers(indien bekend)WasMentioned(resultaat van mention-gating)- Telegram-forumtopics bevatten ook
MessageThreadIdenIsForum.
\n-reeksen te vermijden.
iMessage-specifiek
- Geef de voorkeur aan
chat_id:<id>bij routering of allowlisting. - Chats weergeven:
imsg chats --limit 20. - Groepsantwoorden gaan altijd terug naar dezelfde
chat_id.