Regional platforms

Zalo व्यक्तिगत

स्थिति: प्रयोगात्मक। यह इंटीग्रेशन किसी बाहरी CLI बाइनरी के बिना, इन-प्रोसेस मूल zca-js के माध्यम से एक व्यक्तिगत Zalo खाते को स्वचालित करता है।

इंस्टॉल करें

Zalo Personal एक आधिकारिक बाहरी Plugin है, जो कोर के साथ बंडल नहीं है। उपयोग से पहले इसे इंस्टॉल करें:

bash
openclaw plugins install @openclaw/zalouser
  • संस्करण पिन करें: openclaw plugins install @openclaw/zalouser@<version>
  • स्रोत चेकआउट से: openclaw plugins install ./path/to/local/zalouser-plugin
  • विवरण: Plugins

त्वरित सेटअप

  1. Plugin इंस्टॉल करें (ऊपर देखें)।
  2. लॉग इन करें (QR, Gateway मशीन पर):
    • openclaw channels login --channel zalouser
    • Zalo मोबाइल ऐप से QR कोड स्कैन करें।
  3. चैनल सक्षम करें:
json5
{  channels: {    zalouser: {      enabled: true,      dmPolicy: "pairing",    },  },}
  1. Gateway को पुनः आरंभ करें (या सेटअप पूरा करें)।
  2. DM एक्सेस डिफ़ॉल्ट रूप से पेयरिंग का उपयोग करता है; पहले संपर्क पर पेयरिंग कोड स्वीकृत करें।

यह क्या है

  • यह पूरी तरह zca-js लाइब्रेरी के माध्यम से इन-प्रोसेस चलता है (कोई बाहरी zca/openzca बाइनरी नहीं)।
  • इनबाउंड संदेश प्राप्त करने के लिए मूल इवेंट लिसनर (message, error) का उपयोग करता है।
  • JS API के माध्यम से सीधे उत्तर भेजता है (टेक्स्ट/मीडिया/लिंक)।
  • उन "व्यक्तिगत खाते" के उपयोग मामलों के लिए डिज़ाइन किया गया है जहाँ Zalo Bot API उपलब्ध नहीं है।

नामकरण

चैनल आईडी zalouser है, ताकि यह स्पष्ट रहे कि यह एक व्यक्तिगत Zalo उपयोगकर्ता खाते (अनौपचारिक) को स्वचालित करता है। zalo संभावित भावी आधिकारिक Zalo API इंटीग्रेशन के लिए आरक्षित है।

आईडी ढूँढना (डायरेक्टरी)

bash
openclaw directory self --channel zalouseropenclaw directory peers list --channel zalouser --query "name"openclaw directory groups list --channel zalouser --query "work"

सीमाएँ

  • आउटबाउंड टेक्स्ट को 2000 वर्णों के खंडों में बाँटा जाता है (Zalo क्लाइंट सीमा)।
  • स्ट्रीमिंग समर्थित नहीं है।
  • पूर्ण हो चुके इनबाउंड संदेश आईडी 30 दिनों तक रखे जाते हैं और प्रत्येक खाते के लिए सबसे हाल की 1000 प्रविष्टियों तक सीमित रहते हैं।

इनबाउंड स्थायित्व

OpenClaw प्रत्येक अपरिष्कृत zca-js संदेश कॉलबैक को संसाधित करने से पहले संग्रहीत करता है। Gateway के पुनः आरंभ होने के बाद लंबित संदेश खाते की कतार से फिर शुरू होते हैं और प्रत्येक प्रत्यक्ष चैट या समूह के लिए प्रसंस्करण क्रमिक बना रहता है।

zca-js सॉकेट लिसनर डिलीवरी अभिस्वीकृति उपलब्ध नहीं कराता और पुनः कनेक्ट होने के बाद पुराने संदेशों को स्वचालित रूप से दोबारा नहीं चलाता। इसलिए टिकाऊ कतार किसी कॉलबैक के OpenClaw तक पहुँचने के बाद स्थानीय क्रैश की अवधि से सुरक्षा देती है; यह ऐसे संदेश को पुनर्प्राप्त नहीं कर सकती जिसे सॉकेट ने कभी डिलीवर ही नहीं किया। रीप्ले टूमस्टोन मुख्यतः उसी Zalo संदेश आईडी वाले दोहराए गए कॉलबैक के विरुद्ध सुरक्षा उपाय हैं।

एक्सेस नियंत्रण (DM)

channels.zalouser.dmPolicy: pairing | allowlist | open | disabled (डिफ़ॉल्ट: pairing)।

channels.zalouser.allowFrom में स्थिर Zalo उपयोगकर्ता आईडी का उपयोग होना चाहिए। यह स्थिर प्रेषक एक्सेस समूहों (accessGroup:<name>) को भी संदर्भित कर सकता है। इंटरैक्टिव सेटअप के दौरान दर्ज किए गए नामों को Plugin के इन-प्रोसेस संपर्क लुकअप का उपयोग करके आईडी में बदला जा सकता है।

यदि कॉन्फ़िगरेशन में कोई अपरिष्कृत नाम बना रहता है, तो स्टार्टअप उसे केवल तभी हल करता है जब channels.zalouser.dangerouslyAllowNameMatching: true सक्षम हो। इस ऑप्ट-इन के बिना, रनटाइम प्रेषक जाँच केवल आईडी पर आधारित होती है और प्राधिकरण के लिए अपरिष्कृत नामों को अनदेखा किया जाता है।

इसके माध्यम से स्वीकृत करें:

  • openclaw pairing list zalouser
  • openclaw pairing approve zalouser <code>

समूह एक्सेस (वैकल्पिक)

  • डिफ़ॉल्ट: channels.zalouser.groupPolicy = "allowlist" (समूहों के लिए स्पष्ट अनुमति-सूची प्रविष्टि आवश्यक है)।
  • सभी समूह खोलें: channels.zalouser.groupPolicy = "open"
  • सभी समूह अवरुद्ध करें: channels.zalouser.groupPolicy = "disabled"
  • groupPolicy = "allowlist" के साथ:
    • channels.zalouser.groups कुंजियाँ स्थिर समूह आईडी होनी चाहिए; नामों को स्टार्टअप पर केवल तभी आईडी में बदला जाता है जब channels.zalouser.dangerouslyAllowNameMatching: true सक्षम हो।
    • channels.zalouser.groupAllowFrom नियंत्रित करता है कि अनुमत समूहों में कौन-से प्रेषक बॉट को सक्रिय कर सकते हैं; स्थिर प्रेषक एक्सेस समूहों को accessGroup:<name> के माध्यम से संदर्भित किया जा सकता है।
  • कॉन्फ़िगर विज़ार्ड समूह अनुमति-सूचियों के लिए संकेत दे सकता है।
  • समूह अनुमति-सूची मिलान डिफ़ॉल्ट रूप से केवल आईडी पर आधारित होता है। जब तक channels.zalouser.dangerouslyAllowNameMatching: true सक्षम न हो, अनसुलझे नामों को प्रमाणीकरण के लिए अनदेखा किया जाता है।
  • channels.zalouser.dangerouslyAllowNameMatching: true आपातकालीन संगतता मोड है, जो परिवर्तनशील स्टार्टअप नाम समाधान और रनटाइम समूह-नाम मिलान को फिर से सक्षम करता है।
  • groupAllowFrom सामान्य समूह संदेशों के लिए allowFrom पर वापस नहीं जाता: अनुमति-सूची वाले समूह में इसे खाली छोड़ने पर वह समूह किसी भी प्रेषक के लिए खुल जाता है। अधिकृत नियंत्रण कमांड (उदाहरण के लिए /new) अपवाद हैं; जब groupAllowFrom खाली हो, तो कमांड प्रेषक जाँच allowFrom पर वापस जाती है।

उदाहरण:

json5
{  channels: {    zalouser: {      groupPolicy: "allowlist",      groupAllowFrom: ["1471383327500481391"],      groups: {        "123456789": { enabled: true },        "Work Chat": { enabled: true },      },    },  },}

समूह उल्लेख गेटिंग

  • channels.zalouser.groups.<group>.requireMention नियंत्रित करता है कि समूह के उत्तरों के लिए उल्लेख आवश्यक है या नहीं।
  • समाधान क्रम: समूह आईडी -> group:<id> उपनाम -> समूह नाम/स्लग (नाम-आधारित उम्मीदवार केवल तभी लागू होते हैं जब dangerouslyAllowNameMatching: true) -> * -> डिफ़ॉल्ट (true)।
  • यह अनुमति-सूची वाले समूहों और खुले समूह मोड, दोनों पर लागू होता है।
  • किसी बॉट संदेश को उद्धृत करना समूह सक्रियण के लिए अंतर्निहित उल्लेख माना जाता है।
  • अधिकृत नियंत्रण कमांड (उदाहरण के लिए /new) उल्लेख गेटिंग को बायपास कर सकते हैं।
  • जब उल्लेख आवश्यक होने के कारण समूह संदेश छोड़ दिया जाता है, तो OpenClaw उसे लंबित समूह इतिहास के रूप में संग्रहीत करता है और अगले संसाधित समूह संदेश में उसे शामिल करता है।
  • समूह इतिहास सीमा: channels.zalouser.historyLimit, फिर messages.groupChat.historyLimit, फिर 50 का फ़ॉलबैक।

उदाहरण:

json5
{  channels: {    zalouser: {      groupPolicy: "allowlist",      groups: {        "*": { enabled: true, requireMention: true },        "Work Chat": { enabled: true, requireMention: false },      },    },  },}

बहु-खाता

खाते OpenClaw स्थिति में zalouser प्रोफ़ाइल से मैप होते हैं। उदाहरण:

json5
{  channels: {    zalouser: {      enabled: true,      defaultAccount: "default",      accounts: {        work: { enabled: true, profile: "work" },      },    },  },}

पर्यावरण चर

प्रोफ़ाइल चयन पर्यावरण चरों से भी आ सकता है:

चर उद्देश्य
ZALOUSER_PROFILE चैनल या खाता कॉन्फ़िगरेशन में कोई profile सेट न होने पर उपयोग किया जाने वाला प्रोफ़ाइल नाम।
ZCA_PROFILE पुराना फ़ॉलबैक, जिसका उपयोग केवल तब होता है जब ZALOUSER_PROFILE सेट न हो।

प्रोफ़ाइल नाम OpenClaw स्थिति में सहेजे गए Zalo लॉगिन क्रेडेंशियल चुनते हैं। समाधान क्रम:

  1. कॉन्फ़िगरेशन में स्पष्ट profile
  2. ZALOUSER_PROFILE
  3. ZCA_PROFILE
  4. गैर-डिफ़ॉल्ट खातों के लिए खाता आईडी, या डिफ़ॉल्ट खाते के लिए default

बहु-खाता सेटअप के लिए, कॉन्फ़िगरेशन में प्रत्येक खाते पर profile सेट करना बेहतर है, ताकि एक पर्यावरण चर कई खातों को एक ही लॉगिन सत्र साझा करने के लिए बाध्य न करे।

टाइपिंग, प्रतिक्रियाएँ और डिलीवरी अभिस्वीकृतियाँ

  • OpenClaw उत्तर भेजने से पहले एक टाइपिंग इवेंट भेजता है (सर्वोत्तम प्रयास)।
  • चैनल कार्रवाइयों में zalouser के लिए संदेश प्रतिक्रिया कार्रवाई react समर्थित है।
    • किसी संदेश से विशिष्ट प्रतिक्रिया इमोजी हटाने के लिए remove: true का उपयोग करें।
    • प्रतिक्रिया संबंधी अर्थविज्ञान: प्रतिक्रियाएँ
  • इवेंट मेटाडेटा वाले इनबाउंड संदेशों के लिए, OpenClaw डिलीवर और देखे जाने की अभिस्वीकृतियाँ भेजता है (सर्वोत्तम प्रयास)।

समस्या निवारण

लॉगिन बना नहीं रहता:

  • openclaw channels status --probe
  • फिर से लॉग इन करें: openclaw channels logout --channel zalouser && openclaw channels login --channel zalouser

अनुमति-सूची/समूह नाम का समाधान नहीं हुआ:

  • allowFrom/groupAllowFrom में संख्यात्मक आईडी और groups में स्थिर समूह आईडी का उपयोग करें। यदि आपको जानबूझकर सटीक मित्र/समूह नाम चाहिए, तो channels.zalouser.dangerouslyAllowNameMatching: true सक्षम करें।

पुराने बाहरी zca/CLI-आधारित सेटअप से अपग्रेड किया है:

  • बाहरी zca प्रक्रिया से संबंधित सभी धारणाएँ हटा दें; चैनल अब बिना किसी बाहरी CLI बाइनरी के, zca-js के माध्यम से पूरी तरह इन-प्रोसेस चलता है।

संबंधित

Was this useful?
On this page

On this page