Zalo (Bot API)
الحالة: تجريبي. الرسائل الخاصة مدعومة. يعكس قسم الإمكانات أدناه سلوك بوتات Marketplace الحالي.الإضافة المضمنة
يأتي Zalo كإضافة مضمنة في إصدارات OpenClaw الحالية، لذلك لا تحتاج البُنى المجمعة العادية إلى تثبيت منفصل. إذا كنت تستخدم إصدارًا أقدم أو تثبيتًا مخصصًا يستبعد Zalo، فقم بتثبيته يدويًا:- التثبيت عبر CLI:
openclaw plugins install @openclaw/zalo - أو من نسخة مصدر محلية:
openclaw plugins install ./path/to/local/zalo-plugin - التفاصيل: الإضافات
إعداد سريع (للمبتدئين)
- تأكد من أن إضافة Zalo متوفرة.
- تتضمنها بالفعل إصدارات OpenClaw المجمعة الحالية.
- يمكن لعمليات التثبيت القديمة/المخصصة إضافتها يدويًا باستخدام الأوامر أعلاه.
- اضبط الرمز المميز:
- Env:
ZALO_BOT_TOKEN=... - أو في الإعدادات:
channels.zalo.accounts.default.botToken: "...".
- Env:
- أعد تشغيل البوابة (أو أكمل الإعداد).
- يكون الوصول عبر الرسائل الخاصة في وضع الاقتران افتراضيًا؛ وافق على رمز الاقتران عند أول تواصل.
ما هو
Zalo هو تطبيق مراسلة يركز على فيتنام؛ وتتيح Bot API الخاصة به للبوابة تشغيل بوت للمحادثات الفردية 1:1. وهو مناسب جيدًا للدعم أو الإشعارات عندما تريد توجيهًا حتميًا للعودة إلى Zalo. تعكس هذه الصفحة سلوك OpenClaw الحالي بالنسبة إلى بوتات Zalo Bot Creator / Marketplace. أما بوتات Zalo Official Account (OA) فهي سطح منتج مختلف في Zalo وقد تتصرف بشكل مختلف.- قناة Zalo Bot API تملكها البوابة.
- توجيه حتمي: تعود الردود إلى Zalo؛ ولا يختار النموذج القنوات.
- تشارك الرسائل الخاصة الجلسة الرئيسية للوكيل.
- يوضح قسم الإمكانات أدناه الدعم الحالي لبوتات Marketplace.
الإعداد (المسار السريع)
1) إنشاء رمز بوت مميز (Zalo Bot Platform)
- انتقل إلى https://bot.zaloplatforms.com وسجّل الدخول.
- أنشئ بوتًا جديدًا واضبط إعداداته.
- انسخ الرمز المميز الكامل للبوت (عادةً
numeric_id:secret). بالنسبة إلى بوتات Marketplace، قد يظهر رمز وقت التشغيل القابل للاستخدام في رسالة الترحيب الخاصة بالبوت بعد الإنشاء.
2) إعداد الرمز المميز (env أو config)
مثال:groupPolicy وgroupAllowFrom بشكل صريح. بالنسبة إلى سلوك بوتات Marketplace الحالي، راجع الإمكانات.
خيار Env: ZALO_BOT_TOKEN=... (يعمل للحساب الافتراضي فقط).
دعم الحسابات المتعددة: استخدم channels.zalo.accounts مع رموز مميزة لكل حساب وname اختياري.
- أعد تشغيل البوابة. يبدأ Zalo عند حل الرمز المميز (من env أو config).
- يكون الوصول عبر الرسائل الخاصة مضبوطًا افتراضيًا على الاقتران. وافق على الرمز عند أول تواصل مع البوت.
كيف يعمل (السلوك)
- تُطبَّع الرسائل الواردة إلى غلاف القناة المشترك مع عناصر نائبة للوسائط.
- تُوجَّه الردود دائمًا إلى دردشة Zalo نفسها.
- يستخدم long-polling افتراضيًا؛ ويتوفر وضع webhook مع
channels.zalo.webhookUrl.
الحدود
- يُجزّأ النص الصادر إلى 2000 حرف (حد Zalo API).
- تُقيَّد تنزيلات/تحميلات الوسائط بواسطة
channels.zalo.mediaMaxMb(الافتراضي 5). - يكون البث محظورًا افتراضيًا لأن حد 2000 حرف يجعل البث أقل فائدة.
التحكم في الوصول (الرسائل الخاصة)
الوصول عبر الرسائل الخاصة
- الافتراضي:
channels.zalo.dmPolicy = "pairing". يتلقى المرسلون غير المعروفين رمز اقتران؛ ويتم تجاهل الرسائل حتى تتم الموافقة عليها (تنتهي صلاحية الرموز بعد ساعة واحدة). - الموافقة عبر:
openclaw pairing list zaloopenclaw pairing approve zalo <CODE>
- الاقتران هو آلية تبادل الرموز الافتراضية. التفاصيل: الاقتران
- يقبل
channels.zalo.allowFromمعرّفات مستخدمين رقمية (لا يتوفر بحث باسم المستخدم).
التحكم في الوصول (المجموعات)
بالنسبة إلى بوتات Zalo Bot Creator / Marketplace، لم يكن دعم المجموعات متاحًا عمليًا لأن البوت لم يكن بالإمكان إضافته إلى مجموعة أصلًا. هذا يعني أن مفاتيح الإعدادات المتعلقة بالمجموعات أدناه موجودة في المخطط، لكنها لم تكن قابلة للاستخدام مع بوتات Marketplace:- يتحكم
channels.zalo.groupPolicyفي معالجة الرسائل الواردة من المجموعات:open | allowlist | disabled. - يقيّد
channels.zalo.groupAllowFromمعرّفات المرسلين الذين يمكنهم تشغيل البوت في المجموعات. - إذا لم يتم تعيين
groupAllowFrom، فيرجع Zalo إلىallowFromلفحوصات المرسلين. - ملاحظة وقت التشغيل: إذا كان
channels.zaloمفقودًا بالكامل، فإن وقت التشغيل لا يزال يرجع إلىgroupPolicy="allowlist"من أجل الأمان.
groupPolicy: "disabled"— يحظر جميع رسائل المجموعات.groupPolicy: "open"— يسمح لأي عضو في المجموعة (مع تقييد بالإشارة).groupPolicy: "allowlist"— افتراضي مغلق الفشل؛ لا يتم قبول سوى المرسلين المسموح لهم.
long-polling مقابل webhook
- الافتراضي: long-polling (لا يلزم عنوان URL عام).
- وضع webhook: اضبط
channels.zalo.webhookUrlوchannels.zalo.webhookSecret.- يجب أن يكون سر webhook بين 8 و256 حرفًا.
- يجب أن يستخدم عنوان URL الخاص بـ webhook بروتوكول HTTPS.
- يرسل Zalo الأحداث مع ترويسة
X-Bot-Api-Secret-Tokenللتحقق. - يتولى HTTP الخاص بالبوابة معالجة طلبات webhook عند
channels.zalo.webhookPath(الافتراضي هو مسار عنوان URL الخاص بـ webhook). - يجب أن تستخدم الطلبات
Content-Type: application/json(أو أنواع وسائط+json). - يتم تجاهل الأحداث المكررة (
event_name + message_id) خلال نافذة إعادة تشغيل قصيرة. - يتم تطبيق تحديد معدل على الاندفاعات المرورية لكل مسار/مصدر وقد تعيد HTTP 429.
getUpdates (الاستطلاع) وwebhook متنافيان وفقًا لوثائق Zalo API.
أنواع الرسائل المدعومة
للحصول على لقطة سريعة للدعم، راجع الإمكانات. تضيف الملاحظات أدناه تفاصيل حيث يحتاج السلوك إلى سياق إضافي.- الرسائل النصية: دعم كامل مع تجزئة عند 2000 حرف.
- عناوين URL العادية في النص: تتصرف مثل الإدخال النصي العادي.
- معاينات الروابط / بطاقات الروابط الغنية: راجع حالة بوتات Marketplace في الإمكانات؛ إذ لم تكن تستثير ردًا بشكل موثوق.
- رسائل الصور: راجع حالة بوتات Marketplace في الإمكانات؛ كانت معالجة الصور الواردة غير موثوقة (مؤشر كتابة من دون رد نهائي).
- الملصقات: راجع حالة بوتات Marketplace في الإمكانات.
- الملاحظات الصوتية / الملفات الصوتية / الفيديو / مرفقات الملفات العامة: راجع حالة بوتات Marketplace في الإمكانات.
- الأنواع غير المدعومة: يتم تسجيلها (مثل الرسائل الواردة من المستخدمين المحميين).
الإمكانات
يلخص هذا الجدول سلوك بوتات Zalo Bot Creator / Marketplace الحالي في OpenClaw.| الميزة | الحالة |
|---|---|
| الرسائل المباشرة | ✅ مدعومة |
| المجموعات | ❌ غير متاحة لبوتات Marketplace |
| الوسائط (الصور الواردة) | ⚠️ محدودة / تحقّق في بيئتك |
| الوسائط (الصور الصادرة) | ⚠️ لم يُعاد اختبارها لبوتات Marketplace |
| عناوين URL العادية في النص | ✅ مدعومة |
| معاينات الروابط | ⚠️ غير موثوقة لبوتات Marketplace |
| التفاعلات | ❌ غير مدعومة |
| الملصقات | ⚠️ لا يوجد رد من الوكيل لبوتات Marketplace |
| الملاحظات الصوتية / الصوت / الفيديو | ⚠️ لا يوجد رد من الوكيل لبوتات Marketplace |
| مرفقات الملفات | ⚠️ لا يوجد رد من الوكيل لبوتات Marketplace |
| السلاسل | ❌ غير مدعومة |
| Polls | ❌ غير مدعومة |
| الأوامر الأصلية | ❌ غير مدعومة |
| البث | ⚠️ محظور (حد 2000 حرف) |
أهداف التسليم (CLI/cron)
- استخدم معرّف دردشة كهدف.
- مثال:
openclaw message send --channel zalo --target 123456789 --message "hi".
استكشاف الأخطاء وإصلاحها
البوت لا يرد:- تحقّق من أن الرمز المميز صالح:
openclaw channels status --probe - تحقّق من أن المرسل معتمد (عبر الاقتران أو
allowFrom) - تحقّق من سجلات البوابة:
openclaw logs --follow
- تأكد من أن عنوان URL الخاص بـ webhook يستخدم HTTPS
- تحقّق من أن الرمز السري يتكون من 8 إلى 256 حرفًا
- أكّد أن نقطة نهاية HTTP الخاصة بالبوابة قابلة للوصول على المسار المهيأ
- تحقّق من أن استطلاع
getUpdatesلا يعمل (فهما متنافيان)
مرجع الإعدادات (Zalo)
الإعدادات الكاملة: الإعدادات المفاتيح المسطحة ذات المستوى الأعلى (channels.zalo.botToken وchannels.zalo.dmPolicy وما شابه) هي صيغة مختصرة قديمة لحساب واحد. فضّل channels.zalo.accounts.<id>.* في الإعدادات الجديدة. لا يزال كلا الشكلين موثقًا هنا لأنهما موجودان في المخطط.
خيارات الموفّر:
channels.zalo.enabled: تمكين/تعطيل بدء تشغيل القناة.channels.zalo.botToken: رمز البوت المميز من Zalo Bot Platform.channels.zalo.tokenFile: قراءة الرمز المميز من مسار ملف عادي. يتم رفض الروابط الرمزية.channels.zalo.dmPolicy:pairing | allowlist | open | disabled(الافتراضي: pairing).channels.zalo.allowFrom: قائمة سماح الرسائل الخاصة (معرّفات المستخدمين). يتطلبopenوجود"*". سيطلب المعالج المعرّفات الرقمية.channels.zalo.groupPolicy:open | allowlist | disabled(الافتراضي: allowlist). موجود في الإعدادات؛ راجع الإمكانات والتحكم في الوصول (المجموعات) لسلوك بوتات Marketplace الحالي.channels.zalo.groupAllowFrom: قائمة سماح مرسلي المجموعات (معرّفات المستخدمين). ترجع إلىallowFromعندما لا تكون معيّنة.channels.zalo.mediaMaxMb: الحد الأقصى للوسائط الواردة/الصادرة (MB، الافتراضي 5).channels.zalo.webhookUrl: تمكين وضع webhook (يتطلب HTTPS).channels.zalo.webhookSecret: سر webhook (8-256 حرفًا).channels.zalo.webhookPath: مسار webhook على خادم HTTP الخاص بالبوابة.channels.zalo.proxy: عنوان URL للوكيل لطلبات API.
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: سياسة الرسائل الخاصة لكل حساب.channels.zalo.accounts.<id>.allowFrom: قائمة السماح لكل حساب.channels.zalo.accounts.<id>.groupPolicy: سياسة المجموعات لكل حساب. موجودة في الإعدادات؛ راجع الإمكانات والتحكم في الوصول (المجموعات) لسلوك بوتات Marketplace الحالي.channels.zalo.accounts.<id>.groupAllowFrom: قائمة سماح مرسلي المجموعات لكل حساب.channels.zalo.accounts.<id>.webhookUrl: عنوان URL لـ webhook لكل حساب.channels.zalo.accounts.<id>.webhookSecret: سر webhook لكل حساب.channels.zalo.accounts.<id>.webhookPath: مسار webhook لكل حساب.channels.zalo.accounts.<id>.proxy: عنوان URL للوكيل لكل حساب.
ذو صلة
- نظرة عامة على القنوات — جميع القنوات المدعومة
- الاقتران — مصادقة الرسائل الخاصة وتدفق الاقتران
- المجموعات — سلوك الدردشة الجماعية والتقييد بالإشارة
- توجيه القنوات — توجيه الجلسات للرسائل
- الأمان — نموذج الوصول والتقوية