WhatsApp (Web kanalı)
Durum: WhatsApp Web (Baileys) üzerinden üretime hazır. Gateway bağlı oturum(lar)ın sahibidir.Kurulum (gerektiğinde)
- Onboarding (
openclaw onboard) veopenclaw channels add --channel whatsapp, ilk kez seçtiğinizde WhatsApp eklentisini yüklemeyi önerir. openclaw channels login --channel whatsappde, eklenti henüz mevcut değilse kurulum akışını sunar.- Geliştirme kanalı + git checkout: varsayılan olarak yerel eklenti yolunu kullanır.
- Stable/Beta: varsayılan olarak npm paketi
@openclaw/whatsappkullanılır.
Eşleştirme
Bilinmeyen gönderenler için varsayılan DM ilkesi eşleştirmedir.
Kanal sorun giderme
Kanallar arası tanılama ve onarım kılavuzları.
Gateway yapılandırması
Tam kanal yapılandırma kalıpları ve örnekleri.
Hızlı kurulum
OpenClaw mümkün olduğunda WhatsApp’ı ayrı bir numarada çalıştırmanızı önerir. (Kanal meta verileri ve kurulum akışı bu kurulum için optimize edilmiştir, ancak kişisel numara kurulumları da desteklenir.)
Dağıtım kalıpları
Ayrı numara (önerilen)
Ayrı numara (önerilen)
Bu en temiz operasyonel moddur:
- OpenClaw için ayrı bir WhatsApp kimliği
- daha net DM izin listeleri ve yönlendirme sınırları
- kendi kendine sohbet karışıklığı olasılığının daha düşük olması
Kişisel numara yedeği
Kişisel numara yedeği
Onboarding kişisel numara modunu destekler ve kendi kendine sohbet dostu bir temel yazar:
dmPolicy: "allowlist"allowFromkişisel numaranızı içerirselfChatMode: true
allowFrom değerine göre çalışır.Yalnızca WhatsApp Web kanal kapsamı
Yalnızca WhatsApp Web kanal kapsamı
Mesajlaşma platformu kanalı, mevcut OpenClaw kanal mimarisinde WhatsApp Web tabanlıdır (
Baileys).Yerleşik sohbet kanalı kayıt defterinde ayrı bir Twilio WhatsApp mesajlaşma kanalı yoktur.Çalışma zamanı modeli
- Gateway, WhatsApp soketinin ve yeniden bağlanma döngüsünün sahibidir.
- Giden gönderimler, hedef hesap için etkin bir WhatsApp dinleyicisi gerektirir.
- Durum ve yayın sohbetleri yok sayılır (
@status,@broadcast). - Doğrudan sohbetler DM oturum kurallarını kullanır (
session.dmScope; varsayılanmain, DM’leri ajanın ana oturumunda birleştirir). - Grup oturumları yalıtılmıştır (
agent:<agentId>:whatsapp:group:<jid>). - WhatsApp Web taşıması, gateway ana makinesinde standart proxy ortam değişkenlerine uyar (
HTTPS_PROXY,HTTP_PROXY,NO_PROXY/ küçük harfli varyantlar). Kanala özel WhatsApp proxy ayarları yerine ana makine düzeyinde proxy yapılandırmasını tercih edin.
Erişim denetimi ve etkinleştirme
- DM ilkesi
- Grup ilkesi + izin listeleri
- Bahsetmeler + /activation
channels.whatsapp.dmPolicy, doğrudan sohbet erişimini kontrol eder:pairing(varsayılan)allowlistopen(allowFromiçinde"*"bulunmasını gerektirir)disabled
allowFrom, E.164 tarzı numaraları kabul eder (dahili olarak normalize edilir).Çoklu hesap geçersiz kılması: channels.whatsapp.accounts.<id>.dmPolicy (ve allowFrom) o hesap için kanal düzeyindeki varsayılanlardan önceliklidir.Çalışma zamanı davranışı ayrıntıları:- eşleştirmeler kanal izin deposunda kalıcı olarak saklanır ve yapılandırılmış
allowFromile birleştirilir - hiçbir izin listesi yapılandırılmadıysa, bağlı kendi numaraya varsayılan olarak izin verilir
- giden
fromMeDM’leri asla otomatik eşleştirilmez
Kişisel numara ve kendi kendine sohbet davranışı
Bağlı kendi numaraallowFrom içinde de mevcut olduğunda, WhatsApp kendi kendine sohbet korumaları etkinleşir:
- kendi kendine sohbet dönüşlerinde okundu bilgilerini atla
- aksi halde kendinize ping atacak olan mention-JID otomatik tetikleme davranışını yok say
messages.responsePrefixayarlanmamışsa, kendi kendine sohbet yanıtları varsayılan olarak[{identity.name}]veya[openclaw]olur
Mesaj normalizasyonu ve bağlam
Gelen zarf + yanıt bağlamı
Gelen zarf + yanıt bağlamı
Gelen WhatsApp mesajları paylaşılan gelen zarfına sarılır.Alıntılanmış bir yanıt varsa, bağlam şu biçimde eklenir:Yanıt meta veri alanları da mevcut olduğunda doldurulur (
ReplyToId, ReplyToBody, ReplyToSender, gönderen JID/E.164).Medya yer tutucuları ve konum/kişi çıkarımı
Medya yer tutucuları ve konum/kişi çıkarımı
Yalnızca medya içeren gelen mesajlar şu gibi yer tutucularla normalize edilir:
<media:image><media:video><media:audio><media:document><media:sticker>
Bekleyen grup geçmişi ekleme
Bekleyen grup geçmişi ekleme
Gruplar için, işlenmemiş mesajlar arabelleğe alınabilir ve bot sonunda tetiklendiğinde bağlam olarak eklenebilir.
- varsayılan sınır:
50 - yapılandırma:
channels.whatsapp.historyLimit - yedek:
messages.groupChat.historyLimit 0devre dışı bırakır
[Son yanıtınızdan bu yana sohbet mesajları - bağlam için][Geçerli mesaj - buna yanıt verin]
Okundu bilgileri
Okundu bilgileri
Okundu bilgileri, kabul edilen gelen WhatsApp mesajları için varsayılan olarak etkindir.Genel olarak devre dışı bırakmak için:Hesap başına geçersiz kılma:Kendi kendine sohbet dönüşleri, genel olarak etkin olsa bile okundu bilgilerini atlar.
Teslimat, parçalara ayırma ve medya
Metni parçalara ayırma
Metni parçalara ayırma
- varsayılan parça sınırı:
channels.whatsapp.textChunkLimit = 4000 channels.whatsapp.chunkMode = "length" | "newline"newlinemodu paragraf sınırlarını (boş satırlar) tercih eder, ardından uzunluk açısından güvenli parçalamaya geri döner
Giden medya davranışı
Giden medya davranışı
- resim, video, ses (PTT sesli not) ve belge yüklerini destekler
audio/ogg, sesli not uyumluluğu içinaudio/ogg; codecs=opusolarak yeniden yazılır- animasyonlu GIF oynatımı, video gönderimlerinde
gifPlayback: trueile desteklenir - çoklu medya yanıt yükleri gönderilirken başlıklar ilk medya öğesine uygulanır
- medya kaynağı HTTP(S),
file://veya yerel yollar olabilir
Medya boyutu sınırları ve yedek davranış
Medya boyutu sınırları ve yedek davranış
- gelen medya kaydetme sınırı:
channels.whatsapp.mediaMaxMb(varsayılan50) - giden medya gönderme sınırı:
channels.whatsapp.mediaMaxMb(varsayılan50) - hesap başına geçersiz kılmalar
channels.whatsapp.accounts.<accountId>.mediaMaxMbkullanır - resimler, sınırlara sığması için otomatik olarak optimize edilir (yeniden boyutlandırma/kalite taraması)
- medya gönderme hatasında, ilk öğe yedeği yanıtı sessizce düşürmek yerine metin uyarısı gönderir
Tepki düzeyi
channels.whatsapp.reactionLevel, ajanın WhatsApp’ta emoji tepkilerini ne kadar geniş kullandığını kontrol eder:
| Düzey | Alındı tepkileri | Ajan tarafından başlatılan tepkiler | Açıklama |
|---|---|---|---|
"off" | Hayır | Hayır | Hiç tepki yok |
"ack" | Evet | Hayır | Yalnızca alındı tepkileri (yanıt öncesi alındı) |
"minimal" | Evet | Evet (temkinli) | Alındı + temkinli yönlendirmeli ajan tepkileri |
"extensive" | Evet | Evet (teşvik edilir) | Alındı + teşvik edilen yönlendirmeli ajan tepkileri |
"minimal".
Hesap başına geçersiz kılmalar channels.whatsapp.accounts.<id>.reactionLevel kullanır.
Alındı tepkileri
WhatsApp,channels.whatsapp.ackReaction üzerinden gelen alımında anında alındı tepkilerini destekler.
Alındı tepkileri reactionLevel tarafından geçitlenir — reactionLevel "off" olduğunda bastırılır.
- gelen kabul edildikten hemen sonra gönderilir (yanıt öncesi)
- hatalar günlüğe kaydedilir ancak normal yanıt teslimatını engellemez
- grup modu
mentions, bahsetmeyle tetiklenen dönüşlerde tepki verir; grup etkinleştirmealwaysbu denetim için baypas görevi görür - WhatsApp
channels.whatsapp.ackReactionkullanır (eskimessages.ackReactionburada kullanılmaz)
Çoklu hesap ve kimlik bilgileri
Hesap seçimi ve varsayılanlar
Hesap seçimi ve varsayılanlar
- hesap kimlikleri
channels.whatsapp.accountsiçinden gelir - varsayılan hesap seçimi: varsa
default, aksi halde ilk yapılandırılmış hesap kimliği (sıralanmış) - hesap kimlikleri arama için dahili olarak normalize edilir
Kimlik bilgisi yolları ve eski sürüm uyumluluğu
Kimlik bilgisi yolları ve eski sürüm uyumluluğu
- geçerli kimlik doğrulama yolu:
~/.openclaw/credentials/whatsapp/<accountId>/creds.json - yedek dosya:
creds.json.bak ~/.openclaw/credentials/içindeki eski varsayılan kimlik doğrulama hâlâ tanınır/varsayılan hesap akışları için taşınır
Oturumu kapatma davranışı
Oturumu kapatma davranışı
openclaw channels logout --channel whatsapp [--account <id>], o hesap için WhatsApp kimlik doğrulama durumunu temizler.Eski kimlik doğrulama dizinlerinde, oauth.json korunurken Baileys kimlik doğrulama dosyaları kaldırılır.Araçlar, eylemler ve yapılandırma yazımları
- Ajan araç desteği WhatsApp tepki eylemini (
react) içerir. - Eylem geçitleri:
channels.whatsapp.actions.reactionschannels.whatsapp.actions.polls
- Kanal tarafından başlatılan yapılandırma yazımları varsayılan olarak etkindir (
channels.whatsapp.configWrites=falseile devre dışı bırakın).
Sorun giderme
Bağlı değil (QR gerekli)
Bağlı değil (QR gerekli)
Belirti: kanal durumu bağlı olmadığını bildirir.Düzeltme:
Bağlı ama bağlantısı kesilmiş / yeniden bağlanma döngüsü
Bağlı ama bağlantısı kesilmiş / yeniden bağlanma döngüsü
Belirti: tekrar eden bağlantı kesilmeleri veya yeniden bağlanma denemeleri olan bağlı hesap.Düzeltme:Gerekirse
channels login ile yeniden bağlayın.Gönderimde etkin dinleyici yok
Gönderimde etkin dinleyici yok
Giden gönderimler, hedef hesap için etkin bir gateway dinleyicisi yoksa hızlıca başarısız olur.Gateway’in çalıştığından ve hesabın bağlı olduğundan emin olun.
Grup mesajları beklenmedik şekilde yok sayılıyor
Grup mesajları beklenmedik şekilde yok sayılıyor
Şu sırayla kontrol edin:
groupPolicygroupAllowFrom/allowFromgroupsizin listesi girdileri- bahsetme geçidi (
requireMention+ bahsetme kalıpları) openclaw.jsoniçindeki yinelenen anahtarlar (JSON5): sonraki girdiler öncekileri geçersiz kılar, bu nedenle kapsam başına tek birgroupPolicytutun
Bun çalışma zamanı uyarısı
Bun çalışma zamanı uyarısı
WhatsApp gateway çalışma zamanı Node kullanmalıdır. Bun, kararlı WhatsApp/Telegram gateway işlemi için uyumsuz olarak işaretlenmiştir.
Yapılandırma başvuru işaretçileri
Birincil başvuru: Yüksek sinyalli WhatsApp alanları:- erişim:
dmPolicy,allowFrom,groupPolicy,groupAllowFrom,groups - teslimat:
textChunkLimit,chunkMode,mediaMaxMb,sendReadReceipts,ackReaction,reactionLevel - çoklu hesap:
accounts.<id>.enabled,accounts.<id>.authDir, hesap düzeyi geçersiz kılmalar - operasyonlar:
configWrites,debounceMs,web.enabled,web.heartbeatSeconds,web.reconnect.* - oturum davranışı:
session.dmScope,historyLimit,dmHistoryLimit,dms.<id>.historyLimit