Per il modello dei gruppi multicanale (Discord, iMessage, Matrix, Microsoft Teams, Signal, Slack, Telegram, WhatsApp, Zalo), vedi Gruppi. Questa pagina descrive il comportamento specifico di WhatsApp in aggiunta a quel modello: attivazione, allowlist dei gruppi, chiavi di sessione per gruppo e iniezione del contesto dei messaggi in sospeso. Obiettivo: consentire a OpenClaw di restare nei gruppi WhatsApp, attivarsi solo quando viene chiamato in causa e mantenere quel thread separato dalla sessione DM personale.Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
agents.list[].groupChat.mentionPatterns viene usato anche da Telegram, Discord, Slack e iMessage. Per configurazioni multi-agente, impostalo per ogni agente oppure usa messages.groupChat.mentionPatterns come fallback globale.Comportamento
- Modalità di attivazione:
mention(predefinita) oalways.mentionrichiede un richiamo esplicito (vere @-mention WhatsApp tramitementionedJids, pattern regex sicuri o il numero E.164 del bot in qualsiasi punto del testo).alwaysattiva l’agente a ogni messaggio, ma dovrebbe rispondere solo quando può aggiungere valore significativo; altrimenti restituisce il token silenzioso esattoNO_REPLY/no_reply. I valori predefiniti possono essere impostati nella configurazione (channels.whatsapp.groups) e sovrascritti per gruppo tramite/activation. Quandochannels.whatsapp.groupsè impostato, funge anche da allowlist dei gruppi (includi"*"per consentirli tutti). - Criterio dei gruppi:
channels.whatsapp.groupPolicycontrolla se i messaggi di gruppo vengono accettati (open|disabled|allowlist).allowlistusachannels.whatsapp.groupAllowFrom(fallback:channels.whatsapp.allowFromesplicito). Il valore predefinito èallowlist(bloccato finché non aggiungi mittenti). - Sessioni per gruppo: le chiavi di sessione hanno la forma
agent:<agentId>:whatsapp:group:<jid>, quindi comandi come/verbose on,/trace ono/think high(inviati come messaggi autonomi) sono limitati a quel gruppo; lo stato dei DM personali resta invariato. Gli Heartbeat vengono saltati per i thread di gruppo. - Iniezione del contesto: i messaggi di gruppo solo in sospeso (predefinito 50) che non hanno attivato un’esecuzione vengono prefissati sotto
[Chat messages since your last reply - for context], con la riga di attivazione sotto[Current message - respond to this]. I messaggi già presenti nella sessione non vengono reinseriti. - Esposizione del mittente: ogni batch di gruppo ora termina con
[from: Sender Name (+E164)], così Pi sa chi sta parlando. - Effimeri/visualizzabili una volta: li estraiamo prima di ricavare testo/mention, quindi i richiami al loro interno attivano comunque.
- Prompt di sistema del gruppo: al primo turno di una sessione di gruppo (e ogni volta che
/activationcambia la modalità) inseriamo nel prompt di sistema una breve descrizione comeYou are replying inside the WhatsApp group "<subject>". Group members: Alice (+44...), Bob (+43...), ... Activation: trigger-only ... Address the specific sender noted in the message context.Se i metadati non sono disponibili, diciamo comunque all’agente che si tratta di una chat di gruppo.
Esempio di configurazione (WhatsApp)
Aggiungi un bloccogroupChat a ~/.openclaw/openclaw.json in modo che i richiami tramite nome visualizzato funzionino anche quando WhatsApp rimuove la @ visiva dal corpo del testo:
- Le regex non distinguono maiuscole/minuscole e usano le stesse protezioni safe-regex delle altre superfici regex di configurazione; i pattern non validi e le ripetizioni annidate non sicure vengono ignorati.
- WhatsApp invia comunque mention canoniche tramite
mentionedJidsquando qualcuno tocca il contatto, quindi il fallback sul numero è raramente necessario, ma è un’utile rete di sicurezza.
Comando di attivazione (solo proprietario)
Usa il comando della chat di gruppo:/activation mention/activation always
channels.whatsapp.allowFrom, oppure il numero E.164 del bot quando non è impostato) può modificarlo. Invia /status come messaggio autonomo nel gruppo per vedere la modalità di attivazione corrente.
Come si usa
- Aggiungi il tuo account WhatsApp (quello che esegue OpenClaw) al gruppo.
- Scrivi
@openclaw …(o includi il numero). Solo i mittenti nella allowlist possono attivarlo, a meno che tu non impostigroupPolicy: "open". - Il prompt dell’agente includerà il contesto recente del gruppo più il marker finale
[from: …], così potrà rivolgersi alla persona corretta. - Le direttive a livello di sessione (
/verbose on,/trace on,/think high,/newo/reset,/compact) si applicano solo alla sessione di quel gruppo; inviale come messaggi autonomi perché vengano registrate. La tua sessione DM personale resta indipendente.
Test / verifica
- Smoke test manuale:
- Invia un richiamo
@openclawnel gruppo e conferma una risposta che faccia riferimento al nome del mittente. - Invia un secondo richiamo e verifica che il blocco della cronologia venga incluso e poi cancellato al turno successivo.
- Invia un richiamo
- Controlla i log del Gateway (esegui con
--verbose) per vedere vociinbound web messageche mostranofrom: <groupJid>e il suffisso[from: …].
Considerazioni note
- Gli Heartbeat vengono saltati intenzionalmente per i gruppi, per evitare broadcast rumorosi.
- La soppressione degli echo usa la stringa combinata del batch; se invii lo stesso testo due volte senza mention, solo il primo riceverà una risposta.
- Le voci dello store delle sessioni appariranno come
agent:<agentId>:whatsapp:group:<jid>nello store delle sessioni (~/.openclaw/agents/<agentId>/sessions/sessions.jsonper impostazione predefinita); una voce mancante significa semplicemente che il gruppo non ha ancora attivato un’esecuzione. - Gli indicatori di digitazione nei gruppi seguono
agents.defaults.typingMode. Quando le risposte visibili usano la modalità predefinita solo strumento messaggi, la digitazione inizia immediatamente per impostazione predefinita, così i membri del gruppo possono vedere che l’agente sta lavorando anche se non viene pubblicata alcuna risposta finale automatica. La configurazione esplicita della modalità di digitazione ha comunque la precedenza.