Zalo (Bot API)¶
स्थिति: प्रायोगिक। केवल डायरेक्ट मैसेज; Zalo दस्तावेज़ों के अनुसार समूह जल्द आ रहे हैं।
आवश्यक प्लगइन¶
Zalo एक प्लगइन के रूप में उपलब्ध है और कोर इंस्टॉल में शामिल नहीं है।
- CLI के माध्यम से इंस्टॉल करें:
openclaw plugins install @openclaw/zalo - या ऑनबोर्डिंग के दौरान Zalo चुनें और इंस्टॉल प्रॉम्प्ट की पुष्टि करें
- विवरण: Plugins
त्वरित सेटअप (शुरुआती)¶
- Zalo प्लगइन इंस्टॉल करें:
- सोर्स चेकआउट से:
openclaw plugins install ./extensions/zalo- npm से (यदि प्रकाशित हो):openclaw plugins install @openclaw/zalo- या ऑनबोर्डिंग में Zalo चुनें और इंस्टॉल प्रॉम्प्ट की पुष्टि करें - टोकन सेट करें:
- पर्यावरण:
ZALO_BOT_TOKEN=...- या config:channels.zalo.botToken: "...". - Gateway को पुनः प्रारंभ करें (या ऑनबोर्डिंग पूर्ण करें)।
- DM एक्सेस डिफ़ॉल्ट रूप से pairing है; पहली बार संपर्क पर pairing कोड स्वीकृत करें।
न्यूनतम विन्यास:
{
channels: {
zalo: {
enabled: true,
botToken: "12345689:abc-xyz",
dmPolicy: "pairing",
},
},
}
यह क्या है¶
Zalo वियतनाम-केंद्रित मैसेजिंग ऐप है; इसका Bot API Gateway को 1:1 वार्तालाप के लिए बॉट चलाने की अनुमति देता है। It is a good fit for support or notifications where you want deterministic routing back to Zalo.
- Gateway के स्वामित्व वाला Zalo Bot API चैनल।
- निश्चित रूटिंग: उत्तर Zalo पर ही वापस जाते हैं; मॉडल चैनल नहीं चुनता।
- DMs एजेंट के मुख्य सत्र को साझा करते हैं।
- समूह अभी समर्थित नहीं हैं (Zalo दस्तावेज़ों में “coming soon” कहा गया है)।
सेटअप (त्वरित मार्ग)¶
1. बॉट टोकन बनाएँ (Zalo Bot Platform)¶
- https://bot.zaloplatforms.com पर जाएँ और साइन इन करें।
- नया बॉट बनाएँ और उसकी सेटिंग्स कॉन्फ़िगर करें।
- बॉट टोकन कॉपी करें (फ़ॉर्मैट:
12345689:abc-xyz)।
2) टोकन कॉन्फ़िगर करें (env या config)¶
उदाहरण:
{
channels: {
zalo: {
enabled: true,
botToken: "12345689:abc-xyz",
dmPolicy: "pairing",
},
},
}
Env विकल्प: ZALO_BOT_TOKEN=... (केवल डिफ़ॉल्ट अकाउंट के लिए काम करता है)।
मल्टी-अकाउंट समर्थन: प्रति-अकाउंट टोकन और वैकल्पिक name के साथ channels.zalo.accounts का उपयोग करें।
- Gateway को पुनः आरंभ करें। Zalo starts when a token is resolved (env or config).
- DM एक्सेस डिफ़ॉल्ट रूप से पेयरिंग पर सेट होता है। जब बॉट से पहली बार संपर्क किया जाए, तो कोड को स्वीकृत करें।
यह कैसे काम करता है (व्यवहार)¶
- इनबाउंड संदेशों को मीडिया प्लेसहोल्डर्स के साथ साझा चैनल एनवेलप में सामान्यीकृत किया जाता है।
- उत्तर हमेशा उसी Zalo चैट पर वापस रूट होते हैं।
- डिफ़ॉल्ट रूप से लॉन्ग-पोलिंग;
channels.zalo.webhookUrlके साथ वेबहुक मोड उपलब्ध है।
सीमाएँ¶
- आउटबाउंड टेक्स्ट को 2000 अक्षरों में विभाजित किया जाता है (Zalo API सीमा)।
- मीडिया डाउनलोड/अपलोड
channels.zalo.mediaMaxMbद्वारा सीमित हैं (डिफ़ॉल्ट 5)। - 2000 अक्षर सीमा के कारण स्ट्रीमिंग कम उपयोगी होने से डिफ़ॉल्ट रूप से ब्लॉक है।
प्रवेश नियंत्रण (DMs)¶
DM एक्सेस¶
- डिफ़ॉल्ट:
channels.zalo.dmPolicy = "pairing"। अज्ञात प्रेषकों को एक पेयरिंग कोड मिलता है; स्वीकृति तक संदेश अनदेखे रहते हैं (कोड 1 घंटे बाद समाप्त हो जाते हैं)। - स्वीकृति के तरीके:
openclaw pairing list zaloopenclaw pairing approve zalo <CODE>- Pairing डिफ़ॉल्ट टोकन एक्सचेंज है। विवरण: Pairing
channels.zalo.allowFromसंख्यात्मक यूज़र आईडी स्वीकार करता है (यूज़रनेम लुकअप उपलब्ध नहीं)।
लॉन्ग-पोलिंग बनाम वेबहुक¶
- डिफ़ॉल्ट: लॉन्ग-पोलिंग (सार्वजनिक URL की आवश्यकता नहीं)।
- वेबहुक मोड:
channels.zalo.webhookUrlऔरchannels.zalo.webhookSecretसेट करें। - वेबहुक सीक्रेट 8–256 अक्षरों का होना चाहिए।
- वेबहुक URL को HTTPS का उपयोग करना चाहिए।
- Zalo सत्यापन के लिए
X-Bot-Api-Secret-Tokenहेडर के साथ इवेंट भेजता है। - Gateway HTTP वेबहुक अनुरोधों को
channels.zalo.webhookPathपर हैंडल करता है (डिफ़ॉल्ट रूप से वेबहुक URL पाथ)।
टिप्पणी: Zalo API दस्तावेज़ों के अनुसार getUpdates (polling) और वेबहुक परस्पर अनन्य हैं।
समर्थित संदेश प्रकार¶
- टेक्स्ट संदेश: 2000 अक्षर विभाजन के साथ पूर्ण समर्थन।
- छवि संदेश: इनबाउंड छवियों को डाउनलोड और प्रोसेस करना;
sendPhotoके माध्यम से छवियाँ भेजना। - स्टिकर्स: लॉग किए जाते हैं लेकिन पूरी तरह प्रोसेस नहीं होते (कोई एजेंट प्रतिक्रिया नहीं)।
- असमर्थित प्रकार: लॉग किए जाते हैं (जैसे, संरक्षित उपयोगकर्ताओं से संदेश)।
क्षमताएँ¶
| फीचर | स्थिति |
|---|---|
| डायरेक्ट मैसेज | ✅ समर्थित |
| समूह | ❌ जल्द आ रहा है (Zalo दस्तावेज़ों के अनुसार) |
| मीडिया (छवियाँ) | ✅ समर्थित |
| रिएक्शंस | ❌ समर्थित नहीं |
| थ्रेड्स | ❌ समर्थित नहीं |
| पोल्स | ❌ समर्थित नहीं |
| नेटिव कमांड्स | ❌ समर्थित नहीं |
| स्ट्रीमिंग | ⚠️ ब्लॉक (2000 अक्षर सीमा) |
डिलीवरी लक्ष्य (CLI/cron)¶
- लक्ष्य के रूप में चैट आईडी का उपयोग करें।
- उदाहरण:
openclaw message send --channel zalo --target 123456789 --message "hi"।
समस्या-निवारण¶
बॉट प्रतिक्रिया नहीं देता:
- जाँचें कि टोकन वैध है:
openclaw channels status --probe - सत्यापित करें कि प्रेषक स्वीकृत है (pairing या allowFrom)
- Gateway लॉग्स जाँचें:
openclaw logs --follow
वेबहुक को इवेंट्स नहीं मिल रहे:
- सुनिश्चित करें कि वेबहुक URL HTTPS का उपयोग करता है
- सत्यापित करें कि सीक्रेट टोकन 8–256 अक्षरों का है
- पुष्टि करें कि Gateway HTTP एंडपॉइंट कॉन्फ़िगर किए गए पाथ पर पहुँच योग्य है
- जाँचें कि getUpdates polling चल नहीं रहा (दोनों परस्पर अनन्य हैं)
विन्यास संदर्भ (Zalo)¶
पूर्ण विन्यास: Configuration
प्रदाता विकल्प:
channels.zalo.enabled: चैनल स्टार्टअप सक्षम/अक्षम करें।channels.zalo.botToken: Zalo Bot Platform से बॉट टोकन।channels.zalo.tokenFile: फ़ाइल पाथ से टोकन पढ़ें।channels.zalo.dmPolicy:pairing | allowlist | open | disabled(डिफ़ॉल्ट: pairing)।channels.zalo.allowFrom: DM अलाउलिस्ट (यूज़र IDs)।openके लिए"*"आवश्यक है। विज़ार्ड न्यूमेरिक IDs के लिए पूछेगा।channels.zalo.mediaMaxMb: इनबाउंड/आउटबाउंड मीडिया सीमा (MB, डिफ़ॉल्ट 5)।channels.zalo.webhookUrl: वेबहुक मोड सक्षम करें (HTTPS आवश्यक)।channels.zalo.webhookSecret: वेबहुक सीक्रेट (8–256 अक्षर)।channels.zalo.webhookPath: Gateway HTTP सर्वर पर वेबहुक पाथ।channels.zalo.proxy: API अनुरोधों के लिए प्रॉक्सी URL।
मल्टी-अकाउंट विकल्प:
channels.zalo.accounts.<id>.botToken: प्रति-खाता टोकन।channels.zalo.accounts.<id>.tokenFile: प्रति-खाता टोकन फ़ाइल।channels.zalo.accounts.<id>``.name: प्रदर्शित नाम।channels.zalo.accounts.<id>``.enabled: खाते को सक्षम/अक्षम करें।channels.zalo.accounts.<id>``.dmPolicy: प्रति-खाता DM नीति।channels.zalo.accounts.<id>``.allowFrom: प्रति-खाता अनुमति सूची।channels.zalo.accounts.<id>``.webhookUrl: प्रति-खाता वेबहुक URL।channels.zalo.accounts.<id>``.webhookSecret: प्रति-खाता वेबहुक सीक्रेट।channels.zalo.accounts.<id>``.webhookPath: प्रति-खाता वेबहुक पथ।channels.zalo.accounts.<id>``.proxy: प्रति-खाता प्रॉक्सी URL।