इंस्टॉल करें
openclaw onboard और openclaw channels add --channel whatsapp पहली बार इसे चुनने पर Plugin इंस्टॉल करने के लिए कहते हैं; यदि Plugin मौजूद नहीं है, तो openclaw channels login --channel whatsapp वही इंस्टॉल प्रवाह प्रदान करता है। डेवलपमेंट चेकआउट स्थानीय Plugin पथ का उपयोग करते हैं; स्थिर/बीटा इंस्टॉल पहले ClawHub से @openclaw/whatsapp इंस्टॉल करते हैं और विफल होने पर npm का उपयोग करते हैं। WhatsApp रनटाइम मुख्य OpenClaw npm पैकेज के बाहर वितरित होता है, इसलिए इसकी रनटाइम निर्भरताएँ बाहरी Plugin के साथ रहती हैं। मैन्युअल इंस्टॉल:
@openclaw/whatsapp) का उपयोग केवल रजिस्ट्री फ़ॉलबैक के लिए करें; पुनरुत्पाद्य इंस्टॉल के लिए ही सटीक संस्करण पिन करें।
पेयरिंग
चैनल समस्या निवारण
Gateway कॉन्फ़िगरेशन
त्वरित सेटअप
पहुँच नीति कॉन्फ़िगर करें
WhatsApp लिंक करें (QR)
Gateway शुरू करें
पहले DM पहुँच अनुरोध को स्वीकृत करें (पेयरिंग मोड)
डिप्लॉयमेंट पैटर्न
समर्पित नंबर (सुझाया गया)
समर्पित नंबर (सुझाया गया)
- OpenClaw के लिए अलग WhatsApp पहचान
- अधिक स्पष्ट DM अनुमति-सूचियाँ और रूटिंग सीमाएँ
- स्वयं-चैट संबंधी भ्रम की कम संभावना
व्यक्तिगत नंबर फ़ॉलबैक
व्यक्तिगत नंबर फ़ॉलबैक
dmPolicy: "allowlist", आपके अपने नंबर सहित allowFrom, selfChatMode: true। रनटाइम स्वयं-चैट सुरक्षा लिंक किए गए स्वयं के नंबर और allowFrom के आधार पर काम करती है।रनटाइम मॉडल
- Gateway WhatsApp सॉकेट और पुनः कनेक्ट लूप का स्वामी है।
- एक वॉचडॉग दो संकेतों को स्वतंत्र रूप से ट्रैक करता है: मूल WhatsApp Web ट्रांसपोर्ट गतिविधि और एप्लिकेशन-संदेश गतिविधि। हाल में कोई संदेश न आने मात्र से किसी शांत लेकिन कनेक्टेड सत्र को पुनः शुरू नहीं किया जाता; यह केवल तभी बलपूर्वक पुनः कनेक्ट करता है, जब ट्रांसपोर्ट फ़्रेम एक निश्चित आंतरिक अवधि (उपयोगकर्ता द्वारा कॉन्फ़िगर करने योग्य नहीं) तक आना बंद कर दें या एप्लिकेशन संदेश सामान्य संदेश टाइमआउट के 4x से अधिक समय तक न आएँ। हाल में सक्रिय रहे सत्र के पुनः कनेक्ट होने के तुरंत बाद, पहली अवधि 4x अवधि के बजाय छोटे सामान्य संदेश टाइमआउट का उपयोग करती है। उस पुनः कनेक्ट के दौरान Baileys द्वारा पहले ही डिलीवर किए गए ऑफ़लाइन संदेशों का OpenClaw स्वतः उत्तर दे सकता है, जिसकी सीमा आने वाले संदेश-ID की डीडुप्लिकेशन अवधि से निर्धारित होती है; आरंभिक स्टार्टअप छोटे पुराने-इतिहास सुरक्षा उपाय को बनाए रखता है।
- आउटबाउंड प्रेषण के लिए लक्ष्य खाते का सक्रिय WhatsApp लिसनर आवश्यक है; अन्यथा प्रेषण तुरंत विफल हो जाता है।
- जब टोकन वर्तमान प्रतिभागी मेटाडेटा से मेल खाता है, तब समूह प्रेषण
@+<digits>और@<digits>टोकन (टेक्स्ट और मीडिया कैप्शन में) के लिए नेटिव उल्लेख मेटाडेटा जोड़ते हैं; इसमें LID-समर्थित समूह भी शामिल हैं। - स्टेटस और ब्रॉडकास्ट चैट (
@status,@broadcast) अनदेखी की जाती हैं। - प्रत्यक्ष चैट DM सत्र नियमों का उपयोग करती हैं (
session.dmScope; डिफ़ॉल्टmainDM को एजेंट के मुख्य सत्र में समेट देता है)। समूह सत्र प्रत्येक JID के अनुसार अलग रखे जाते हैं (agent:<agentId>:whatsapp:group:<jid>)। - WhatsApp चैनल/न्यूज़लेटर अपने नेटिव
@newsletterJID के माध्यम से स्पष्ट आउटबाउंड लक्ष्य हो सकते हैं, जो DM अर्थविज्ञान के बजाय चैनल सत्र मेटाडेटा (agent:<agentId>:whatsapp:channel:<jid>) का उपयोग करते हैं। - WhatsApp Web ट्रांसपोर्ट Gateway होस्ट पर मानक प्रॉक्सी एनवायरनमेंट वेरिएबल (
HTTPS_PROXY,HTTP_PROXY,NO_PROXY, लोअरकेस रूपांतर) का पालन करता है। प्रति-चैनल सेटिंग के बजाय होस्ट-स्तरीय प्रॉक्सी कॉन्फ़िगरेशन को प्राथमिकता दें।
MeowCaller से वर्तमान अनुरोधकर्ता को कॉल करें (प्रायोगिक)
Plugin WhatsApp से आरंभ होने वाले एजेंट टर्न मेंwhatsapp_call उपलब्ध करा सकता है। यह वर्तमान अधिकृत अनुरोधकर्ता को WhatsApp वॉइस कॉल करने और उनके उत्तर देने के बाद OpenClaw TTS संदेश चलाने के लिए MeowCaller का उपयोग करता है। टूल में गंतव्य नंबर का कोई पैरामीटर नहीं है, इसलिए कोई प्रॉम्प्ट कॉल को रीडायरेक्ट नहीं कर सकता। डिफ़ॉल्ट रूप से अक्षम है।
प्रायोगिक कॉल सक्षम करें
actions.calls: true जोड़ें और Gateway पुनः शुरू करें:false होने पर, OpenClaw whatsapp_call टूल उपलब्ध नहीं कराता।समीक्षित MeowCaller CLI इंस्टॉल करें
PATH पर meowcaller निष्पादनयोग्य फ़ाइल की अपेक्षा करता है। MeowCaller PR #7 के मर्ज होने तक समीक्षित ब्रांच बिल्ड करें:$HOME/.local/bin, Gateway सेवा के PATH में है। इस संशोधन में स्पष्ट pair और केवल-प्रेषण notify कमांड हैं; notify कोई माइक्रोफ़ोन, स्पीकर, वीडियो डिवाइस या निदान कैप्चर नहीं खोलता। इसके स्थान पर अपस्ट्रीम उदाहरण CLI के play कमांड का उपयोग न करें।MeowCaller लिंक्ड डिवाइस पेयर करें
whatsapp_call स्थिति क्रिया खाते-विशिष्ट स्टेट डायरेक्टरी और पेयरिंग कमांड की जानकारी देती है)। डिफ़ॉल्ट खाते के लिए:MeowCaller linked device ready की प्रतीक्षा करें। wa-voip.db को निजी रखें—यह MeowCaller सत्र है। गैर-डिफ़ॉल्ट खातों को स्थिति क्रिया से अपना स्टोर पथ मिलता है; Windows पर उसका PowerShell कमांड चलाएँ।TTS कॉन्फ़िगर करें और WhatsApp से कॉल करें
Call me and say the build finished. जैसा अनुरोध भेजें। टूल विश्वसनीय इनबाउंड संदर्भ से प्रेषक निर्धारित करता है, अस्थायी निजी WAV फ़ाइल संश्लेषित करता है, सीमित कॉल अवधि के लिए MeowCaller चलाता है और बाद में ऑडियो फ़ाइल मिटा देता है। OpenClaw खाते का स्टोर स्पष्ट रूप से पास करता है, उत्तर/प्लेबैक/कॉल समाप्ति के बाद शून्य एग्ज़िट स्थिति की प्रतीक्षा करता है और टाइमआउट या गैर-शून्य एग्ज़िट को विफल टूल कॉल मानता है।स्वीकृति प्रॉम्प्ट
WhatsApp निष्पादन और Plugin स्वीकृति प्रॉम्प्ट को👍/👎 प्रतिक्रियाओं के रूप में रेंडर कर सकता है, जिन्हें शीर्ष-स्तरीय स्वीकृति फ़ॉरवर्डिंग कॉन्फ़िगरेशन नियंत्रित करता है:
approvals.exec और approvals.plugin स्वतंत्र हैं; WhatsApp को चैनल के रूप में सक्षम करना केवल ट्रांसपोर्ट लिंक करता है और तब तक कुछ नहीं भेजता, जब तक मिलान करने वाला स्वीकृति परिवार सक्षम करके वहाँ रूट न किया गया हो। सत्र मोड केवल WhatsApp से उत्पन्न स्वीकृतियों के लिए नेटिव इमोजी स्वीकृतियाँ डिलीवर करता है। लक्ष्य मोड स्पष्ट लक्ष्यों के लिए साझा फ़ॉरवर्डिंग पाइपलाइन का उपयोग करता है और अलग स्वीकर्ता-DM फ़ैनआउट नहीं बनाता।
WhatsApp स्वीकृति प्रतिक्रियाओं के लिए allowFrom (या "*") में स्पष्ट स्वीकर्ता आवश्यक हैं। defaultTo सामान्य डिफ़ॉल्ट संदेश लक्ष्य निर्धारित करता है, स्वीकर्ताओं की सूची नहीं। मैन्युअल /approve कमांड भी स्वीकृति समाधान से पहले सामान्य WhatsApp प्रेषक-प्राधिकरण पथ से गुजरते हैं।
प्रश्न प्रतिक्रियाएँ
एक गैर-गोपनीय, एकल-चयन प्रश्न और एक से चार विकल्पों वालेask_user प्रॉम्प्ट के लिए, WhatsApp विकल्प लेबल के पास 1️⃣ से 4️⃣ तक दिखाता है। उत्तर देने के लिए डिलीवर किए गए प्रॉम्प्ट पर मेल खाने वाली संख्या से प्रतिक्रिया दें। OpenClaw Gateway के माध्यम से संख्या को मानक विकल्प से मैप करता है; पुराने या डुप्लिकेट टैप अनदेखे किए जाते हैं। बहु-प्रश्न, बहु-चयन और मुक्त-टेक्स्ट प्रॉम्प्ट केवल टेक्स्ट-उत्तर बने रहते हैं। सामान्य WhatsApp DM/समूह प्रवेश नियम प्रतिक्रिया देने वाले प्रेषक को अधिकृत करते हैं।
Plugin हुक और गोपनीयता
इनबाउंड WhatsApp संदेशों में व्यक्तिगत सामग्री, फ़ोन नंबर, समूह पहचानकर्ता, प्रेषक नाम और सत्र सहसंबंध फ़ील्ड हो सकते हैं। जब तक आप ऑप्ट इन नहीं करते, WhatsApp इनबाउंडmessage_received हुक पेलोड को Plugins में ब्रॉडकास्ट नहीं करता:
channels.whatsapp.accounts.<id>.pluginHooks.messageReceived के अंतर्गत एक खाते तक सीमित करें। इसे केवल उन Plugins के लिए सक्षम करें, जिन पर आप इनबाउंड WhatsApp सामग्री और पहचानकर्ताओं के संबंध में भरोसा करते हैं।
पहुँच नियंत्रण और सक्रियण
- DM नीति
- समूह नीति और अनुमति-सूचियाँ
- उल्लेख और /activation
channels.whatsapp.dmPolicy:allowFrom E.164-शैली की संख्याएँ स्वीकार करता है (आंतरिक रूप से सामान्यीकृत)। यह केवल DM प्रेषक की पहुँच-नियंत्रण सूची है — यह समूह JID या @newsletter चैनल JID को स्पष्ट आउटबाउंड प्रेषण सीमित नहीं करता।बहु-अकाउंट ओवरराइड: channels.whatsapp.accounts.<id>.dmPolicy (और .allowFrom) उस अकाउंट के लिए चैनल-स्तरीय डिफ़ॉल्ट पर प्राथमिकता रखते हैं।रनटाइम संबंधी टिप्पणियाँ:- पेयरिंग चैनल अनुमति-स्टोर में बनी रहती हैं और कॉन्फ़िगर किए गए
allowFromके साथ मर्ज होती हैं - निर्धारित स्वचालन और Heartbeat प्राप्तकर्ता फ़ॉलबैक स्पष्ट डिलीवरी लक्ष्यों या कॉन्फ़िगर किए गए
allowFromका उपयोग करते हैं; DM पेयरिंग अनुमोदन स्वतः Cron/Heartbeat प्राप्तकर्ता नहीं होते - यदि कोई अनुमति-सूची कॉन्फ़िगर नहीं की गई है, तो लिंक किया गया स्वयं का नंबर डिफ़ॉल्ट रूप से अनुमत होता है
- OpenClaw आउटबाउंड
fromMeDM को कभी भी स्वतः पेयर नहीं करता (लिंक किए गए डिवाइस से स्वयं को भेजे गए संदेश)
कॉन्फ़िगर किए गए ACP बाइंडिंग
WhatsApp शीर्ष-स्तरीयbindings[] के माध्यम से स्थायी ACP बाइंडिंग का समर्थन करता है:
व्यक्तिगत नंबर और स्वयं-चैट व्यवहार
जब लिंक किया गया स्वयं का नंबरallowFrom में भी मौजूद होता है, तो स्वयं-चैट सुरक्षा उपाय सक्रिय हो जाते हैं: स्वयं-चैट टर्न के लिए पठन रसीदें छोड़ना, स्वयं को पिंग करने वाले उल्लेख-JID स्वतः-ट्रिगर व्यवहार को अनदेखा करना, और चैनल/अकाउंट का responsePrefix सेट न होने पर उत्तरों को डिफ़ॉल्ट रूप से [{identity.name}] (या [openclaw]) पर भेजना।
संदेश सामान्यीकरण और संदर्भ
इनबाउंड एनवेलप और उत्तर संदर्भ
इनबाउंड एनवेलप और उत्तर संदर्भ
ReplyToId, ReplyToBody, ReplyToSender, प्रेषक JID/E.164) भरा जाता है। यदि उद्धृत लक्ष्य डाउनलोड करने योग्य मीडिया है, तो OpenClaw उसे सामान्य इनबाउंड मीडिया स्टोर के माध्यम से सहेजता है और MediaPath/MediaType उपलब्ध कराता है, ताकि एजेंट केवल <media:image> देखने के बजाय सीधे उसका निरीक्षण कर सके।मीडिया प्लेसहोल्डर और स्थान/संपर्क निष्कर्षण
मीडिया प्लेसहोल्डर और स्थान/संपर्क निष्कर्षण
<media:image>, <media:video>, <media:audio>, <media:document>, <media:sticker>।जब मुख्य भाग केवल <media:audio> हो, तो अधिकृत समूह वॉइस नोट का उल्लेख गेटिंग से पहले प्रतिलेखन किया जाता है, ताकि वॉइस नोट में बॉट का उल्लेख बोलने पर उत्तर ट्रिगर हो सके। यदि प्रतिलेख में फिर भी बॉट का उल्लेख नहीं है, तो वह कच्चे प्लेसहोल्डर के बजाय लंबित समूह इतिहास में रहता है।स्थान के मुख्य भाग संक्षिप्त निर्देशांक पाठ के रूप में रेंडर होते हैं। स्थान लेबल/टिप्पणियाँ और संपर्क/vCard विवरण इनलाइन प्रॉम्प्ट पाठ के बजाय फ़ेंस किए गए अविश्वसनीय मेटाडेटा के रूप में रेंडर होते हैं।लंबित समूह इतिहास इंजेक्शन
लंबित समूह इतिहास इंजेक्शन
- डिफ़ॉल्ट सीमा:
50 - कॉन्फ़िगरेशन:
channels.whatsapp.historyLimit, फ़ॉलबैकmessages.groupChat.historyLimit 0अक्षम करता है
[Chat messages since your last reply - for context] और [Current message - respond to this]।पठन रसीदें
पठन रसीदें
channels.whatsapp.accounts.<id>.sendReadReceipts। वैश्विक रूप से सक्षम होने पर भी स्वयं-चैट टर्न पठन रसीदें छोड़ देते हैं।डिलीवरी, खंडन और मीडिया
पाठ खंडन
पाठ खंडन
- डिफ़ॉल्ट खंड सीमा:
channels.whatsapp.textChunkLimit = 4000 channels.whatsapp.streaming.chunkMode = "length" | "newline";newlineअनुच्छेद सीमाओं (रिक्त पंक्तियों) को प्राथमिकता देता है, फिर लंबाई-सुरक्षित खंडन पर फ़ॉलबैक करता है
आउटबाउंड मीडिया व्यवहार
आउटबाउंड मीडिया व्यवहार
- चित्र, वीडियो, ऑडियो (PTT वॉइस-नोट) और दस्तावेज़ पेलोड का समर्थन करता है
- ऑडियो को
ptt: trueके साथ Baileysaudioपेलोड के रूप में भेजा जाता है और वह पुश-टू-टॉक वॉइस नोट के रूप में रेंडर होता है; उत्तर पेलोड परaudioAsVoiceसंरक्षित रहता है, ताकि प्रदाता के स्रोत प्रारूप की परवाह किए बिना TTS वॉइस-नोट आउटपुट इसी पथ पर बना रहे - नेटिव Ogg/Opus ऑडियो
audio/ogg; codecs=opusके रूप में भेजा जाता है; अन्य सभी प्रारूपों (Microsoft Edge TTS MP3/WebM आउटपुट सहित) को PTT डिलीवरी से पहलेffmpegद्वारा 48 kHz मोनो Ogg/Opus में ट्रांसकोड किया जाता है /tts latestनवीनतम सहायक उत्तर को एक वॉइस नोट के रूप में भेजता है और उसी उत्तर को दोबारा भेजने से रोकता है;/tts chat on|off|defaultवर्तमान चैट के लिए स्वतः-TTS नियंत्रित करता है- वीडियो पर
gifPlayback: trueभेजने से एनिमेटेड GIF प्लेबैक सक्षम होता है forceDocument/asDocumentआउटबाउंड चित्रों, GIF और वीडियो को WhatsApp के मीडिया संपीड़न से बचाने के लिए Baileys दस्तावेज़ पेलोड के माध्यम से रूट करता है, जिससे निर्धारित फ़ाइलनाम और MIME प्रकार संरक्षित रहते हैं- बहु-मीडिया उत्तर में कैप्शन पहले मीडिया आइटम पर लागू होते हैं, PTT वॉइस नोट को छोड़कर: ऑडियो पहले बिना कैप्शन के भेजा जाता है, फिर कैप्शन अलग पाठ संदेश के रूप में भेजा जाता है (WhatsApp क्लाइंट वॉइस-नोट कैप्शन को सुसंगत रूप से रेंडर नहीं करते)
- मीडिया स्रोत HTTP(S),
file://, या स्थानीय पथ हो सकता है
मीडिया आकार सीमाएँ और फ़ॉलबैक व्यवहार
मीडिया आकार सीमाएँ और फ़ॉलबैक व्यवहार
- इनबाउंड सहेजने की सीमा और आउटबाउंड भेजने की सीमा:
channels.whatsapp.mediaMaxMb(डिफ़ॉल्ट50) - प्रति-अकाउंट ओवरराइड:
channels.whatsapp.accounts.<id>.mediaMaxMb - चित्र सीमाओं में फ़िट होने के लिए स्वतः अनुकूलित होते हैं (आकार बदलना/गुणवत्ता स्वीप), जब तक
forceDocument/asDocumentदस्तावेज़ डिलीवरी का अनुरोध न करे - मीडिया भेजना विफल होने पर, पहले आइटम का फ़ॉलबैक उत्तर को चुपचाप छोड़ने के बजाय पाठ चेतावनी भेजता है
उत्तर उद्धरण
channels.whatsapp.replyToMode नेटिव उत्तर उद्धरण नियंत्रित करता है (आउटबाउंड उत्तर इनबाउंड संदेश को दृश्यमान रूप से उद्धृत करते हैं):
channels.whatsapp.accounts.<id>.replyToMode।
प्रतिक्रिया स्तर
channels.whatsapp.reactionLevel नियंत्रित करता है कि एजेंट इमोजी प्रतिक्रियाओं का कितने व्यापक रूप से उपयोग करता है:
channels.whatsapp.accounts.<id>.reactionLevel।
पावती प्रतिक्रियाएँ
channels.whatsapp.ackReaction इनबाउंड प्राप्ति पर तत्काल प्रतिक्रिया भेजता है, जिसे reactionLevel द्वारा नियंत्रित किया जाता है ("off" होने पर दबा दिया जाता है):
ackReaction, emoji के बिना मौजूद है, तो WhatsApp रूट किए गए एजेंट की पहचान इमोजी का उपयोग करता है और अनुपलब्ध होने पर ”👀” का उपयोग करता है (पावती न भेजने के लिए ackReaction छोड़ें या emoji: "" सेट करें); विफलताएँ लॉग की जाती हैं लेकिन उत्तर डिलीवरी को अवरुद्ध नहीं करतीं; समूह मोड mentions केवल उल्लेख से ट्रिगर हुए टर्न पर प्रतिक्रिया करता है, जबकि समूह सक्रियण always उस जाँच को बायपास करता है; WhatsApp केवल channels.whatsapp.ackReaction का उपयोग करता है (पुराना messages.ackReaction यहाँ लागू नहीं होता)।
जीवनचक्र स्थिति प्रतिक्रियाएँ
messages.statusReactions.enabled: true सेट करें, ताकि WhatsApp किसी टर्न के दौरान स्थिर प्राप्ति इमोजी छोड़ने के बजाय पावती प्रतिक्रिया को बदल सके और कतारबद्ध, चिंतन, टूल गतिविधि, Compaction, पूर्ण और त्रुटि जैसी स्थितियों के बीच क्रम से बदलता रहे:
channels.whatsapp.ackReaction अब भी प्रत्यक्ष संदेशों और समूहों के लिए पात्रता नियंत्रित करता है; कतारबद्ध स्थिति सामान्य पावती प्रतिक्रियाओं वाले प्रभावी इमोजी का उपयोग करती है; WhatsApp में प्रति संदेश एक बॉट प्रतिक्रिया स्लॉट होता है, इसलिए जीवनचक्र अपडेट वर्तमान प्रतिक्रिया को उसी स्थान पर बदलते हैं और अंतिम पूर्ण/त्रुटि स्थिति के बाद पावती बहाल करते हैं।
बहु-अकाउंट और क्रेडेंशियल्स
खाता चयन और डिफ़ॉल्ट
खाता चयन और डिफ़ॉल्ट
channels.whatsapp.accounts से आती हैं। यदि default मौजूद हो, तो वही डिफ़ॉल्ट खाता चुना जाता है; अन्यथा वर्णानुक्रम में क्रमबद्ध पहली कॉन्फ़िगर की गई खाता आईडी चुनी जाती है। लुकअप के लिए खाता आईडी को आंतरिक रूप से सामान्यीकृत किया जाता है।क्रेडेंशियल पथ और लेगेसी संगतता
क्रेडेंशियल पथ और लेगेसी संगतता
- वर्तमान प्रमाणीकरण पथ:
~/.openclaw/credentials/whatsapp/<accountId>/creds.json(बैकअप:creds.json.bak) ~/.openclaw/credentials/में लेगेसी डिफ़ॉल्ट प्रमाणीकरण को डिफ़ॉल्ट-खाता प्रवाहों के लिए अब भी पहचाना/माइग्रेट किया जाता है
लॉगआउट व्यवहार
लॉगआउट व्यवहार
openclaw channels logout --channel whatsapp [--account <id>] उस खाते की WhatsApp प्रमाणीकरण स्थिति साफ़ करता है। Gateway उपलब्ध होने पर, लॉगआउट पहले उस खाते के लाइव लिसनर को रोकता है, ताकि लिंक किया गया सत्र अगले पुनरारंभ से पहले ही संदेश प्राप्त करना बंद कर दे। openclaw channels remove --channel whatsapp खाता कॉन्फ़िगरेशन अक्षम करने या हटाने से पहले लाइव लिसनर को भी रोकता है।लेगेसी प्रमाणीकरण डायरेक्टरियों में, Baileys प्रमाणीकरण फ़ाइलें हटाते समय oauth.json को सुरक्षित रखा जाता है।टूल, कार्रवाइयाँ और कॉन्फ़िगरेशन लेखन
- एजेंट टूल समर्थन में WhatsApp प्रतिक्रिया कार्रवाई (
react) शामिल है। - कार्रवाई गेट:
channels.whatsapp.actions.reactions,channels.whatsapp.actions.polls(मौजूदा कार्रवाइयों का डिफ़ॉल्टtrueहै),channels.whatsapp.actions.calls(डिफ़ॉल्टfalse, ऊपर MeowCaller देखें)। - चैनल द्वारा आरंभ किए गए कॉन्फ़िगरेशन लेखन डिफ़ॉल्ट रूप से सक्षम हैं;
channels.whatsapp.configWrites: falseके माध्यम से अक्षम करें।
समस्या निवारण
लिंक नहीं है (QR आवश्यक)
लिंक नहीं है (QR आवश्यक)
लिंक है लेकिन कनेक्शन टूटा हुआ है / पुनः कनेक्शन लूप
लिंक है लेकिन कनेक्शन टूटा हुआ है / पुनः कनेक्शन लूप
~/.openclaw/logs/whatsapp-health.log, Gateway inactive बताता है, लेकिन openclaw gateway status और openclaw channels status --probe दोनों स्वस्थ दिखते हैं, तो openclaw doctor चलाएँ। Linux पर, doctor हटाई जा चुकी ~/.openclaw/bin/ensure-whatsapp.sh स्क्रिप्ट को चलाने वाली लेगेसी crontab प्रविष्टियों के बारे में चेतावनी देता है; उन प्रविष्टियों को crontab -e से हटाएँ — cron में systemd यूज़र-बस परिवेश अनुपस्थित हो सकता है, जिससे वह पुरानी स्क्रिप्ट Gateway की स्थिति की गलत रिपोर्ट कर सकती है।प्रॉक्सी के पीछे QR लॉगिन का समय समाप्त हो जाता है
प्रॉक्सी के पीछे QR लॉगिन का समय समाप्त हो जाता है
openclaw channels login --channel whatsapp, status=408 Request Time-out या TLS सॉकेट डिस्कनेक्शन के साथ विफल हो जाता है।WhatsApp Web लॉगिन Gateway होस्ट के मानक प्रॉक्सी परिवेश (HTTPS_PROXY, HTTP_PROXY, छोटे अक्षरों वाले प्रकार, NO_PROXY) का उपयोग करता है। सत्यापित करें कि Gateway प्रक्रिया को प्रॉक्सी परिवेश मिलता है और NO_PROXY, mmg.whatsapp.net से मेल नहीं खाता।भेजते समय कोई सक्रिय लिसनर नहीं
भेजते समय कोई सक्रिय लिसनर नहीं
उत्तर ट्रांसक्रिप्ट में दिखता है लेकिन WhatsApp में नहीं
उत्तर ट्रांसक्रिप्ट में दिखता है लेकिन WhatsApp में नहीं
auto-reply delivery failed या auto-reply was not accepted by WhatsApp provider की जाँच करें।समूह संदेश अनपेक्षित रूप से अनदेखे किए जाते हैं
समूह संदेश अनपेक्षित रूप से अनदेखे किए जाते हैं
groupPolicy, groupAllowFrom/allowFrom, groups अनुमति-सूची प्रविष्टियाँ, उल्लेख गेटिंग (requireMention + उल्लेख पैटर्न), और openclaw.json में डुप्लिकेट कुंजियाँ (JSON5 में बाद की प्रविष्टियाँ पहले वाली को ओवरराइड करती हैं — प्रत्येक स्कोप में केवल एक groupPolicy रखें)।यदि channels.whatsapp.groups मौजूद है, तो WhatsApp अब भी अन्य समूहों के संदेश देख सकता है, लेकिन OpenClaw उन्हें सत्र रूटिंग से पहले हटा देता है। समूह JID को channels.whatsapp.groups में जोड़ें, या प्रेषक प्राधिकरण को groupPolicy/groupAllowFrom के अधीन रखते हुए सभी समूहों को स्वीकार करने के लिए groups["*"] जोड़ें।Bun रनटाइम चेतावनी
Bun रनटाइम चेतावनी
node:sqlite API उपलब्ध नहीं कराता, और doctor लेगेसी Bun सेवाओं को Node पर माइग्रेट करता है।सिस्टम प्रॉम्प्ट
WhatsApp,groups और direct मैप के माध्यम से समूहों और सीधे चैट के लिए Telegram-शैली के सिस्टम प्रॉम्प्ट का समर्थन करता है।
समूह संदेशों के लिए समाधान: पहले प्रभावी groups मैप निर्धारित किया जाता है — यदि खाता अपनी groups कुंजी परिभाषित करता है, तो वह रूट groups मैप को पूरी तरह बदल देती है (कोई डीप मर्ज नहीं)। इसके बाद प्रॉम्प्ट लुकअप उसी एक परिणामी मैप पर चलता है:
- समूह-विशिष्ट प्रॉम्प्ट (
groups["<groupId>"].systemPrompt): इसका उपयोग तब किया जाता है जब समूह प्रविष्टि मौजूद हो और उसकीsystemPromptकुंजी परिभाषित हो। रिक्त स्ट्रिंग ("") वाइल्डकार्ड को दबाती है और कोई प्रॉम्प्ट लागू नहीं करती। - समूह वाइल्डकार्ड प्रॉम्प्ट (
groups["*"].systemPrompt): इसका उपयोग तब किया जाता है जब विशिष्ट समूह प्रविष्टि अनुपस्थित हो, या वहsystemPromptकुंजी के बिना मौजूद हो।
direct मैप और direct["*"] पर समान पैटर्न का पालन करता है।
dms, हल्के प्रति-DM इतिहास ओवरराइड बकेट (dms.<id>.historyLimit) के रूप में बना रहता है। प्रॉम्प्ट ओवरराइड direct के अंतर्गत रहते हैं।groups/direct कुंजी रूट मैप को बदल देती है। यह ऊपर वर्णित समूह-सदस्यता अनुमति-सूची जाँच से अलग है, जिसमें गलती से रिक्त groups: {} के लिए एकल-खाता सुरक्षा व्यवस्था है।groups को दबाता है (उन खातों के लिए भी जिनका अपना कोई groups नहीं है), ताकि बॉट उन समूहों के संदेश प्राप्त न करे जिनका वह सदस्य नहीं है। WhatsApp यह सुरक्षा लागू नहीं करता — अपनी ओवरराइड के बिना कोई भी खाता, खातों की संख्या चाहे जो हो, रूट groups/direct को इनहेरिट करता है। बहु-खाता WhatsApp सेटअप में, यदि प्रति-खाता प्रॉम्प्ट चाहिए, तो प्रत्येक खाते के अंतर्गत पूरा मैप स्पष्ट रूप से परिभाषित करें।
महत्वपूर्ण व्यवहार:
channels.whatsapp.groupsप्रति-समूह कॉन्फ़िगरेशन मैप और चैट-स्तरीय समूह अनुमति-सूची, दोनों है। रूट या खाता स्कोप में,groups["*"]का अर्थ उस स्कोप के लिए “सभी समूह स्वीकार किए जाते हैं” है।- वाइल्डकार्ड
systemPromptकेवल तभी जोड़ें, जब आप पहले से उस स्कोप में सभी समूह स्वीकार करना चाहते हों। केवल समूह आईडी के निश्चित समूह को पात्र रखने के लिए,groups["*"]का उपयोग करने के बजाय प्रत्येक स्पष्ट रूप से अनुमति-सूचीबद्ध प्रविष्टि पर प्रॉम्प्ट दोहराएँ। - समूह स्वीकृति और प्रेषक प्राधिकरण अलग-अलग जाँच हैं।
groups["*"]उन समूहों का दायरा बढ़ाता है जो समूह प्रबंधन तक पहुँचते हैं; यह उन समूहों के प्रत्येक प्रेषक को अधिकृत नहीं करता — वह अब भीgroupPolicy/groupAllowFromद्वारा नियंत्रित होता है। channels.whatsapp.directका DM के लिए कोई समकक्ष दुष्प्रभाव नहीं है:direct["*"]केवल तभी डिफ़ॉल्ट कॉन्फ़िगरेशन देता है, जब DM कोdmPolicyके साथallowFromया पेयरिंग-स्टोर नियमों द्वारा पहले ही स्वीकार किया जा चुका हो।