Mainstream messaging
Durum: WhatsApp Web (Baileys) üzerinden üretime hazır. Gateway bağlı oturum(lar)ın sahibidir.
Kurulum (isteğe bağlı)
- Onboarding (
openclaw onboard) veopenclaw channels add --channel whatsapp, WhatsApp Plugin'ini ilk kez seçtiğinizde kurmanızı ister. openclaw channels login --channel whatsapp, Plugin henüz mevcut değilse kurulum akışını da sunar.- Geliştirme kanalı + git checkout: varsayılan olarak yerel Plugin yolunu kullanır.
- Stable/Beta: geçerli resmi sürüm etiketindeki npm paketi
@openclaw/whatsappkullanılır.
Manuel kurulum kullanılabilir kalır:
openclaw plugins install @openclaw/whatsapp
Geçerli resmi sürüm etiketini takip etmek için yalın paketi kullanın. Tam bir sürümü yalnızca tekrarlanabilir bir kurulum gerektiğinde sabitleyin.
Windows'ta WhatsApp Plugin'i, npm kurulumu sırasında PATH üzerinde Git'e ihtiyaç duyar çünkü
Baileys/libsignal bağımlılıklarından biri bir git URL'sinden alınır. Git for Windows'ı kurun,
ardından kabuğu yeniden başlatıp kurulumu tekrar çalıştırın:
winget install --id Git.Git -e
Portable Git de bin dizini PATH üzerindeyse çalışır.
Bilinmeyen gönderenler için varsayılan DM ilkesi eşleştirmedir.
Kanallar arası tanılama ve onarım çalışma planları.
Tam kanal yapılandırma desenleri ve örnekleri.
Hızlı kurulum
Configure WhatsApp access policy
{
channels: {
whatsapp: {
dmPolicy: "pairing",
allowFrom: ["+15551234567"],
groupPolicy: "allowlist",
groupAllowFrom: ["+15551234567"],
},
},
}
Link WhatsApp (QR)
openclaw channels login --channel whatsapp
Belirli bir hesap için:
openclaw channels login --channel whatsapp --account work
Oturum açmadan önce mevcut/özel bir WhatsApp Web kimlik doğrulama dizini bağlamak için:
openclaw channels add --channel whatsapp --account work --auth-dir /path/to/wa-auth
openclaw channels login --channel whatsapp --account work
Start the gateway
openclaw gateway
Approve first pairing request (if using pairing mode)
openclaw pairing list whatsapp
openclaw pairing approve whatsapp <CODE>
Eşleştirme isteklerinin süresi 1 saat sonra dolar. Bekleyen istekler kanal başına 3 ile sınırlıdır.
Dağıtım desenleri
Dedicated number (recommended)
Bu, en temiz operasyonel moddur:
- OpenClaw için ayrı 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ı
En küçük ilke deseni:
{
channels: {
whatsapp: {
dmPolicy: "allowlist",
allowFrom: ["+15551234567"],
},
},
}
Personal-number fallback
Onboarding kişisel numara modunu destekler ve kendi kendine sohbet dostu bir temel ayar yazar:
dmPolicy: "allowlist"allowFromkişisel numaranızı içerirselfChatMode: true
Çalışma zamanında, kendi kendine sohbet korumaları bağlı kendi numarasını ve allowFrom değerini temel alır.
WhatsApp Web-only channel scope
Mesajlaşma platformu kanalı, geçerli 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.
- Yeniden bağlanma izleyicisi, yalnızca gelen uygulama iletisi hacmini değil, WhatsApp Web aktarım etkinliğini kullanır; bu nedenle sessiz bir bağlı cihaz oturumu yalnızca yakın zamanda kimse ileti göndermediği için yeniden başlatılmaz. Daha uzun bir uygulama sessizliği üst sınırı, aktarım çerçeveleri gelmeye devam etse ancak izleyici penceresi boyunca hiçbir uygulama iletisi işlenmese yine de yeniden bağlanmayı zorlar; yakın zamanda etkin olan bir oturum için geçici bir yeniden bağlanmadan sonra, bu uygulama sessizliği denetimi ilk kurtarma penceresinde normal ileti zaman aşımını kullanır.
- Baileys soket zamanlamaları
web.whatsapp.*altında açıktır:keepAliveIntervalMsWhatsApp Web uygulama ping'lerini,connectTimeoutMsaçılış el sıkışması zaman aşımını vedefaultQueryTimeoutMsBaileys sorgu zaman aşımlarını kontrol eder. - Giden gönderimler, hedef hesap için etkin bir WhatsApp dinleyicisi gerektirir.
- Grup gönderimleri, metin ve medya açıklamalarındaki
@+<digits>ve@<digits>belirteçleri geçerli WhatsApp katılımcı meta verileriyle eşleştiğinde, LID destekli gruplar dahil olmak üzere yerel bahsetme meta verilerini ekler. - Durum ve yayın sohbetleri yok sayılır (
@status,@broadcast). - Yeniden bağlanma izleyicisi, yalnızca gelen uygulama iletisi hacmini değil, WhatsApp Web aktarım etkinliğini izler: sessiz bağlı cihaz oturumları aktarım çerçeveleri devam ederken açık kalır, ancak aktarım durması daha sonraki uzak bağlantı kesme yolundan çok önce yeniden bağlanmayı zorlar.
- Doğrudan sohbetler DM oturum kurallarını kullanır (
session.dmScope; varsayılanmain, DM'leri temsilcinin ana oturumuna toplar). - Grup oturumları yalıtılmıştır (
agent:<agentId>:whatsapp:group:<jid>). - WhatsApp Channels/Newsletters, yerel
@newsletterJID'leriyle açık giden hedefler olabilir. Giden newsletter gönderimleri, DM oturum semantiği yerine kanal oturumu meta verilerini (agent:<agentId>:whatsapp:channel:<jid>) kullanır. - WhatsApp Web aktarımı, Gateway ana makinesindeki standart proxy ortam değişkenlerini dikkate alır (
HTTPS_PROXY,HTTP_PROXY,NO_PROXY/ küçük harfli varyantlar). Kanal özelindeki WhatsApp proxy ayarları yerine ana makine düzeyi proxy yapılandırmasını tercih edin. messages.removeAckAfterReplyetkinleştirildiğinde OpenClaw, görünür bir yanıt teslim edildikten sonra WhatsApp ack tepkisini temizler.
Plugin kancaları ve gizlilik
WhatsApp gelen iletileri kişisel ileti içeriği, telefon numaraları,
grup tanımlayıcıları, gönderen adları ve oturum korelasyon alanları içerebilir. Bu nedenle,
WhatsApp, açıkça dahil olmadığınız sürece gelen message_received kanca yüklerini Plugin'lere
yayınlamaz:
{
channels: {
whatsapp: {
pluginHooks: {
messageReceived: true,
},
},
},
}
Dahil olmayı tek bir hesaba kapsamlandırabilirsiniz:
{
channels: {
whatsapp: {
accounts: {
work: {
pluginHooks: {
messageReceived: true,
},
},
},
},
},
}
Bunu yalnızca gelen WhatsApp ileti içeriğini ve tanımlayıcılarını almasına güvendiğiniz Plugin'ler için etkinleştirin.
Erişim denetimi ve etkinleştirme
DM policy
channels.whatsapp.dmPolicy doğrudan sohbet erişimini kontrol eder:
pairing(varsayılan)allowlistopen(allowFromdeğerinin"*"içermesini gerektirir)disabled
allowFrom, E.164 tarzı numaraları kabul eder (dahili olarak normalleştirilir).
allowFrom, bir DM gönderen erişim denetimi listesidir. WhatsApp grup JID'lerine veya @newsletter kanal JID'lerine açık giden gönderimleri kısıtlamaz.
Çok hesaplı geçersiz kılma: channels.whatsapp.accounts.<id>.dmPolicy (ve allowFrom), o hesap için kanal düzeyi varsayılanlara göre önceliklidir.
Çalışma zamanı davranış ayrıntıları:
- eşleştirmeler kanal izin deposunda kalıcılaştırılır ve yapılandırılmış
allowFromile birleştirilir - zamanlanmış otomasyon ve Heartbeat alıcı yedeği, açık teslim hedeflerini veya yapılandırılmış
allowFromdeğerini kullanır; DM eşleştirme onayları örtük cron veya Heartbeat alıcıları değildir - hiçbir izin listesi yapılandırılmamışsa bağlı kendi numarası varsayılan olarak izinlidir
- OpenClaw, giden
fromMeDM'lerini (bağlı cihazdan kendinize gönderdiğiniz iletiler) hiçbir zaman otomatik eşleştirmez
Group policy + allowlists
Grup erişiminin iki katmanı vardır:
-
Grup üyeliği izin listesi (
channels.whatsapp.groups)groupsatlanırsa tüm gruplar uygundurgroupsmevcutsa grup izin listesi gibi davranır ("*"izinlidir)
-
Grup gönderen ilkesi (
channels.whatsapp.groupPolicy+groupAllowFrom)open: gönderen izin listesi atlanırallowlist: gönderengroupAllowFrom(veya*) ile eşleşmelidirdisabled: tüm grup gelenlerini engeller
Gönderen izin listesi yedeği:
groupAllowFromayarlanmamışsa çalışma zamanı, varsaallowFromdeğerine geri döner- gönderen izin listeleri bahsetme/yanıt etkinleştirmesinden önce değerlendirilir
Not: Hiç channels.whatsapp bloğu yoksa çalışma zamanı grup ilkesi yedeği, channels.defaults.groupPolicy ayarlı olsa bile allowlist olur (uyarı günlüğüyle).
Mentions + /activation
Grup yanıtları varsayılan olarak bahsetme gerektirir.
Bahsetme algılama şunları içerir:
- bot kimliğinin açık WhatsApp bahsetmeleri
- yapılandırılmış bahsetme regex desenleri (
agents.list[].groupChat.mentionPatterns, yedekmessages.groupChat.mentionPatterns) - yetkili grup iletileri için gelen sesli not dökümleri
- örtük bota yanıt algılama (yanıt gönderen bot kimliğiyle eşleşir)
Güvenlik notu:
- alıntı/yanıt yalnızca bahsetme geçidini karşılar; gönderen yetkisi vermez
groupPolicy: "allowlist"ile, izin listesinde olmayan gönderenler, izin listesinde olan bir kullanıcının iletisine yanıt verseler bile engellenir
Oturum düzeyi etkinleştirme komutu:
/activation mention/activation always
activation oturum durumunu günceller (global yapılandırmayı değil). Sahip geçidine tabidir.
Kişisel numara ve kendi kendine sohbet davranışı
Bağlı kendi numarası allowFrom içinde de mevcut olduğunda, WhatsApp kendi kendine sohbet korumaları etkinleşir:
- kendi kendine sohbet turları için okundu bilgilerini atla
- aksi halde kendinize ping atacak bahsetme-JID otomatik tetikleme davranışını yok say
messages.responsePrefixayarlanmamışsa kendi kendine sohbet yanıtları varsayılan olarak[{identity.name}]veya[openclaw]olur
İleti normalleştirme ve bağlam
Inbound envelope + reply context
Gelen WhatsApp iletileri paylaşılan gelen zarfına sarılır.
Alıntılanmış bir yanıt varsa bağlam şu biçimde eklenir:
[Replying to <sender> id:<stanzaId>]
<quoted body or media placeholder>
[/Replying]
Yanıt meta verisi alanları da mevcut olduğunda doldurulur (ReplyToId, ReplyToBody, ReplyToSender, gönderen JID/E.164).
Alıntılanan yanıt hedefi indirilebilir medya olduğunda OpenClaw bunu
normal gelen medya deposu üzerinden kaydeder ve MediaPath/MediaType olarak sunar; böylece
temsilci yalnızca <media:image> görmek yerine başvurulan görseli inceleyebilir.
Media placeholders and location/contact extraction
Yalnızca medya içeren gelen iletiler şu gibi yer tutucularla normalleştirilir:
<media:image><media:video><media:audio><media:document><media:sticker>
Yetkili grup sesli notları, gövde yalnızca <media:audio> olduğunda bahsetme geçidinden önce
yazıya dökülür; bu nedenle sesli notta bot bahsetmesini söylemek
yanıtı tetikleyebilir. Döküm yine de bottan bahsetmiyorsa,
ham yer tutucu yerine bekleyen grup geçmişinde tutulur.
Konum gövdeleri kısa koordinat metni kullanır. Konum etiketleri/yorumları ve kişi/vCard ayrıntıları, satır içi istem metni olarak değil, çitle çevrilmiş güvenilmeyen meta veri olarak işlenir.
Pending group history injection
Gruplar için, işlenmemiş iletiler arabelleğe alınabilir ve bot en sonunda tetiklendiğinde bağlam olarak enjekte edilebilir.
- varsayılan sınır:
50 - config:
channels.whatsapp.historyLimit - yedek:
messages.groupChat.historyLimit 0devre dışı bırakır
Enjeksiyon işaretçileri:
[Chat messages since your last reply - for context][Current message - respond to this]
Okundu bilgileri
Okundu bilgileri, kabul edilen gelen WhatsApp mesajları için varsayılan olarak etkindir.
Genel olarak devre dışı bırakma:
{
channels: {
whatsapp: {
sendReadReceipts: false,
},
},
}
Hesap başına geçersiz kılma:
{
channels: {
whatsapp: {
accounts: {
work: {
sendReadReceipts: false,
},
},
},
},
}
Kendi kendine sohbet turları, genel olarak etkin olsa bile okundu bilgilerini atlar.
Teslim, parçalama ve medya
Metin parçalama
- 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ışı
- görsel, video, ses (PTT sesli not) ve belge yüklerini destekler
- ses medyası Baileys
audioyükü üzerindenptt: trueile gönderilir, bu yüzden WhatsApp istemcileri bunu bas-konuş sesli notu olarak işler - yanıt yükleri
audioAsVoicedeğerini korur; WhatsApp için TTS sesli not çıktısı, sağlayıcı MP3 veya WebM döndürse bile bu PTT yolunda kalır - yerel Ogg/Opus ses, sesli not uyumluluğu için
audio/ogg; codecs=opusolarak gönderilir - Microsoft Edge TTS MP3/WebM çıktısı dahil Ogg olmayan sesler, PTT tesliminden önce
ffmpegile 48 kHz mono Ogg/Opus biçimine dönüştürülür /tts latesten son asistan yanıtını tek bir sesli not olarak gönderir ve aynı yanıt için tekrarlı gönderimleri bastırır;/tts chat on|off|defaultgeçerli WhatsApp sohbeti için otomatik TTS'yi kontrol eder- animasyonlu GIF oynatma, video gönderimlerinde
gifPlayback: trueile desteklenir - çoklu medya yanıt yükleri gönderilirken altyazılar ilk medya öğesine uygulanır; ancak PTT sesli notları sesi önce, görünür metni ayrı gönderir çünkü WhatsApp istemcileri sesli not altyazılarını tutarlı biçimde göstermez
- medya kaynağı HTTP(S),
file://veya yerel yollar olabilir
Medya boyutu sınırları ve yedek davranış
- gelen medya kaydetme üst sınırı:
channels.whatsapp.mediaMaxMb(varsayılan50) - giden medya gönderme üst sınırı:
channels.whatsapp.mediaMaxMb(varsayılan50) - hesap başına geçersiz kılmalar
channels.whatsapp.accounts.<accountId>.mediaMaxMbkullanır - görseller, sınırlara sığacak şekilde otomatik 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
Yanıt alıntılama
WhatsApp, giden yanıtların gelen mesajı görünür biçimde alıntıladığı yerel yanıt alıntılamayı destekler. Bunu channels.whatsapp.replyToMode ile kontrol edin.
| Değer | Davranış |
|---|---|
"off" |
Asla alıntılama; düz mesaj olarak gönder |
"first" |
Yalnızca ilk giden yanıt parçasını alıntıla |
"all" |
Her giden yanıt parçasını alıntıla |
"batched" |
Anlık yanıtları alıntılamadan bırakırken kuyruğa alınmış toplu yanıtları alıntıla |
Varsayılan "off" olur. Hesap başına geçersiz kılmalar channels.whatsapp.accounts.<id>.replyToMode kullanır.
{
channels: {
whatsapp: {
replyToMode: "first",
},
},
}
Reaksiyon düzeyi
channels.whatsapp.reactionLevel, ajanın WhatsApp üzerinde emoji reaksiyonlarını ne kadar geniş kullandığını kontrol eder:
| Düzey | Onay reaksiyonları | Ajan tarafından başlatılan reaksiyonlar | Açıklama |
|---|---|---|---|
"off" |
Hayır | Hayır | Hiç reaksiyon yok |
"ack" |
Evet | Hayır | Yalnızca onay reaksiyonları (yanıt öncesi alındı bilgisi) |
"minimal" |
Evet | Evet (temkinli) | Temkinli yönlendirmeyle onay + ajan reaksiyonları |
"extensive" |
Evet | Evet (teşvik edilir) | Teşvik edilen yönlendirmeyle onay + ajan reaksiyonları |
Varsayılan: "minimal".
Hesap başına geçersiz kılmalar channels.whatsapp.accounts.<id>.reactionLevel kullanır.
{
channels: {
whatsapp: {
reactionLevel: "ack",
},
},
}
Onay reaksiyonları
WhatsApp, channels.whatsapp.ackReaction aracılığıyla gelen alındı bilgisinde anında onay reaksiyonlarını destekler.
Onay reaksiyonları reactionLevel tarafından kapılanır — reactionLevel "off" olduğunda bastırılır.
{
channels: {
whatsapp: {
ackReaction: {
emoji: "👀",
direct: true,
group: "mentions", // always | mentions | never
},
},
},
}
Davranış notları:
- gelen mesaj kabul edildikten hemen sonra gönderilir (yanıt öncesi)
- hatalar günlüğe kaydedilir ancak normal yanıt teslimini engellemez
- grup modu
mentions, bahsetmeyle tetiklenen turlarda reaksiyon 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 kimlikleri
channels.whatsapp.accountsiçinden gelir - varsayılan hesap seçimi: varsa
default, aksi halde ilk yapılandırılmış hesap kimliği (sıralı) - hesap kimlikleri arama için dahili olarak normalleştirilir
Kimlik bilgisi yolları ve eski uyumluluk
- 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, varsayılan hesap akışları için hâlâ tanınır/taşınır
Çıkış davranışı
openclaw channels logout --channel whatsapp [--account <id>], bu hesap için WhatsApp kimlik doğrulama durumunu temizler.
Bir Gateway erişilebilir olduğunda, çıkış önce seçilen hesap için canlı WhatsApp dinleyicisini durdurur; böylece bağlı oturum bir sonraki yeniden başlatmaya kadar mesaj almaya devam etmez. openclaw channels remove --channel whatsapp, hesap yapılandırmasını devre dışı bırakmadan veya silmeden önce canlı dinleyiciyi de durdurur.
Eski kimlik doğrulama dizinlerinde, Baileys kimlik doğrulama dosyaları kaldırılırken oauth.json korunur.
Araçlar, eylemler ve config yazmaları
- Ajan araç desteği WhatsApp reaksiyon eylemini (
react) içerir. - Eylem kapıları:
channels.whatsapp.actions.reactionschannels.whatsapp.actions.polls
- Kanal tarafından başlatılan config yazmaları varsayılan olarak etkindir (
channels.whatsapp.configWrites=falseile devre dışı bırakılır).
Sorun giderme
Bağlı değil (QR gerekli)
Belirti: kanal durumu bağlı değil bildirir.
Düzeltme:
openclaw channels login --channel whatsapp
openclaw channels status
Bağlı ama bağlantı kesiliyor / yeniden bağlanma döngüsü
Belirti: tekrarlı bağlantı kesilmeleri veya yeniden bağlanma denemeleri olan bağlı hesap.
Sessiz hesaplar normal mesaj zaman aşımının ötesinde bağlı kalabilir; gözetleyici, WhatsApp Web aktarım etkinliği durduğunda, soket kapandığında veya uygulama düzeyi etkinlik daha uzun güvenlik penceresinin ötesinde sessiz kaldığında yeniden başlatır.
Günlükler tekrarlı status=408 Request Time-out Connection was lost gösteriyorsa,
Baileys soket zamanlamalarını web.whatsapp altında ayarlayın. Önce
keepAliveIntervalMs değerini ağınızın boşta kalma zaman aşımının altına kısaltın ve
yavaş veya kayıplı bağlantılarda connectTimeoutMs değerini artırın:
{
web: {
whatsapp: {
keepAliveIntervalMs: 15000,
connectTimeoutMs: 60000,
defaultQueryTimeoutMs: 60000,
},
},
}
Düzeltme:
openclaw doctor
openclaw logs --follow
~/.openclaw/logs/whatsapp-health.log dosyası Gateway inactive diyorsa ancak
openclaw gateway status ve openclaw channels status --probe Gateway'in
ve WhatsApp'ın sağlıklı olduğunu gösteriyorsa, openclaw doctor çalıştırın. Linux'ta doctor,
hâlâ ~/.openclaw/bin/ensure-whatsapp.sh çağıran eski crontab girdileri hakkında uyarır;
bu eski girdileri crontab -e ile kaldırın çünkü cron systemd kullanıcı veri yolu ortamından yoksun olabilir ve
bu eski betiğin Gateway sağlığını yanlış raporlamasına neden olabilir.
Gerekirse channels login ile yeniden bağlayın.
QR girişi proxy arkasında zaman aşımına uğruyor
Belirti: openclaw channels login --channel whatsapp, status=408 Request Time-out veya TLS soket bağlantı kesilmesiyle kullanılabilir bir QR kodu göstermeden önce başarısız olur.
WhatsApp Web girişi, Gateway ana makinesinin standart proxy ortamını (HTTPS_PROXY, HTTP_PROXY, küçük harfli varyantlar ve NO_PROXY) kullanır. Gateway sürecinin proxy env değerlerini devraldığını ve NO_PROXY değerinin mmg.whatsapp.net ile eşleşmediğini doğrulayın.
Gönderirken etkin dinleyici yok
Giden gönderimler, hedef hesap için etkin Gateway dinleyicisi olmadığında hızlı başarısız olur.
Gateway'in çalıştığından ve hesabın bağlı olduğundan emin olun.
Yanıt transkriptte görünüyor ama WhatsApp'ta görünmüyor
Transkript satırları ajanın ürettiğini kaydeder. WhatsApp teslimi ayrı olarak denetlenir: OpenClaw bir otomatik yanıtı yalnızca Baileys en az bir görünür metin veya medya gönderimi için giden mesaj kimliği döndürdükten sonra gönderilmiş sayar.
Onay reaksiyonları bağımsız yanıt öncesi alındı bilgileridir. Başarılı bir reaksiyon, sonraki metin veya medya yanıtının WhatsApp tarafından kabul edildiğini kanıtlamaz.
Gateway günlüklerinde auto-reply delivery failed veya auto-reply was not accepted by WhatsApp provider olup olmadığını denetleyin.
Grup mesajları beklenmedik biçimde yok sayılıyor
Şu sırayla denetleyin:
groupPolicygroupAllowFrom/allowFromgroupsizin listesi girdileri- bahsetme kapılaması (
requireMention+ bahsetme kalıpları) openclaw.jsoniçinde yinelenen anahtarlar (JSON5): sonraki girdiler öncekileri geçersiz kılar, bu yüzden kapsam başına tek birgroupPolicytutun
Bun çalışma zamanı uyarısı
WhatsApp Gateway çalışma zamanı Node kullanmalıdır. Bun, kararlı WhatsApp/Telegram Gateway çalışması için uyumsuz olarak işaretlenir.
Sistem istemleri
WhatsApp, groups ve direct haritaları aracılığıyla gruplar ve doğrudan sohbetler için Telegram tarzı sistem istemlerini destekler.
Grup mesajları için çözümleme hiyerarşisi:
Etkili groups haritası önce belirlenir: hesap kendi groups değerini tanımlıyorsa, kök groups haritasını tamamen değiştirir (derin birleştirme yok). Ardından istem araması ortaya çıkan tek haritada çalışır:
- Gruba özgü sistem istemi (
groups["<groupId>"].systemPrompt): belirli grup girdisi haritada bulunduğunda vesystemPromptanahtarı tanımlı olduğunda kullanılır.systemPromptboş bir dize ("") ise joker bastırılır ve sistem istemi uygulanmaz. - Grup joker sistem istemi (
groups["*"].systemPrompt): belirli grup girdisi haritada tamamen yoksa veya var olupsystemPromptanahtarı tanımlamıyorsa kullanılır.
Doğrudan mesajlar için çözümleme hiyerarşisi:
Etkili direct haritası önce belirlenir: hesap kendi direct değerini tanımlıyorsa, kök direct haritasını tamamen değiştirir (derin birleştirme yok). Ardından istem araması ortaya çıkan tek haritada çalışır:
- Doğrudan eşe özgü sistem istemi (
direct["<peerId>"].systemPrompt): haritada ilgili eş girdisi bulunduğunda ve bu girdininsystemPromptanahtarı tanımlı olduğunda kullanılır.systemPromptboş dize ("") ise joker bastırılır ve hiçbir sistem istemi uygulanmaz. - Doğrudan joker sistem istemi (
direct["*"].systemPrompt): ilgili eş girdisi haritada hiç yoksa veya varsa ancaksystemPromptanahtarı tanımlamıyorsa kullanılır.
Telegram çok hesaplı davranışından farkı: Telegram'da, çok hesaplı bir kurulumda kök groups, kendi groups ayarını tanımlamayan hesaplar dahil tüm hesaplar için kasıtlı olarak bastırılır; bunun amacı, bir botun ait olmadığı gruplardan grup mesajları almasını önlemektir. WhatsApp bu korumayı uygulamaz: kök groups ve kök direct, kaç hesap yapılandırılmış olursa olsun, hesap düzeyinde geçersiz kılma tanımlamayan hesaplar tarafından her zaman devralınır. Çok hesaplı bir WhatsApp kurulumunda hesap başına grup veya doğrudan istemler istiyorsanız, kök düzey varsayılanlara güvenmek yerine her hesabın altında haritanın tamamını açıkça tanımlayın.
Önemli davranış:
channels.whatsapp.groups, hem grup başına yapılandırma haritası hem de sohbet düzeyi grup izin listesidir. Kök veya hesap kapsamındagroups["*"], o kapsam için "tüm gruplar kabul edilir" anlamına gelir.- Bir joker grup
systemPromptdeğerini yalnızca o kapsamın tüm grupları zaten kabul etmesini istiyorsanız ekleyin. Hâlâ yalnızca sabit bir grup ID kümesinin uygun olmasını istiyorsanız, istem varsayılanı içingroups["*"]kullanmayın. Bunun yerine istemi açıkça izin verilen her grup girdisinde tekrarlayın. - Grup kabulü ve gönderen yetkilendirmesi ayrı denetimlerdir.
groups["*"], grup işlemeye ulaşabilen grup kümesini genişletir, ancak tek başına bu gruplardaki her göndereni yetkilendirmez. Gönderen erişimi hâlâ ayrı olarakchannels.whatsapp.groupPolicyvechannels.whatsapp.groupAllowFromile kontrol edilir. channels.whatsapp.direct, DM'ler için aynı yan etkiye sahip değildir.direct["*"], yalnızca bir DMdmPolicyartıallowFromveya eşleme deposu kurallarıyla zaten kabul edildikten sonra varsayılan bir doğrudan sohbet yapılandırması sağlar.
Örnek:
{
channels: {
whatsapp: {
groups: {
// Use only if all groups should be admitted at the root scope.
// Applies to all accounts that do not define their own groups map.
"*": { systemPrompt: "Default prompt for all groups." },
},
direct: {
// Applies to all accounts that do not define their own direct map.
"*": { systemPrompt: "Default prompt for all direct chats." },
},
accounts: {
work: {
groups: {
// This account defines its own groups, so root groups are fully
// replaced. To keep a wildcard, define "*" explicitly here too.
"[email protected]": {
requireMention: false,
systemPrompt: "Focus on project management.",
},
// Use only if all groups should be admitted in this account.
"*": { systemPrompt: "Default prompt for work groups." },
},
direct: {
// This account defines its own direct map, so root direct entries are
// fully replaced. To keep a wildcard, define "*" explicitly here too.
"+15551234567": { systemPrompt: "Prompt for a specific work direct chat." },
"*": { systemPrompt: "Default prompt for work direct chats." },
},
},
},
},
},
}
Yapılandırma başvurusu işaretçileri
Birincil başvuru:
Yüksek değerli WhatsApp alanları:
- erişim:
dmPolicy,allowFrom,groupPolicy,groupAllowFrom,groups - teslim:
textChunkLimit,chunkMode,mediaMaxMb,sendReadReceipts,ackReaction,reactionLevel - çok hesaplı:
accounts.<id>.enabled,accounts.<id>.authDir, hesap düzeyi geçersiz kılmalar - operasyonlar:
configWrites,debounceMs,web.enabled,web.heartbeatSeconds,web.reconnect.*,web.whatsapp.* - oturum davranışı:
session.dmScope,historyLimit,dmHistoryLimit,dms.<id>.historyLimit - istemler:
groups.<id>.systemPrompt,groups["*"].systemPrompt,direct.<id>.systemPrompt,direct["*"].systemPrompt