Grup mesajları (WhatsApp web kanalı)
Amaç: Clawd’un WhatsApp gruplarında bulunmasını, yalnızca pinglendiğinde uyanmasını ve bu başlığı kişisel DM oturumundan ayrı tutmayı sağlamak. Not:agents.list[].groupChat.mentionPatterns artık Telegram/Discord/Slack/iMessage tarafından da kullanılıyor; bu doküman WhatsApp’e özgü davranışlara odaklanır. Çoklu ajan kurulumları için, ajan başına agents.list[].groupChat.mentionPatterns ayarlayın (veya genel bir geri dönüş olarak messages.groupChat.mentionPatterns kullanın).
Neler uygulandı (2025-12-03)
- Etkinleştirme modları:
mention(varsayılan) veyaalways.mentionbir ping gerektirir (mentionedJidsüzerinden gerçek WhatsApp @-mention’ları, regex desenleri veya botun E.164 numarasının metin içinde herhangi bir yerde geçmesi).alwaysajanı her mesajda uyandırır ancak yalnızca anlamlı değer katabildiğinde yanıt vermelidir; aksi halde sessiz belirteçNO_REPLYdöndürür. Varsayılanlar yapılandırmada (channels.whatsapp.groups) ayarlanabilir ve grup bazında/activationile geçersiz kılınabilir.channels.whatsapp.groupsayarlandığında, bir grup izin listesi olarak da davranır (tümüne izin vermek için"*"ekleyin). - Grup politikası:
channels.whatsapp.groupPolicy, grup mesajlarının kabul edilip edilmeyeceğini (open|disabled|allowlist) denetler.allowlist,channels.whatsapp.groupAllowFrom’yi kullanır (geri dönüş: açıkchannels.whatsapp.allowFrom). Varsayılanallowlist’dur (gönderenler eklenene kadar engelli). - Grup başına oturumlar: oturum anahtarları
agent:<agentId>:whatsapp:group:<jid>gibi görünür; böylece/verbose onveya/think highgibi komutlar (tek başına mesaj olarak gönderildiğinde) o gruba kapsamlanır; kişisel DM durumu etkilenmez. Grup başlıkları için heartbeat’ler atlanır. - Bağlam enjeksiyonu: çalıştırmayı tetiklemeyen yalnızca bekleyen grup mesajları (varsayılan 50),
[Chat messages since your last reply - for context]altında öneklenir; tetikleyici satır[Current message - respond to this]altında yer alır. Oturumda zaten bulunan mesajlar yeniden enjekte edilmez. - Gönderenin görünür kılınması: her grup yığını artık
[from: Sender Name (+E164)]ile biter; böylece Pi kimin konuştuğunu bilir. - Geçici/tek-görünüm: metni/mention’ları çıkarmadan önce bunları açarız; böylece içlerindeki ping’ler de tetikler.
- Grup sistem istemi: bir grup oturumunun ilk turunda (ve
/activationmodu değiştirdiğinde) sistem istemineYou 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.gibi kısa bir açıklama enjekte ederiz. Meta veriler yoksa bile ajana bunun bir grup sohbeti olduğunu söyleriz.
Yapılandırma örneği (WhatsApp)
WhatsApp metin gövdesinde görsel@’yi kaldırsa bile görünen ad ping’lerinin çalışması için ~/.openclaw/openclaw.json’a bir groupChat bloğu ekleyin:
- Regex’ler büyük/küçük harfe duyarsızdır;
@openclawgibi bir görünen ad ping’ini ve ham numarayı+/boşluklarla veya bunlar olmadan kapsar. - Birisi kişiye dokunduğunda WhatsApp hâlâ
mentionedJidsüzerinden kanonik mention’lar gönderir; bu nedenle numara geri dönüşü nadiren gerekir ancak yararlı bir güvenlik ağıdır.
Etkinleştirme komutu (yalnızca sahip)
Grup sohbeti komutunu kullanın:/activation mention/activation always
channels.whatsapp.allowFrom’dan; ayarlı değilse botun kendi E.164’ü) değiştirebilir. Geçerli etkinleştirme modunu görmek için grupta tek başına mesaj olarak /status gönderin.
Nasıl kullanılır
- WhatsApp hesabınızı (OpenClaw çalıştıran) gruba ekleyin.
@openclaw …deyin (veya numarayı ekleyin).groupPolicy: "open"ayarlamadıkça yalnızca izin listesinde olan gönderenler tetikleyebilir.- Ajan istemi, son grup bağlamını ve doğru kişiye hitap edebilmesi için sondaki
[from: …]işaretini içerir. - Oturum düzeyi yönergeler (
/verbose on,/think high,/newveya/reset,/compact) yalnızca o grubun oturumuna uygulanır; kaydolmaları için tek başına mesaj olarak gönderin. Kişisel DM oturumunuz bağımsız kalır.
Test / doğrulama
- Manual smoke:
- Grupta bir
@openclawping’i gönderin ve gönderen adını referans alan bir yanıtı doğrulayın. - İkinci bir ping gönderin ve geçmiş bloğunun dahil edildiğini, ardından bir sonraki turda temizlendiğini doğrulayın.
- Grupta bir
- Gateway günlüklerini (
--verboseile çalıştırın) kontrol ederekfrom: <groupJid>’u ve[from: …]son ekini göstereninbound web messagegirdilerini görün.
Bilinen hususlar
- Gürültülü yayınları önlemek için gruplarda heartbeat’ler bilinçli olarak atlanır.
- Yankı bastırma, birleştirilmiş yığın dizesini kullanır; mention olmadan aynı metni iki kez gönderirseniz yalnızca ilki yanıt alır.
- Oturum deposu girdileri, oturum deposunda (
~/.openclaw/agents/<agentId>/sessions/sessions.jsonvarsayılan)agent:<agentId>:whatsapp:group:<jid>olarak görünür; eksik bir giriş, grubun henüz bir çalıştırmayı tetiklemediği anlamına gelir. - Gruplardaki yazma göstergeleri
agents.defaults.typingMode’ü izler (varsayılan: mention yokkenmessage).