Instalasi (sesuai permintaan)
- Onboarding (
openclaw onboard) danopenclaw channels add --channel whatsappmeminta Anda memasang Plugin WhatsApp saat pertama kali memilihnya. openclaw channels login --channel whatsappjuga menawarkan alur instalasi ketika Plugin belum tersedia.- Channel dev + checkout git: default ke jalur Plugin lokal.
- Stable/Beta: memasang Plugin resmi
@openclaw/whatsappdari ClawHub terlebih dahulu, dengan npm sebagai fallback. - Runtime WhatsApp didistribusikan di luar paket npm inti OpenClaw agar dependensi runtime khusus WhatsApp tetap berada bersama Plugin eksternal.
@openclaw/whatsapp) hanya ketika Anda memerlukan fallback
registry. Sematkan versi persis hanya ketika Anda memerlukan instalasi yang dapat direproduksi.
Penyandingan
Pemecahan masalah channel
Konfigurasi Gateway
Penyiapan cepat
Tautkan WhatsApp (QR)
Panggil pemohon saat ini dengan MeowCaller (eksperimental)
Plugin WhatsApp dapat mengeksposwhatsapp_call dalam giliran agen yang berasal dari WhatsApp. Tool ini
menggunakan MeowCaller untuk melakukan panggilan suara WhatsApp ke
pemohon resmi saat ini dan memutar pesan TTS OpenClaw setelah mereka menjawab. Tool ini
tidak menerima nomor tujuan, sehingga prompt tidak dapat mengalihkan panggilan ke pihak ketiga.
Kapabilitas eksperimental ini dinonaktifkan secara default.
Aktifkan panggilan eksperimental
actions.calls: true ke channel WhatsApp di openclaw.json:false, OpenClaw tidak mengekspos tool whatsapp_call kepada agen.Instal CLI MeowCaller yang telah ditinjau
meowcaller pada PATH host gateway.
Hingga MeowCaller PR #7 digabungkan, build
branch yang telah ditinjau pada commit 752050471fc2bf7a8cdfbf7dbd3cd4e865d85d3f:$HOME/.local/bin juga berada di PATH layanan gateway. Revisi ini menyediakan
perintah pair eksplisit dan notify hanya-kirim. notify tidak membuka mikrofon, speaker,
perangkat video, sink audio masuk, atau tangkapan diagnostik. Jangan mengganti dengan perintah
play dari contoh CLI.Sandingkan perangkat tertaut MeowCaller
whatsapp_call melaporkan
direktori status khusus akun dan perintah penyandingan. Untuk akun default:MeowCaller linked device ready. Perintah kemudian keluar. Jaga wa-voip.db
tetap privat; itu adalah sesi perangkat tertaut MeowCaller. Tindakan status whatsapp_call
mengembalikan perintah dan shell khusus akun ketika Anda menggunakan akun non-default. Di
Windows, jalankan perintah PowerShell-nya; MeowCaller membuat direktori store.Konfigurasikan TTS dan panggil dari WhatsApp
Call me and say the build finished. Tool menyelesaikan pengirim
dari konteks masuk tepercaya, mensintesis file WAV privat sementara, menjalankan MeowCaller selama
jendela panggilan terbatas, dan menghapus file audio setelahnya. OpenClaw meneruskan store akun
secara eksplisit, menunggu status keluar nol setelah dijawab, pemutaran, dan penutupan panggilan, serta menganggap
timeout atau keluar bukan nol sebagai panggilan tool yang gagal.- hanya panggilan audio keluar satu-ke-satu
- tanpa nomor tujuan arbitrer
- tanpa auth bersama dengan koneksi chat
- tanpa panggilan ke diri sendiri dari mode nomor pribadi/chat mandiri
- audio tersintesis dibatasi hingga 60 detik
- tanpa tanda terima keterdengaran di sisi handset selain penyelesaian jawab/pemutaran/tutup dari MeowCaller
- OpenClaw menghentikan proses pendamping setelah jendela terbatas 115-175 detik, termasuk fase koneksi, jawab, pemutaran, dan penghentian MeowCaller
Pola deployment
Nomor khusus (direkomendasikan)
Nomor khusus (direkomendasikan)
- identitas WhatsApp terpisah untuk OpenClaw
- allowlist DM dan batas routing yang lebih jelas
- peluang kebingungan chat mandiri lebih rendah
Fallback nomor pribadi
Fallback nomor pribadi
dmPolicy: "allowlist"allowFrommenyertakan nomor pribadi AndaselfChatMode: true
allowFrom.Cakupan channel khusus WhatsApp Web
Cakupan channel khusus WhatsApp Web
Baileys) dalam arsitektur channel OpenClaw saat ini.Tidak ada channel perpesanan Twilio WhatsApp terpisah dalam registry channel chat bawaan.Model runtime
- Gateway memiliki soket WhatsApp dan loop koneksi ulang.
- Watchdog koneksi ulang menggunakan aktivitas transport WhatsApp Web, bukan hanya volume pesan aplikasi masuk, sehingga sesi perangkat tertaut yang sepi tidak dimulai ulang hanya karena belum ada yang mengirim pesan baru-baru ini. Batas hening aplikasi yang lebih panjang tetap memaksa koneksi ulang jika frame transport terus masuk tetapi tidak ada pesan aplikasi yang ditangani selama jendela watchdog; setelah koneksi ulang sementara untuk sesi yang baru-baru ini aktif, pemeriksaan hening aplikasi tersebut menggunakan timeout pesan normal untuk jendela pemulihan pertama.
- Timing soket Baileys eksplisit di bawah
web.whatsapp.*:keepAliveIntervalMsmengontrol ping aplikasi WhatsApp Web,connectTimeoutMsmengontrol timeout handshake pembukaan, dandefaultQueryTimeoutMsmengontrol tunggu kueri Baileys plus batas operasi kirim/presence keluar lokal dan tanda terima baca masuk OpenClaw. - Pengiriman keluar memerlukan listener WhatsApp aktif untuk akun target.
- Pengiriman grup melampirkan metadata mention native untuk token
@+<digits>dan@<digits>dalam teks dan caption media ketika token cocok dengan metadata peserta WhatsApp saat ini, termasuk grup berbasis LID. - Chat status dan broadcast diabaikan (
@status,@broadcast). - Watchdog koneksi ulang mengikuti aktivitas transport WhatsApp Web, bukan hanya volume pesan aplikasi masuk: sesi perangkat tertaut yang sepi tetap aktif selama frame transport berlanjut, tetapi stall transport memaksa koneksi ulang jauh sebelum jalur pemutusan jarak jauh yang lebih akhir.
- Chat langsung menggunakan aturan sesi DM (
session.dmScope; defaultmainmenggabungkan DM ke sesi utama agen). - Sesi grup diisolasi (
agent:<agentId>:whatsapp:group:<jid>). - WhatsApp Channels/Newsletters dapat menjadi target keluar eksplisit dengan JID
@newsletternative. Pengiriman newsletter keluar menggunakan metadata sesi channel (agent:<agentId>:whatsapp:channel:<jid>) alih-alih semantik sesi DM. - Transport WhatsApp Web menghormati variabel lingkungan proxy standar pada host gateway (
HTTPS_PROXY,HTTP_PROXY,NO_PROXY/ varian huruf kecil). Lebih utamakan konfigurasi proxy tingkat host daripada pengaturan proxy WhatsApp khusus channel. - Ketika
messages.removeAckAfterReplydiaktifkan, OpenClaw menghapus reaksi ack WhatsApp setelah balasan terlihat terkirim.
Prompt persetujuan
WhatsApp dapat merender prompt persetujuan exec dan Plugin dengan reaksi👍 / 👎. Pengiriman
dikontrol oleh konfigurasi penerusan persetujuan tingkat atas:
approvals.exec dan approvals.plugin bersifat independen. Mengaktifkan WhatsApp sebagai channel hanya menautkan
transport; itu tidak mengirim prompt persetujuan kecuali keluarga persetujuan yang cocok diaktifkan
dan diarahkan ke WhatsApp. Mode sesi mengirim persetujuan emoji native hanya untuk persetujuan yang
berasal dari WhatsApp. Mode target menggunakan pipeline penerusan bersama untuk target WhatsApp
eksplisit dan tidak membuat fanout DM pemberi persetujuan terpisah.
Reaksi persetujuan WhatsApp memerlukan pemberi persetujuan WhatsApp eksplisit dari allowFrom atau "*".
defaultTo mengontrol target pesan default biasa; itu bukan pemberi persetujuan persetujuan. Perintah manual
/approve tetap melewati jalur otorisasi pengirim WhatsApp normal sebelum
resolusi persetujuan.
Hook Plugin dan privasi
Pesan masuk WhatsApp dapat berisi konten pesan pribadi, nomor telepon, pengidentifikasi grup, nama pengirim, dan bidang korelasi sesi. Karena itu, WhatsApp tidak menyiarkan payload hookmessage_received masuk ke plugin
kecuali Anda ikut serta secara eksplisit:
Kontrol akses dan aktivasi
- DM policy
- Group policy + allowlists
- Mentions + /activation
channels.whatsapp.dmPolicy mengontrol akses chat langsung:pairing(default)allowlistopen(mengharuskanallowFrommenyertakan"*")disabled
allowFrom menerima nomor bergaya E.164 (dinormalisasi secara internal).allowFrom adalah daftar kontrol akses pengirim DM. Ini tidak membatasi pengiriman keluar eksplisit ke JID grup WhatsApp atau JID kanal @newsletter.Penimpaan multi-akun: channels.whatsapp.accounts.<id>.dmPolicy (dan allowFrom) lebih diutamakan daripada default tingkat kanal untuk akun tersebut.Detail perilaku runtime:- penyandingan dipertahankan di allow-store kanal dan digabungkan dengan
allowFromyang dikonfigurasi - automasi terjadwal dan fallback penerima Heartbeat menggunakan target pengiriman eksplisit atau
allowFromyang dikonfigurasi; persetujuan penyandingan DM bukan penerima Cron atau Heartbeat implisit - jika tidak ada allowlist yang dikonfigurasi, nomor mandiri yang tertaut diizinkan secara default
- OpenClaw tidak pernah menyandingkan otomatis DM
fromMekeluar (pesan yang Anda kirim ke diri sendiri dari perangkat tertaut)
Binding ACP yang dikonfigurasi
WhatsApp mendukung binding ACP persisten dengan entribindings[] tingkat atas:
- Chat langsung cocok dengan nomor E.164 seperti
+15555550123. - Grup cocok dengan JID grup WhatsApp seperti
120363424282127706@g.us. - Allowlist grup, kebijakan pengirim, dan gerbang mention atau aktivasi berjalan sebelum OpenClaw memastikan sesi ACP yang dikonfigurasi ada.
- Binding ACP terkonfigurasi yang cocok memiliki rute tersebut. Grup broadcast WhatsApp tidak menyebarkan giliran itu ke sesi WhatsApp biasa.
Perilaku nomor pribadi dan chat mandiri
Saat nomor mandiri yang tertaut juga ada diallowFrom, pengaman chat mandiri WhatsApp aktif:
- lewati tanda terima baca untuk giliran chat mandiri
- abaikan perilaku pemicu otomatis mention-JID yang jika tidak akan melakukan ping ke diri sendiri
- jika
messages.responsePrefixtidak ditetapkan, balasan chat mandiri default ke[{identity.name}]atau[openclaw]
Normalisasi pesan dan konteks
Inbound envelope + reply context
Inbound envelope + reply context
ReplyToId, ReplyToBody, ReplyToSender, JID/E.164 pengirim).
Saat target balasan yang dikutip adalah media yang dapat diunduh, OpenClaw menyimpannya melalui
penyimpanan media masuk normal dan mengeksposnya sebagai MediaPath/MediaType sehingga
agen dapat memeriksa gambar yang dirujuk, bukan hanya melihat
<media:image>.Media placeholders and location/contact extraction
Media placeholders and location/contact extraction
<media:image><media:video><media:audio><media:document><media:sticker>
<media:audio>, sehingga mengucapkan mention bot dalam catatan suara dapat
memicu balasan. Jika transkrip tetap tidak menyebut bot,
transkrip disimpan dalam riwayat grup tertunda, bukan placeholder mentah.Isi lokasi menggunakan teks koordinat ringkas. Label/komentar lokasi dan detail kontak/vCard dirender sebagai metadata tidak tepercaya berpagar, bukan teks prompt inline.Pending group history injection
Pending group history injection
- batas default:
50 - konfigurasi:
channels.whatsapp.historyLimit - fallback:
messages.groupChat.historyLimit 0menonaktifkan
[Chat messages since your last reply - for context][Current message - respond to this]
Read receipts
Read receipts
Pengiriman, pemotongan, dan media
Text chunking
Text chunking
- batas potongan default:
channels.whatsapp.textChunkLimit = 4000 channels.whatsapp.chunkMode = "length" | "newline"- mode
newlinemengutamakan batas paragraf (baris kosong), lalu kembali ke pemotongan yang aman berdasarkan panjang
Outbound media behavior
Outbound media behavior
- mendukung payload gambar, video, audio (catatan suara PTT), dan dokumen
- media audio dikirim melalui payload
audioBaileys denganptt: true, sehingga klien WhatsApp merendernya sebagai catatan suara push-to-talk - payload balasan mempertahankan
audioAsVoice; keluaran catatan suara TTS untuk WhatsApp tetap di jalur PTT ini meskipun penyedia mengembalikan MP3 atau WebM - audio Ogg/Opus native dikirim sebagai
audio/ogg; codecs=opusuntuk kompatibilitas catatan suara - audio non-Ogg, termasuk keluaran MP3/WebM Microsoft Edge TTS, ditranskode dengan
ffmpegke Ogg/Opus mono 48 kHz sebelum pengiriman PTT /tts latestmengirim balasan asisten terbaru sebagai satu catatan suara dan menekan pengiriman ulang untuk balasan yang sama;/tts chat on|off|defaultmengontrol TTS otomatis untuk chat WhatsApp saat ini- pemutaran GIF animasi didukung melalui
gifPlayback: truepada pengiriman video forceDocument/asDocumentmengirim gambar, GIF, dan video keluar melalui payload dokumen Baileys untuk menghindari kompresi media WhatsApp sambil mempertahankan nama file dan jenis MIME yang diselesaikan- caption diterapkan ke item media pertama saat mengirim payload balasan multi-media, kecuali catatan suara PTT mengirim audio terlebih dahulu dan teks terlihat secara terpisah karena klien WhatsApp tidak merender caption catatan suara secara konsisten
- sumber media dapat berupa HTTP(S),
file://, atau jalur lokal
Media size limits and fallback behavior
Media size limits and fallback behavior
- batas penyimpanan media masuk:
channels.whatsapp.mediaMaxMb(default50) - batas pengiriman media keluar:
channels.whatsapp.mediaMaxMb(default50) - penimpaan per akun menggunakan
channels.whatsapp.accounts.<accountId>.mediaMaxMb - gambar dioptimalkan otomatis (ubah ukuran/sapuan kualitas) agar sesuai batas kecuali
forceDocument/asDocumentmeminta pengiriman dokumen - saat pengiriman media gagal, fallback item pertama mengirim peringatan teks, bukan menjatuhkan respons secara diam-diam
Pengutipan balasan
WhatsApp mendukung pengutipan balasan native, saat balasan keluar mengutip pesan masuk secara terlihat. Kontrol denganchannels.whatsapp.replyToMode.
| Nilai | Perilaku |
|---|---|
"off" | Jangan pernah mengutip; kirim sebagai pesan biasa |
"first" | Kutip hanya potongan balasan keluar pertama |
"all" | Kutip setiap potongan balasan keluar |
"batched" | Kutip balasan batch dalam antrean sambil membiarkan balasan langsung tanpa kutipan |
"off". Penimpaan per akun menggunakan channels.whatsapp.accounts.<id>.replyToMode.
Tingkat reaksi
channels.whatsapp.reactionLevel mengontrol seberapa luas agen menggunakan reaksi emoji di WhatsApp:
| Tingkat | Reaksi ack | Reaksi yang diprakarsai agen | Deskripsi |
|---|---|---|---|
"off" | Tidak | Tidak | Tidak ada reaksi sama sekali |
"ack" | Ya | Tidak | Hanya reaksi ack (tanda terima sebelum balasan) |
"minimal" | Ya | Ya (konservatif) | Ack + reaksi agen dengan panduan konservatif |
"extensive" | Ya | Ya (dianjurkan) | Ack + reaksi agen dengan panduan yang dianjurkan |
"minimal".
Penimpaan per akun menggunakan channels.whatsapp.accounts.<id>.reactionLevel.
Reaksi acknowledgment
WhatsApp mendukung reaksi ack langsung pada tanda terima masuk melaluichannels.whatsapp.ackReaction.
Reaksi ack dibatasi oleh reactionLevel — reaksi tersebut ditekan ketika reactionLevel adalah "off".
- dikirim segera setelah pesan masuk diterima (sebelum balasan)
- jika
ackReactionada tanpaemoji, WhatsApp menggunakan emoji identitas agen yang dirutekan, dengan fallback ke ”👀”; hilangkanackReactionatau aturemoji: ""agar tidak mengirim reaksi ack - kegagalan dicatat dalam log tetapi tidak memblokir pengiriman balasan normal
- mode grup
mentionsbereaksi pada giliran yang dipicu oleh mention; aktivasi grupalwaysbertindak sebagai bypass untuk pemeriksaan ini - WhatsApp menggunakan
channels.whatsapp.ackReaction(messages.ackReactionlama tidak digunakan di sini)
Reaksi status siklus hidup
Aturmessages.statusReactions.enabled: true agar WhatsApp mengganti reaksi ack selama satu giliran alih-alih membiarkan emoji tanda terima statis. Saat diaktifkan, OpenClaw menggunakan slot reaksi pesan masuk yang sama untuk status siklus hidup seperti antre, berpikir, aktivitas tool, compaction, selesai, dan galat.
channels.whatsapp.ackReactiontetap mengontrol apakah reaksi status memenuhi syarat untuk pesan langsung dan grup.- Reaksi status antre menggunakan emoji ack efektif yang sama seperti reaksi ack biasa.
- WhatsApp memiliki satu slot reaksi bot per pesan, sehingga pembaruan siklus hidup mengganti reaksi saat ini di tempat.
messages.removeAckAfterReply: truemenghapus reaksi status akhir setelah masa tahan selesai/galat yang dikonfigurasi.- Kategori emoji tool mencakup
tool,coding,web,deploy,build, danconcierge.
Multi-akun dan kredensial
Pemilihan akun dan default
Pemilihan akun dan default
- id akun berasal dari
channels.whatsapp.accounts - pemilihan akun default:
defaultjika ada, jika tidak id akun terkonfigurasi pertama (diurutkan) - id akun dinormalisasi secara internal untuk lookup
Jalur kredensial dan kompatibilitas lama
Jalur kredensial dan kompatibilitas lama
- jalur auth saat ini:
~/.openclaw/credentials/whatsapp/<accountId>/creds.json - file cadangan:
creds.json.bak - auth default lama di
~/.openclaw/credentials/masih dikenali/dimigrasikan untuk alur akun default
Perilaku logout
Perilaku logout
openclaw channels logout --channel whatsapp [--account <id>] menghapus status auth WhatsApp untuk akun tersebut.Ketika Gateway dapat dijangkau, logout terlebih dahulu menghentikan listener WhatsApp live untuk akun yang dipilih sehingga sesi tertaut tidak terus menerima pesan sampai restart berikutnya. openclaw channels remove --channel whatsapp juga menghentikan listener live sebelum menonaktifkan atau menghapus konfigurasi akun.Dalam direktori auth lama, oauth.json dipertahankan sementara file auth Baileys dihapus.Tool, tindakan, dan penulisan konfigurasi
- Dukungan tool agen mencakup tindakan reaksi WhatsApp (
react). - Gate tindakan:
channels.whatsapp.actions.reactionschannels.whatsapp.actions.polls
- Penulisan konfigurasi yang dimulai oleh channel diaktifkan secara default (nonaktifkan melalui
channels.whatsapp.configWrites=false).
Pemecahan masalah
Tidak tertaut (QR diperlukan)
Tidak tertaut (QR diperlukan)
Tertaut tetapi terputus / loop koneksi ulang
Tertaut tetapi terputus / loop koneksi ulang
status=408 Request Time-out Connection was lost berulang, sesuaikan
timing soket Baileys di bawah web.whatsapp. Mulailah dengan memperpendek
keepAliveIntervalMs di bawah batas waktu idle jaringan Anda dan meningkatkan
connectTimeoutMs pada tautan yang lambat atau lossy:~/.openclaw/logs/whatsapp-health.log mengatakan Gateway inactive tetapi
openclaw gateway status dan openclaw channels status --probe menunjukkan
gateway dan WhatsApp sehat, jalankan openclaw doctor. Di Linux, doctor
memperingatkan tentang entri crontab lama yang masih memanggil
~/.openclaw/bin/ensure-whatsapp.sh; hapus entri usang tersebut dengan
crontab -e karena cron bisa tidak memiliki lingkungan systemd user-bus dan
membuat skrip lama itu salah melaporkan kesehatan gateway.Jika diperlukan, tautkan ulang dengan channels login.Login QR timeout di belakang proxy
Login QR timeout di belakang proxy
openclaw channels login --channel whatsapp gagal sebelum menampilkan kode QR yang dapat digunakan dengan status=408 Request Time-out atau pemutusan soket TLS.Login WhatsApp Web menggunakan lingkungan proxy standar host gateway (HTTPS_PROXY, HTTP_PROXY, varian huruf kecil, dan NO_PROXY). Verifikasi bahwa proses gateway mewarisi env proxy dan NO_PROXY tidak cocok dengan mmg.whatsapp.net.Tidak ada listener aktif saat mengirim
Tidak ada listener aktif saat mengirim
Balasan muncul di transkrip tetapi tidak di WhatsApp
Balasan muncul di transkrip tetapi tidak di WhatsApp
auto-reply delivery failed atau auto-reply was not accepted by WhatsApp provider.Pesan grup tidak terduga diabaikan
Pesan grup tidak terduga diabaikan
groupPolicygroupAllowFrom/allowFrom- entri allowlist
groups - gate mention (
requireMention+ pola mention) - kunci duplikat di
openclaw.json(JSON5): entri berikutnya menimpa entri sebelumnya, jadi pertahankan satugroupPolicyper scope
channels.whatsapp.groups ada, WhatsApp masih dapat mengamati pesan dari grup lain, tetapi OpenClaw menjatuhkannya sebelum perutean sesi. Tambahkan JID grup ke channels.whatsapp.groups atau tambahkan groups["*"] untuk menerima semua grup sambil tetap mempertahankan otorisasi pengirim di bawah groupPolicy dan groupAllowFrom.Peringatan runtime Bun
Peringatan runtime Bun
Prompt sistem
WhatsApp mendukung prompt sistem bergaya Telegram untuk grup dan chat langsung melalui petagroups dan direct.
Hierarki resolusi untuk pesan grup:
Peta groups efektif ditentukan terlebih dahulu: jika akun mendefinisikan groups miliknya sendiri, itu sepenuhnya menggantikan peta groups root (tanpa deep merge). Lookup prompt kemudian berjalan pada satu peta yang dihasilkan:
- Prompt sistem khusus grup (
groups["<groupId>"].systemPrompt): digunakan ketika entri grup spesifik ada di peta dan kuncisystemPrompt-nya didefinisikan. JikasystemPromptadalah string kosong (""), wildcard ditekan dan tidak ada prompt sistem yang diterapkan. - Prompt sistem wildcard grup (
groups["*"].systemPrompt): digunakan ketika entri grup spesifik sepenuhnya tidak ada dari peta, atau ketika entri itu ada tetapi tidak mendefinisikan kuncisystemPrompt.
direct efektif ditentukan terlebih dahulu: jika akun mendefinisikan direct miliknya sendiri, itu sepenuhnya menggantikan peta direct root (tanpa deep merge). Lookup prompt kemudian berjalan pada satu peta yang dihasilkan:
- Prompt sistem khusus langsung (
direct["<peerId>"].systemPrompt): digunakan ketika entri peer spesifik ada di peta dan kuncisystemPrompt-nya didefinisikan. JikasystemPromptadalah string kosong (""), wildcard ditekan dan tidak ada prompt sistem yang diterapkan. - Prompt sistem wildcard langsung (
direct["*"].systemPrompt): digunakan ketika entri peer spesifik sepenuhnya tidak ada dari peta, atau ketika entri itu ada tetapi tidak mendefinisikan kuncisystemPrompt.
dms tetap menjadi bucket override riwayat per-DM yang ringan (dms.<id>.historyLimit). Override prompt berada di bawah direct.groups root sengaja ditekan untuk semua akun dalam setup multi-akun — bahkan akun yang tidak mendefinisikan groups miliknya sendiri — untuk mencegah bot menerima pesan grup untuk grup yang bukan tempat bot tersebut berada. WhatsApp tidak menerapkan guard ini: groups root dan direct root selalu diwarisi oleh akun yang tidak mendefinisikan override tingkat akun, terlepas dari berapa banyak akun yang dikonfigurasi. Dalam setup WhatsApp multi-akun, jika Anda menginginkan prompt grup atau langsung per akun, definisikan peta lengkap di bawah setiap akun secara eksplisit alih-alih mengandalkan default tingkat root.
Perilaku penting:
channels.whatsapp.groupsadalah peta konfigurasi per grup sekaligus allowlist grup tingkat chat. Pada scope root atau akun,groups["*"]berarti “semua grup diterima” untuk scope tersebut.- Hanya tambahkan wildcard grup
systemPromptketika Anda sudah ingin scope tersebut menerima semua grup. Jika Anda masih ingin hanya kumpulan tetap ID grup yang memenuhi syarat, jangan gunakangroups["*"]untuk default prompt. Sebagai gantinya, ulangi prompt pada setiap entri grup yang secara eksplisit ada di allowlist. - Penerimaan grup dan otorisasi pengirim adalah pemeriksaan terpisah.
groups["*"]memperluas kumpulan grup yang dapat mencapai penanganan grup, tetapi itu sendiri tidak mengotorisasi setiap pengirim di grup tersebut. Akses pengirim tetap dikontrol secara terpisah olehchannels.whatsapp.groupPolicydanchannels.whatsapp.groupAllowFrom. channels.whatsapp.directtidak memiliki efek samping yang sama untuk DM.direct["*"]hanya menyediakan konfigurasi chat langsung default setelah DM sudah diterima olehdmPolicyditambahallowFromatau aturan pairing-store.
Penunjuk referensi konfigurasi
Referensi utama: Field WhatsApp bernilai tinggi:- akses:
dmPolicy,allowFrom,groupPolicy,groupAllowFrom,groups - pengiriman:
textChunkLimit,chunkMode,mediaMaxMb,sendReadReceipts,ackReaction,reactionLevel - multi-akun:
accounts.<id>.enabled,accounts.<id>.authDir, penimpaan tingkat akun - operasi:
configWrites,debounceMs,web.enabled,web.heartbeatSeconds,web.reconnect.*,web.whatsapp.* - perilaku sesi:
session.dmScope,historyLimit,dmHistoryLimit,dms.<id>.historyLimit - prompt:
groups.<id>.systemPrompt,groups["*"].systemPrompt,direct.<id>.systemPrompt,direct["*"].systemPrompt