इंस्टॉल करें (मांग पर)
- ऑनबोर्डिंग (
openclaw onboard) औरopenclaw channels add --channel whatsappपहली बार इसे चुनने पर WhatsApp Plugin इंस्टॉल करने का संकेत देते हैं। openclaw channels login --channel whatsappभी Plugin अभी मौजूद न होने पर इंस्टॉल प्रवाह पेश करता है।- Dev चैनल + git checkout: स्थानीय Plugin पथ पर डिफ़ॉल्ट करता है।
- Stable/Beta: पहले ClawHub से आधिकारिक
@openclaw/whatsappPlugin इंस्टॉल करता है, और fallback के रूप में npm का उपयोग करता है। - WhatsApp रनटाइम core OpenClaw npm पैकेज के बाहर वितरित किया जाता है ताकि WhatsApp-विशिष्ट रनटाइम निर्भरताएं बाहरी Plugin के साथ रहें।
@openclaw/whatsapp) का उपयोग केवल तब करें जब आपको registry
fallback की ज़रूरत हो। exact version केवल तब pin करें जब आपको reproducible install चाहिए।
Pairing
Channel troubleshooting
Gateway configuration
त्वरित सेटअप
Link WhatsApp (QR)
परिनियोजन patterns
Dedicated number (recommended)
Dedicated number (recommended)
- OpenClaw के लिए अलग WhatsApp identity
- अधिक स्पष्ट DM allowlists और routing boundaries
- self-chat भ्रम की कम संभावना
Personal-number fallback
Personal-number fallback
dmPolicy: "allowlist"allowFromमें आपका personal number शामिल होता हैselfChatMode: true
allowFrom पर आधारित होती हैं।WhatsApp Web-only channel scope
WhatsApp Web-only channel scope
Baileys) है।built-in chat-channel registry में कोई अलग Twilio WhatsApp messaging channel नहीं है।रनटाइम model
- Gateway WhatsApp socket और reconnect loop का स्वामी होता है।
- reconnect watchdog केवल inbound app-message volume नहीं, बल्कि WhatsApp Web transport activity का उपयोग करता है, इसलिए quiet linked-device session को केवल इसलिए restart नहीं किया जाता कि हाल में किसी ने message नहीं भेजा है। लंबा application-silence cap फिर भी reconnect force करता है यदि transport frames आते रहें लेकिन watchdog window के लिए कोई application messages handle न हों; हाल में active session के transient reconnect के बाद, वह application-silence check पहले recovery window के लिए normal message timeout का उपयोग करता है।
- Baileys socket timings
web.whatsapp.*के अंतर्गत explicit हैं:keepAliveIntervalMsWhatsApp Web application pings नियंत्रित करता है,connectTimeoutMsopening handshake timeout नियंत्रित करता है, औरdefaultQueryTimeoutMsBaileys query waits के साथ OpenClaw के local outbound send/presence और inbound read-receipt operation bounds नियंत्रित करता है। - Outbound sends को target account के लिए active WhatsApp listener चाहिए।
- Group sends text और media captions में
@+<digits>और@<digits>tokens के लिए native mention metadata attach करते हैं जब token वर्तमान WhatsApp participant metadata से match करता है, जिसमें LID-backed groups शामिल हैं। - Status और broadcast chats ignore किए जाते हैं (
@status,@broadcast)। - reconnect watchdog केवल inbound app-message volume नहीं, बल्कि WhatsApp Web transport activity का पालन करता है: quiet linked-device sessions transport frames जारी रहने तक up रहते हैं, लेकिन transport stall बाद के remote disconnect path से काफी पहले reconnect force करता है।
- Direct chats DM session rules का उपयोग करते हैं (
session.dmScope; defaultmainDMs को agent main session में collapse करता है)। - Group sessions isolated हैं (
agent:<agentId>:whatsapp:group:<jid>)। - WhatsApp Channels/Newsletters अपने native
@newsletterJID के साथ explicit outbound targets हो सकते हैं। Outbound newsletter sends DM session semantics के बजाय channel session metadata (agent:<agentId>:whatsapp:channel:<jid>) का उपयोग करते हैं। - WhatsApp Web transport gateway host पर standard proxy environment variables (
HTTPS_PROXY,HTTP_PROXY,NO_PROXY/ lowercase variants) का सम्मान करता है। channel-specific WhatsApp proxy settings की तुलना में host-level proxy config को प्राथमिकता दें। - जब
messages.removeAckAfterReplyenabled होता है, OpenClaw visible reply deliver होने के बाद WhatsApp ack reaction clear कर देता है।
Approval prompts
WhatsApp👍 / 👎 reactions के साथ exec और plugin approval prompts render कर सकता है। Delivery
top-level approval forwarding config द्वारा नियंत्रित होती है:
approvals.exec और approvals.plugin independent हैं। WhatsApp को channel के रूप में enable करना केवल
transport link करता है; यह approval prompts तब तक नहीं भेजता जब तक matching approval family enabled न हो
और WhatsApp पर route न करे। Session mode native emoji approvals केवल उन approvals के लिए deliver करता है जो
WhatsApp से originate होती हैं। Target mode explicit WhatsApp targets के लिए shared forwarding pipeline का उपयोग करता है
और अलग approver-DM fanout create नहीं करता।
WhatsApp approval reactions को allowFrom या "*" से explicit WhatsApp approvers चाहिए।
defaultTo ordinary default message targets नियंत्रित करता है; यह approval approver नहीं है। Manual
/approve commands approval resolution से पहले अभी भी normal WhatsApp sender authorization path से गुजरती हैं।
Plugin hooks और गोपनीयता
WhatsApp inbound messages में personal message content, phone numbers, group identifiers, sender names, और session correlation fields हो सकते हैं। इसी कारण, WhatsApp inboundmessage_received hook payloads को plugins तक broadcast नहीं करता
जब तक आप explicit opt in न करें:
Access control और activation
- DM policy
- Group policy + allowlists
- Mentions + /activation
channels.whatsapp.dmPolicy direct chat access नियंत्रित करता है:pairing(default)allowlistopen(allowFromमें"*"शामिल होना आवश्यक है)disabled
allowFrom E.164-style numbers स्वीकार करता है (internally normalized)।allowFrom DM sender access-control list है। यह WhatsApp group JIDs या @newsletter channel JIDs को explicit outbound sends gate नहीं करता।Multi-account override: channels.whatsapp.accounts.<id>.dmPolicy (और allowFrom) उस account के लिए channel-level defaults पर precedence लेते हैं।रनटाइम behavior details:- pairings channel allow-store में persisted होती हैं और configured
allowFromके साथ merge की जाती हैं - scheduled automation और Heartbeat recipient fallback explicit delivery targets या configured
allowFromका उपयोग करते हैं; DM pairing approvals implicit Cron या Heartbeat recipients नहीं हैं - यदि कोई allowlist configured नहीं है, linked self number default रूप से allowed होता है
- OpenClaw outbound
fromMeDMs (linked device से खुद को भेजे गए messages) को कभी auto-pair नहीं करता
Configured ACP bindings
WhatsApp top-levelbindings[] entries के साथ persistent ACP bindings support करता है:
- सीधे चैट
+15555550123जैसे E.164 नंबरों से मेल खाते हैं। - समूह
120363424282127706@g.usजैसे WhatsApp समूह JID से मेल खाते हैं। - OpenClaw द्वारा कॉन्फ़िगर किया गया ACP सत्र मौजूद है यह सुनिश्चित करने से पहले समूह allowlist, प्रेषक नीति, और mention या activation gating चलते हैं।
- मेल खाई हुई कॉन्फ़िगर की गई ACP binding route की स्वामी होती है। WhatsApp broadcast समूह उस turn को सामान्य WhatsApp sessions में fan out नहीं करते।
निजी-नंबर और self-chat व्यवहार
जब लिंक किया गया self numberallowFrom में भी मौजूद होता है, तो WhatsApp self-chat safeguards सक्रिय होते हैं:
- self-chat turns के लिए read receipts छोड़ें
- mention-JID auto-trigger व्यवहार को अनदेखा करें, जो अन्यथा आपको ही ping करता
- यदि
messages.responsePrefixunset है, तो self-chat replies डिफ़ॉल्ट रूप से[{identity.name}]या[openclaw]होते हैं
संदेश normalization और context
Inbound envelope + reply context
Inbound envelope + reply context
ReplyToId, ReplyToBody, ReplyToSender, sender JID/E.164)।
जब quoted reply target downloadable media होता है, OpenClaw उसे सामान्य inbound media store के माध्यम से सहेजता है और उसे MediaPath/MediaType के रूप में expose करता है ताकि agent केवल <media:image> देखने के बजाय संदर्भित image inspect कर सके।Media placeholders और location/contact extraction
Media placeholders और location/contact extraction
<media:image><media:video><media:audio><media:document><media:sticker>
<media:audio> होती है, ताकि voice note में bot mention कहना reply trigger कर सके। यदि transcript अब भी bot का mention नहीं करता, तो raw placeholder के बजाय transcript pending group history में रखा जाता है।Location bodies संक्षिप्त coordinate text का उपयोग करती हैं। Location labels/comments और contact/vCard details fenced untrusted metadata के रूप में render किए जाते हैं, inline prompt text के रूप में नहीं।Pending group history injection
Pending group history injection
- default limit:
50 - config:
channels.whatsapp.historyLimit - fallback:
messages.groupChat.historyLimit 0disables
[Chat messages since your last reply - for context][Current message - respond to this]
Read receipts
Read receipts
Delivery, chunking, और media
Text chunking
Text chunking
- default chunk limit:
channels.whatsapp.textChunkLimit = 4000 channels.whatsapp.chunkMode = "length" | "newline"newlinemode paragraph boundaries (blank lines) को प्राथमिकता देता है, फिर length-safe chunking पर fallback करता है
Outbound media behavior
Outbound media behavior
- image, video, audio (PTT voice-note), और document payloads का समर्थन करता है
- audio media Baileys
audiopayload के माध्यम सेptt: trueके साथ भेजा जाता है, ताकि WhatsApp clients उसे push-to-talk voice note के रूप में render करें - reply payloads
audioAsVoiceको preserve करते हैं; WhatsApp के लिए TTS voice-note output इसी PTT path पर रहता है, भले ही provider MP3 या WebM लौटाए - native Ogg/Opus audio voice-note compatibility के लिए
audio/ogg; codecs=opusके रूप में भेजा जाता है - Microsoft Edge TTS MP3/WebM output सहित non-Ogg audio को PTT delivery से पहले
ffmpegसे 48 kHz mono Ogg/Opus में transcode किया जाता है /tts latestlatest assistant reply को एक voice note के रूप में भेजता है और उसी reply के लिए repeat sends suppress करता है;/tts chat on|off|defaultcurrent WhatsApp chat के लिए auto-TTS नियंत्रित करता है- animated GIF playback video sends पर
gifPlayback: trueके माध्यम से supported है forceDocument/asDocumentoutbound images, GIFs, और videos को Baileys document payload के माध्यम से भेजता है ताकि resolved filename और MIME type preserve करते हुए WhatsApp media compression से बचा जा सके- multi-media reply payloads भेजते समय captions पहले media item पर apply किए जाते हैं, लेकिन PTT voice notes audio पहले और visible text अलग से भेजते हैं क्योंकि WhatsApp clients voice-note captions को consistently render नहीं करते
- media source HTTP(S),
file://, या local paths हो सकता है
Media size limits और fallback behavior
Media size limits और fallback behavior
- inbound media save cap:
channels.whatsapp.mediaMaxMb(default50) - outbound media send cap:
channels.whatsapp.mediaMaxMb(default50) - per-account overrides
channels.whatsapp.accounts.<accountId>.mediaMaxMbका उपयोग करते हैं - images को limits में fit करने के लिए auto-optimized (resize/quality sweep) किया जाता है, जब तक
forceDocument/asDocumentdocument delivery का अनुरोध न करे - media send failure पर, first-item fallback response को silently drop करने के बजाय text warning भेजता है
Reply quoting
WhatsApp native reply quoting का समर्थन करता है, जहाँ outbound replies inbound message को visibly quote करते हैं। इसेchannels.whatsapp.replyToMode से नियंत्रित करें।
| मान | व्यवहार |
|---|---|
"off" | कभी उद्धृत न करें; सादे संदेश के रूप में भेजें |
"first" | केवल पहले आउटबाउंड उत्तर खंड को उद्धृत करें |
"all" | हर आउटबाउंड उत्तर खंड को उद्धृत करें |
"batched" | तुरंत दिए गए उत्तरों को बिना उद्धरण छोड़े, कतारबद्ध बैच किए गए उत्तरों को उद्धृत करें |
"off" है। प्रति-खाता ओवरराइड channels.whatsapp.accounts.<id>.replyToMode का उपयोग करते हैं।
प्रतिक्रिया स्तर
channels.whatsapp.reactionLevel नियंत्रित करता है कि एजेंट WhatsApp पर emoji प्रतिक्रियाओं का कितना व्यापक उपयोग करता है:
| स्तर | स्वीकृति प्रतिक्रियाएँ | एजेंट-आरंभित प्रतिक्रियाएँ | विवरण |
|---|---|---|---|
"off" | नहीं | नहीं | कोई प्रतिक्रिया नहीं |
"ack" | हाँ | नहीं | केवल स्वीकृति प्रतिक्रियाएँ (उत्तर से पहले प्राप्ति) |
"minimal" | हाँ | हाँ (सावधानीपूर्ण) | सावधानीपूर्ण मार्गदर्शन के साथ स्वीकृति + एजेंट प्रतिक्रियाएँ |
"extensive" | हाँ | हाँ (प्रोत्साहित) | प्रोत्साहित मार्गदर्शन के साथ स्वीकृति + एजेंट प्रतिक्रियाएँ |
"minimal"।
प्रति-खाता ओवरराइड channels.whatsapp.accounts.<id>.reactionLevel का उपयोग करते हैं।
स्वीकृति प्रतिक्रियाएँ
WhatsAppchannels.whatsapp.ackReaction के माध्यम से इनबाउंड प्राप्ति पर तुरंत स्वीकृति प्रतिक्रियाओं का समर्थन करता है।
स्वीकृति प्रतिक्रियाएँ reactionLevel से नियंत्रित होती हैं — जब reactionLevel "off" होता है, तो वे दबा दी जाती हैं।
- इनबाउंड स्वीकार होने के तुरंत बाद भेजा जाता है (उत्तर से पहले)
- यदि
ackReactionबिनाemojiके मौजूद है, तो WhatsApp रूट किए गए एजेंट की पहचान emoji का उपयोग करता है, और उपलब्ध न होने पर ”👀” पर लौटता है; कोई स्वीकृति प्रतिक्रिया न भेजने के लिएackReactionछोड़ दें याemoji: ""सेट करें - विफलताएँ लॉग की जाती हैं, लेकिन सामान्य उत्तर डिलीवरी को ब्लॉक नहीं करतीं
- समूह मोड
mentions, उल्लेख से ट्रिगर हुए टर्न पर प्रतिक्रिया देता है; समूह सक्रियणalwaysइस जाँच के लिए bypass की तरह काम करता है - WhatsApp
channels.whatsapp.ackReactionका उपयोग करता है (legacymessages.ackReactionयहाँ उपयोग नहीं होता)
जीवनचक्र स्थिति प्रतिक्रियाएँ
messages.statusReactions.enabled: true सेट करें ताकि WhatsApp किसी टर्न के दौरान स्थिर प्राप्ति emoji छोड़ने के बजाय स्वीकृति प्रतिक्रिया को बदल सके। सक्षम होने पर, OpenClaw कतारबद्ध, सोच रहा है, टूल गतिविधि, Compaction, पूर्ण, और त्रुटि जैसी जीवनचक्र स्थितियों के लिए उसी इनबाउंड संदेश प्रतिक्रिया स्लॉट का उपयोग करता है।
channels.whatsapp.ackReactionअब भी नियंत्रित करता है कि स्थिति प्रतिक्रियाएँ सीधे संदेशों और समूहों के लिए पात्र हैं या नहीं।- कतारबद्ध स्थिति प्रतिक्रिया, सादी स्वीकृति प्रतिक्रियाओं वाले उसी प्रभावी स्वीकृति emoji का उपयोग करती है।
- WhatsApp में प्रति संदेश एक bot प्रतिक्रिया स्लॉट होता है, इसलिए जीवनचक्र अपडेट वर्तमान प्रतिक्रिया को उसी स्थान पर बदल देते हैं।
messages.removeAckAfterReply: trueकॉन्फ़िगर किए गए पूर्ण/त्रुटि होल्ड के बाद अंतिम स्थिति प्रतिक्रिया साफ़ करता है।- टूल emoji श्रेणियों में
tool,coding,web,deploy,build, औरconciergeशामिल हैं।
बहु-खाता और क्रेडेंशियल
खाता चयन और डिफ़ॉल्ट
खाता चयन और डिफ़ॉल्ट
- खाता ids
channels.whatsapp.accountsसे आते हैं - डिफ़ॉल्ट खाता चयन: यदि मौजूद हो तो
default, अन्यथा पहला कॉन्फ़िगर किया गया खाता id (क्रमबद्ध) - lookup के लिए खाता ids आंतरिक रूप से सामान्यीकृत किए जाते हैं
क्रेडेंशियल पथ और legacy संगतता
क्रेडेंशियल पथ और legacy संगतता
- वर्तमान auth पथ:
~/.openclaw/credentials/whatsapp/<accountId>/creds.json - backup फ़ाइल:
creds.json.bak ~/.openclaw/credentials/में legacy डिफ़ॉल्ट auth अब भी डिफ़ॉल्ट-खाता flows के लिए पहचाना/माइग्रेट किया जाता है
लॉगआउट व्यवहार
लॉगआउट व्यवहार
openclaw channels logout --channel whatsapp [--account <id>] उस खाते के लिए WhatsApp auth स्थिति साफ़ करता है।जब Gateway पहुँच योग्य हो, तो logout पहले चुने गए खाते के लिए लाइव WhatsApp listener रोकता है, ताकि लिंक किया गया session अगले restart तक संदेश प्राप्त करता न रहे। openclaw channels remove --channel whatsapp खाता config अक्षम करने या हटाने से पहले लाइव listener भी रोकता है।legacy auth directories में, Baileys auth files हटाई जाती हैं जबकि oauth.json संरक्षित रहता है।टूल, कार्रवाइयाँ, और config writes
- एजेंट टूल समर्थन में WhatsApp reaction action (
react) शामिल है। - Action gates:
channels.whatsapp.actions.reactionschannels.whatsapp.actions.polls
- Channel-initiated config writes डिफ़ॉल्ट रूप से सक्षम हैं (
channels.whatsapp.configWrites=falseके माध्यम से अक्षम करें)।
समस्या निवारण
लिंक नहीं है (QR आवश्यक)
लिंक नहीं है (QR आवश्यक)
लिंक है लेकिन disconnected / reconnect loop
लिंक है लेकिन disconnected / reconnect loop
status=408 Request Time-out Connection was lost दिखाते हैं, तो web.whatsapp के अंतर्गत Baileys सॉकेट टाइमिंग को समायोजित करें। पहले keepAliveIntervalMs को अपने नेटवर्क के idle timeout से कम करें और धीमे या lossy लिंक पर connectTimeoutMs बढ़ाएं:~/.openclaw/logs/whatsapp-health.log में Gateway inactive लिखा है लेकिन
openclaw gateway status और openclaw channels status --probe दिखाते हैं कि
gateway और WhatsApp स्वस्थ हैं, तो openclaw doctor चलाएं। Linux पर, doctor
legacy crontab entries के बारे में चेतावनी देता है जो अभी भी
~/.openclaw/bin/ensure-whatsapp.sh को invoke करती हैं; उन stale entries को
crontab -e से हटाएं क्योंकि cron में systemd user-bus environment नहीं हो सकता और
वह पुराने script को gateway health गलत report करवाता है।जरूरत हो तो, channels login से फिर से link करें।QR लॉगिन proxy के पीछे timeout हो जाता है
QR लॉगिन proxy के पीछे timeout हो जाता है
openclaw channels login --channel whatsapp उपयोग योग्य QR code दिखाने से पहले status=408 Request Time-out या TLS socket disconnect के साथ fail हो जाता है।WhatsApp Web login gateway host के standard proxy environment (HTTPS_PROXY, HTTP_PROXY, lowercase variants, और NO_PROXY) का उपयोग करता है। सत्यापित करें कि gateway process proxy env inherit करता है और NO_PROXY mmg.whatsapp.net से match नहीं करता।भेजते समय कोई active listener नहीं
भेजते समय कोई active listener नहीं
Reply transcript में दिखता है लेकिन WhatsApp में नहीं
Reply transcript में दिखता है लेकिन WhatsApp में नहीं
Group messages अप्रत्याशित रूप से ignore हो रहे हैं
Group messages अप्रत्याशित रूप से ignore हो रहे हैं
groupPolicygroupAllowFrom/allowFromgroupsallowlist entries- mention gating (
requireMention+ mention patterns) openclaw.json(JSON5) में duplicate keys: बाद की entries पहले वाली को override करती हैं, इसलिए हर scope में एक हीgroupPolicyरखें
channels.whatsapp.groups मौजूद है, तो WhatsApp दूसरे groups के messages अभी भी observe कर सकता है, लेकिन OpenClaw उन्हें session routing से पहले drop कर देता है। group JID को channels.whatsapp.groups में जोड़ें या सभी groups को admit करने के लिए groups["*"] जोड़ें, जबकि sender authorization को groupPolicy और groupAllowFrom के अंतर्गत रखें।Bun runtime warning
Bun runtime warning
System prompts
WhatsAppgroups और direct maps के जरिए groups और direct chats के लिए Telegram-style system prompts support करता है।
group messages के लिए resolution hierarchy:
प्रभावी groups map पहले निर्धारित किया जाता है: यदि account अपने groups परिभाषित करता है, तो यह root groups map को पूरी तरह replace करता है (कोई deep merge नहीं)। Prompt lookup फिर resulting single map पर चलता है:
- Group-specific system prompt (
groups["<groupId>"].systemPrompt): तब उपयोग किया जाता है जब specific group entry map में मौजूद हो और उसकीsystemPromptkey परिभाषित हो। यदिsystemPromptempty string ("") है, तो wildcard दबा दिया जाता है और कोई system prompt apply नहीं होता। - Group wildcard system prompt (
groups["*"].systemPrompt): तब उपयोग किया जाता है जब specific group entry map से पूरी तरह absent हो, या वह मौजूद हो लेकिन कोईsystemPromptkey define न करती हो।
direct map पहले निर्धारित किया जाता है: यदि account अपना direct परिभाषित करता है, तो यह root direct map को पूरी तरह replace करता है (कोई deep merge नहीं)। Prompt lookup फिर resulting single map पर चलता है:
- Direct-specific system prompt (
direct["<peerId>"].systemPrompt): तब उपयोग किया जाता है जब specific peer entry map में मौजूद हो और उसकीsystemPromptkey परिभाषित हो। यदिsystemPromptempty string ("") है, तो wildcard दबा दिया जाता है और कोई system prompt apply नहीं होता। - Direct wildcard system prompt (
direct["*"].systemPrompt): तब उपयोग किया जाता है जब specific peer entry map से पूरी तरह absent हो, या वह मौजूद हो लेकिन कोईsystemPromptkey define न करती हो।
dms lightweight per-DM history override bucket (dms.<id>.historyLimit) बना रहता है। Prompt overrides direct के अंतर्गत रहते हैं।groups जानबूझकर दबा दिया जाता है — उन accounts के लिए भी जो अपने groups define नहीं करते — ताकि bot उन groups के group messages receive न करे जिनका वह सदस्य नहीं है। WhatsApp यह guard apply नहीं करता: root groups और root direct हमेशा उन accounts द्वारा inherit किए जाते हैं जो कोई account-level override define नहीं करते, चाहे कितने भी accounts configured हों। multi-account WhatsApp setup में, यदि आप per-account group या direct prompts चाहते हैं, तो root-level defaults पर निर्भर रहने के बजाय हर account के अंतर्गत full map स्पष्ट रूप से define करें।
महत्वपूर्ण behavior:
channels.whatsapp.groupsper-group config map और chat-level group allowlist दोनों है। root या account scope में,groups["*"]का मतलब उस scope के लिए “सभी groups admit किए जाते हैं” है।- wildcard group
systemPromptकेवल तब जोड़ें जब आप पहले से चाहते हों कि वह scope सभी groups को admit करे। यदि आप अब भी केवल group IDs के fixed set को eligible रखना चाहते हैं, तो prompt default के लिएgroups["*"]का उपयोग न करें। इसके बजाय, हर explicitly allowlisted group entry पर prompt दोहराएं। - Group admission और sender authorization अलग-अलग checks हैं।
groups["*"]उन groups के set को widen करता है जो group handling तक पहुंच सकते हैं, लेकिन यह अपने आप उन groups में हर sender को authorize नहीं करता। Sender access अब भीchannels.whatsapp.groupPolicyऔरchannels.whatsapp.groupAllowFromद्वारा अलग से नियंत्रित होता है। channels.whatsapp.directका DMs के लिए वही side effect नहीं है।direct["*"]केवल तब default direct-chat config प्रदान करता है जब कोई DM पहले सेdmPolicyplusallowFromया pairing-store rules द्वारा admit हो चुका हो।
Configuration reference pointers
Primary reference: High-signal WhatsApp fields:- access:
dmPolicy,allowFrom,groupPolicy,groupAllowFrom,groups - delivery:
textChunkLimit,chunkMode,mediaMaxMb,sendReadReceipts,ackReaction,reactionLevel - multi-account:
accounts.<id>.enabled,accounts.<id>.authDir, account-level overrides - operations:
configWrites,debounceMs,web.enabled,web.heartbeatSeconds,web.reconnect.*,web.whatsapp.* - session behavior:
session.dmScope,historyLimit,dmHistoryLimit,dms.<id>.historyLimit - prompts:
groups.<id>.systemPrompt,groups["*"].systemPrompt,direct.<id>.systemPrompt,direct["*"].systemPrompt