Mga mensahe ng grupo (WhatsApp web channel)¶
Layunin: hayaan si Clawd na manatili sa mga WhatsApp group, magising lang kapag na-ping, at panatilihing hiwalay ang thread na iyon mula sa personal na DM session.
Draft streaming: opsyonal na channels.telegram.streamMode ay gumagamit ng sendMessageDraft sa mga private topic chat (Bot API 9.3+). Ito ay hiwalay sa channel block streaming.
Ano ang naipatupad (2025-12-03)¶
- Activation modes:
mention(default) oralways. Para sa mga multi-agent setup, itakda angagents.list[].groupChat.mentionPatternsbawat agent (o gamitin angmessages.groupChat.mentionPatternsbilang global fallback). Mga activation mode:mention(default) oalways. Angmentionay nangangailangan ng ping (tunay na WhatsApp @-mentions sa pamamagitan ngmentionedJids, mga regex pattern, o ang E.164 ng bot kahit saan sa teksto). Angalwaysay ginigising ang agent sa bawat mensahe ngunit dapat lamang itong sumagot kapag maaari itong magbigay ng makabuluhang halaga; kung hindi, ibinabalik nito ang silent token naNO_REPLY. - Maaaring itakda ang mga default sa config (
channels.whatsapp.groups) at i-override bawat group sa pamamagitan ng/activation.allowlistuseschannels.whatsapp.groupAllowFrom(fallback: explicitchannels.whatsapp.allowFrom). Patakaran sa grupo: Kinokontrol ngchannels.whatsapp.groupPolicykung tatanggapin ang mga mensahe ng grupo (open|disabled|allowlist). - Per-group sessions: session keys look like
agent:<agentId>:whatsapp:group:<jid>so commands such as/verbose onor/think high(sent as standalone messages) are scoped to that group; personal DM state is untouched. 2. Nilalaktawan ang mga heartbeat para sa mga group thread. - Context injection: pending-only na mga mensahe ng grupo (default 50) na hindi nag-trigger ng run ay inilalagay sa unahan sa ilalim ng
[Mga mensahe sa chat mula noong huli mong tugon - para sa konteksto], at ang linyang nag-trigger ay nasa ilalim ng[Kasalukuyang mensahe - tumugon dito]. Ang mga mensaheng nasa session na ay hindi na muling inilalagay. - Sender surfacing: ang bawat batch ng grupo ay nagtatapos na ngayon sa
[from: Sender Name (+E164)]para malaman ni Pi kung sino ang nagsasalita. - Ephemeral/view-once: binubuksan namin ang mga ito bago kunin ang teksto/mga mention, kaya ang mga ping sa loob ng mga ito ay nagti-trigger pa rin.
- Group system prompt: on the first turn of a group session (and whenever
/activationchanges the mode) we inject a short blurb into the system prompt likeYou are replying inside the WhatsApp group "<subject>". 6. Mga miyembro ng grupo: Alice (+44...), Bob (+43...), … Activation: trigger-only … Address the specific sender noted in the message context.If metadata isn’t available we still tell the agent it’s a group chat.
Halimbawa ng config (WhatsApp)¶
Magdagdag ng groupChat block sa ~/.openclaw/openclaw.json para gumana ang mga display-name ping kahit kapag tinatanggal ng WhatsApp ang visual na @ sa body ng teksto:
{
channels: {
whatsapp: {
groups: {
"*": { requireMention: true },
},
},
},
agents: {
list: [
{
id: "main",
groupChat: {
historyLimit: 50,
mentionPatterns: ["@?openclaw", "\\+?15555550123"],
},
},
],
},
}
Mga tala:
- Case-insensitive ang mga regex; sinasaklaw nila ang display-name ping tulad ng
@openclawat ang raw na numero na may o walang+/mga espasyo. - Nagpapadala pa rin ang WhatsApp ng canonical mentions sa pamamagitan ng
mentionedJidskapag may nag-tap sa contact, kaya bihirang kailanganin ang number fallback ngunit kapaki-pakinabang itong safety net.
Command para sa Pag-activate (owner-only)¶
Gamitin ang group chat command:
/activation mention/activation always
- Ang owner number lamang (mula sa
channels.whatsapp.allowFrom, o ang sariling E.164 ng bot kapag hindi nakatakda) ang maaaring magbago nito. Ipadala ang/statusbilang hiwalay na mensahe sa grupo upang makita ang kasalukuyang activation mode.
Paano gamitin¶
- Idagdag ang iyong WhatsApp account (ang nagpapatakbo ng OpenClaw) sa grupo.
-
- Sabihin ang
@openclaw …(o isama ang numero). Tanging mga sender na nasa allowlist ang puwedeng mag-trigger nito maliban kung itatakda mo anggroupPolicy: "open".
- Sabihin ang
- Isasama ng agent prompt ang kamakailang group context kasama ang trailing na
[from: …]marker para ma-address ang tamang tao. -
- Ang mga session-level directive (
/verbose on,/think high,/newo/reset,/compact) ay naaangkop lang sa session ng grupong iyon; ipadala ang mga ito bilang standalone na mensahe para marehistro. Nanatiling hiwalay at independent ang iyong personal na DM session.
- Ang mga session-level directive (
Pagsubok / beripikasyon¶
- Manwal na smoke:
- Magpadala ng
@openclawping sa grupo at kumpirmahin ang reply na tumutukoy sa pangalan ng sender. - Magpadala ng ikalawang ping at tiyaking kasama ang history block at saka ito nalilinis sa susunod na turn.
- Suriin ang gateway logs (patakbuhin gamit ang
--verbose) para makita ang mga entry nainbound web messagena nagpapakita ngfrom: <groupJid>at ang[from: …]suffix.
Mga kilalang konsiderasyon¶
- Sadyang nilalaktawan ang mga heartbeat para sa mga grupo upang maiwasan ang maingay na broadcast.
- Gumagamit ang echo suppression ng pinagsamang batch string; kung magpadala ka ng magkaparehong teksto nang dalawang beses nang walang mga mention, ang una lang ang makakakuha ng tugon.
- Lalabas ang mga entry ng session store bilang
agent:<agentId>:whatsapp:group:<jid>sa session store (~/.openclaw/agents/<agentId>/sessions/sessions.jsonbilang default); ang nawawalang entry ay nangangahulugang hindi pa nagti-trigger ng run ang grupo. - Ang mga typing indicator sa mga grupo ay sumusunod sa
agents.defaults.typingMode(default:messagekapag walang mention).