Grup mesajları (WhatsApp web kanalı)
Amaç: Clawd’un WhatsApp gruplarında bulunmasını, yalnızca etiketlendiğinde uyanmasını ve bu iş parçacığını kişisel DM oturumundan ayrı tutmasını sağlamak. Not:agents.list[].groupChat.mentionPatterns artık Telegram/Discord/Slack/iMessage tarafından da kullanılıyor; bu belge WhatsApp’a özgü davranışa odaklanır. Çoklu ajan kurulumlarında, agents.list[].groupChat.mentionPatterns değerini her ajan için ayarlayın (veya genel geri dönüş olarak messages.groupChat.mentionPatterns kullanın).
Mevcut uygulama (2025-12-03)
- Etkinleştirme modları:
mention(varsayılan) veyaalways.mention, bir etiketleme gerektirir (gerçek WhatsApp @-etiketlemelerimentionedJidsüzerinden, güvenli regex kalıpları veya metnin herhangi bir yerindeki botun E.164 numarası).always, ajanı her mesajda uyandırır ancak yalnızca anlamlı bir katkı sunabildiğinde yanıt vermelidir; aksi halde tam olarak sessiz belirteçNO_REPLY/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 işlev görür (tümüne izin vermek için"*"ekleyin). - Grup politikası:
channels.whatsapp.groupPolicy, grup mesajlarının kabul edilip edilmeyeceğini kontrol eder (open|disabled|allowlist).allowlist,channels.whatsapp.groupAllowFromkullanır (geri dönüş: açıkchannels.whatsapp.allowFrom). Varsayılanallowlistdeğeridir (gönderenleri ekleyene kadar engellenir). - Grup başına oturumlar: oturum anahtarları
agent:<agentId>:whatsapp:group:<jid>biçimindedir; bu nedenle/verbose on,/trace onveya/think highgibi komutlar (bağımsız mesajlar olarak gönderildiğinde) o grupla sınırlıdır; kişisel DM durumu etkilenmez. Grup iş parçacıkları için Heartbeat atlanır. - Bağlam ekleme: çalıştırmayı tetiklememiş yalnızca bekleyen grup mesajları (varsayılan 50),
[Chat messages since your last reply - for context]altında öneklenir; tetikleyen satır ise[Current message - respond to this]altında yer alır. Oturumda zaten bulunan mesajlar yeniden eklenmez. - Gönderenin gösterilmesi: artık her grup kümesinin sonunda
[from: Sender Name (+E164)]bulunur, böylece Pi kimin konuştuğunu bilir. - Geçici/view-once: metni/etiketlemeleri çıkarmadan önce bunları açıyoruz; böylece içlerindeki etiketlemeler yine de tetiklenir.
- Grup sistem istemi: bir grup oturumunun ilk turunda (ve
/activationmodu her değiştiğinde), sistem istemine şu gibi kısa bir açıklama ekliyoruz:You 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.Meta veriler mevcut değilse bile yine de ajana bunun bir grup sohbeti olduğunu söylüyoruz.
Yapılandırma örneği (WhatsApp)
WhatsApp metin gövdesindeki görsel@ işaretini kaldırsa bile görünen adla etiketlemelerin çalışması için ~/.openclaw/openclaw.json dosyasına bir groupChat bloğu ekleyin:
- Regex’ler büyük/küçük harfe duyarsızdır ve diğer yapılandırma regex yüzeyleriyle aynı güvenli regex korumalarını kullanır; geçersiz kalıplar ve güvenli olmayan iç içe tekrarlar yok sayılır.
- Birisi kişiye dokunduğunda WhatsApp yine de
mentionedJidsüzerinden kanonik etiketlemeleri gönderir; bu yüzden 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 içinden veya ayarlanmamışsa botun kendi E.164 numarası) değiştirebilir. Geçerli etkinleştirme modunu görmek için grupta bağımsız bir mesaj olarak /status gönderin.
Nasıl kullanılır
- WhatsApp hesabınızı (OpenClaw’u çalıştıran hesap) gruba ekleyin.
@openclaw …deyin (veya numarayı ekleyin).groupPolicy: "open"ayarlamadığınız sürece yalnızca izin verilen gönderenler bunu tetikleyebilir.- Ajan istemi, doğru kişiye hitap edebilmesi için son grup bağlamını ve sondaki
[from: …]işaretleyicisini içerecektir. - Oturum düzeyindeki yönergeler (
/verbose on,/trace on,/think high,/newveya/reset,/compact) yalnızca o grubun oturumuna uygulanır; kaydedilmeleri için bunları bağımsız mesajlar olarak gönderin. Kişisel DM oturumunuz bağımsız kalır.
Test / doğrulama
- Manuel smoke testi:
- Grupta bir
@openclawetiketi gönderin ve gönderen adına referans veren bir yanıtı doğrulayın. - İkinci bir etiket gönderin ve geçmiş bloğunun dahil edildiğini, ardından bir sonraki turda temizlendiğini doğrulayın.
- Grupta bir
from: <groupJid>ve[from: …]son ekini göstereninbound web messagegirdilerini görmek için gateway günlüklerini kontrol edin (--verboseile çalıştırın).
Bilinen noktalar
- Gürültülü yayınları önlemek için gruplarda Heartbeat kasıtlı olarak atlanır.
- Yankı bastırma, birleştirilmiş küme dizesini kullanır; etiketleme olmadan aynı metni iki kez gönderirseniz yalnızca ilkine yanıt verilir.
- Oturum deposu girdileri, oturum deposunda (varsayılan olarak
~/.openclaw/agents/<agentId>/sessions/sessions.json)agent:<agentId>:whatsapp:group:<jid>olarak görünür; eksik bir girdi yalnızca grubun henüz bir çalıştırmayı tetiklemediği anlamına gelir. - Gruplardaki yazıyor göstergeleri
agents.defaults.typingModedeğerini izler (varsayılan: etiketlenmediğindemessage).