Configuration
WhatsApp grup mesajları
Kanallar arası gruplar modeli (Discord, iMessage, Matrix, Microsoft Teams, Signal, Slack, Telegram, WhatsApp, Zalo) için Gruplar bölümüne bakın. Bu sayfa, bu modelin üzerindeki WhatsApp’a özgü davranışı kapsar: etkinleştirme, grup izin listeleri, grup başına oturum anahtarları ve bekleyen ileti bağlamı enjeksiyonu.
Hedef: OpenClaw’ın WhatsApp gruplarında bulunmasını, yalnızca ping aldığında uyanmasını ve bu ileti dizisini kişisel DM oturumundan ayrı tutmasını sağlamak.
Davranış
- Etkinleştirme modları:
mention(varsayılan) veyaalways.mentionbir ping gerektirir (mentionedJidsüzerinden gerçek WhatsApp @-bahsetmeleri, güvenli regex desenleri veya botun E.164 numarasının metnin herhangi bir yerinde geçmesi).alwaysajanı her iletide uyandırır, ancak ajan yalnızca anlamlı değer katabiliyorsa yanıt vermelidir; aksi halde tam sessiz token olanNO_REPLY/no_replydöndürür. Varsayılanlar yapılandırmada (channels.whatsapp.groups) ayarlanabilir ve/activationile grup bazında geçersiz kılınabilir.channels.whatsapp.groupsayarlandığında, aynı zamanda grup izin listesi işlevi görür (tümüne izin vermek için"*"ekleyin). - Grup politikası:
channels.whatsapp.groupPolicy, grup iletilerinin kabul edilip edilmeyeceğini denetler (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; böylece/verbose on,/trace onveya/think highgibi komutlar (bağımsız iletiler olarak gönderildiklerinde) o gruba kapsamlanır; kişisel DM durumu değişmeden kalır. Grup ileti dizileri için Heartbeat atlanır. - Bağlam enjeksiyonu: çalıştırmayı tetiklemeyen yalnızca bekleyen grup iletileri (varsayılan 50),
[Chat messages since your last reply - for context]altında öneklenir; tetikleyen satır[Current message - respond to this]altında yer alır. Zaten oturumda bulunan iletiler yeniden enjekte edilmez. - Göndereni görünür kılma: Pi kimin konuştuğunu bilsin diye her grup toplu iletisi artık
[from: Sender Name (+E164)]ile biter. - Geçici/tek görüntülemelik: metni/bahsetmeleri çıkarmadan önce bunları açarız; böylece içlerindeki pingler yine tetikler.
- Grup sistem istemi: bir grup oturumunun ilk turunda (ve
/activationmodu her 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 veri yoksa yine de ajana bunun bir grup sohbeti olduğunu söyleriz.
Yapılandırma örneği (WhatsApp)
WhatsApp metin gövdesindeki görsel @ işaretini kaldırsa bile görünen ad pinglerinin çalışması için ~/.openclaw/openclaw.json dosyasına bir groupChat bloğu ekleyin:
{
channels: {
whatsapp: {
groups: {
"*": { requireMention: true },
},
},
},
agents: {
list: [
{
id: "main",
groupChat: {
historyLimit: 50,
mentionPatterns: ["@?openclaw", "\\+?15555550123"],
},
},
],
},
}
Notlar:
- 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 desenler ve güvenli olmayan iç içe tekrarlar yok sayılır.
- Birisi kişiye dokunduğunda WhatsApp hâlâ
mentionedJidsüzerinden kanonik bahsetmeler gönderir; bu nedenle numara geri dönüşüne nadiren ihtiyaç duyulur, ancak yararlı bir güvenlik ağıdır.
Etkinleştirme komutu (yalnızca sahip)
Grup sohbeti komutunu kullanın:
/activation mention/activation always
Bunu yalnızca sahip numarası (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 ileti olarak /status gönderin.
Nasıl kullanılır
- WhatsApp hesabınızı (OpenClaw çalıştıran hesap) gruba ekleyin.
@openclaw …deyin (veya numarayı ekleyin).groupPolicy: "open"ayarlamadığınız sürece yalnızca izin listesindeki gönderenler bunu tetikleyebilir.- Ajan istemi, doğru kişiye hitap edebilmesi için son grup bağlamını ve sondaki
[from: …]işaretçisini içerir. - Oturum düzeyi 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 iletiler olarak gönderin. Kişisel DM oturumunuz bağımsız kalır.
Test / doğrulama
- Manuel smoke:
- Grupta bir
@openclawping’i gönderin ve gönderen adına atıf yapan 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
from: <groupJid>ve[from: …]sonekini göstereninbound web messagegirdilerini görmek için Gateway günlüklerini (--verboseile çalıştırarak) kontrol edin.
Bilinen hususlar
- Gürültülü yayınlardan kaçınmak için Heartbeat gruplar için kasıtlı olarak atlanır.
- Yankı bastırma birleştirilmiş toplu ileti dizesini kullanır; bahsetme olmadan aynı metni iki kez gönderirseniz yalnızca ilki yanıt alır.
- 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.typingModeizler. Görünür yanıtlar varsayılan yalnızca ileti-aracı modunu kullandığında, yazıyor göstergesi varsayılan olarak hemen başlar; böylece otomatik nihai yanıt gönderilmese bile grup üyeleri ajanın çalıştığını görebilir. Açık yazma modu yapılandırması yine de önceliklidir.