Regional platforms
Zalo
وضعیت: آزمایشی. هم پیامهای مستقیم و هم گفتوگوهای گروهی پیادهسازی شدهاند؛ جدول قابلیتها در ادامه، رفتار تأییدشده در رباتهای Zalo Bot Creator / Marketplace را نشان میدهد.
Plugin همراه
Zalo در نسخههای فعلی OpenClaw بهصورت یک Plugin همراه عرضه میشود، بنابراین بیلدهای بستهبندیشده به نصب جداگانه نیاز ندارند.
در بیلدی قدیمیتر یا نصبی سفارشی که Zalo را شامل نمیشود، بسته npm را مستقیماً نصب کنید:
- نصب:
openclaw plugins install @openclaw/zalo - نسخه پینشده:
openclaw plugins install @openclaw/zalo@2026.6.11 - از یک checkout محلی:
openclaw plugins install ./path/to/local/zalo-plugin - جزئیات: Pluginها
راهاندازی سریع
- در https://bot.zaloplatforms.com یک توکن ربات ایجاد کنید (وارد شوید، یک ربات بسازید و تنظیمات را پیکربندی کنید). توکن برابر است با
numeric_id:secret؛ برای رباتهای Marketplace، توکن قابلاستفاده در زمان اجرا ممکن است در پیام خوشامدگویی ربات نمایش داده شود. - توکن را یا با متغیر محیطی
ZALO_BOT_TOKEN=...(فقط حساب پیشفرض) یا در پیکربندی تنظیم کنید. - Gateway را راهاندازی مجدد کنید.
- در نخستین تماس پیام مستقیم، کد جفتسازی را تأیید کنید (سیاست پیشفرض پیام مستقیم، جفتسازی است).
پیکربندی حداقلی:
{ channels: { zalo: { enabled: true, accounts: { default: { botToken: "12345689:abc-xyz", dmPolicy: "pairing", }, }, }, },}چندحسابی: ورودیهای بیشتری زیر channels.zalo.accounts.<id> اضافه کنید که هرکدام botToken/name خود را داشته باشند. channels.zalo.botToken (مسطح، بدون accounts) شکل کوتاه قدیمی برای یک حساب است؛ برای پیکربندیهای جدید، accounts.<id>.* را ترجیح دهید.
چیست
Zalo یک برنامه پیامرسان متمرکز بر ویتنام است. API ربات آن به Gateway اجازه میدهد رباتی را هم برای مکالمات 1:1 و هم برای گفتوگوهای گروهی اجرا کند و پاسخها را بهصورت قطعی به Zalo مسیریابی کند (مدل هرگز کانالها را انتخاب نمیکند).
این صفحه رباتهای Zalo Bot Creator / Marketplace را پوشش میدهد. رباتهای Zalo Official Account (OA) سطح محصول متفاوتی هستند و ممکن است رفتار متفاوتی داشته باشند؛ این صفحه آنها را پوشش نمیدهد.
نحوه کار
- پیامهای ورودی با جاینگهدارهای رسانه در پاکت مشترک کانال نرمالسازی میشوند.
- پاسخها همیشه به همان گفتوگوی Zalo بازگردانده میشوند؛ پاسخ نقلقولی استفاده نمیشود (
replyToModeبهطور ثابت غیرفعال است). - حالت پیشفرض، نظرسنجی طولانی (
getUpdates) است؛ حالت Webhook از طریقchannels.zalo.webhookUrlدر دسترس است. - در گروهها برای فعالکردن ربات، @mention لازم است؛ این مورد بهازای هر کانال قابلپیکربندی نیست.
محدودیتها
| محدودیت | مقدار |
|---|---|
| اندازه قطعه متن خروجی | 2000 نویسه (محدودیت API Zalo) |
| اندازه رسانه (ورودی/خروجی) | channels.zalo.mediaMaxMb، پیشفرض 5 MB |
| بدنه درخواست Webhook | 1 MB، مهلت خواندن 30s |
| محدودیت نرخ Webhook | 120 درخواست / 60s برای هر مسیر+IP کارخواه، سپس HTTP 429 |
| سنگقبرهای بازپخش Webhook | 30 روز، حداکثر 20,000 رویداد تکمیلشده برای هر حساب (با کلید شناسه پیام) |
کنترل دسترسی
پیامهای مستقیم
channels.zalo.dmPolicy:pairing(پیشفرض) |allowlist|open|disabled.- جفتسازی: فرستندگان ناشناس یک کد جفتسازی دریافت میکنند؛ پیامها تا زمان تأیید نادیده گرفته میشوند. اعتبار کدها پس از 1 ساعت منقضی میشود.
openclaw pairing list zaloopenclaw pairing approve zalo <CODE>- جزئیات: جفتسازی
channels.zalo.allowFromشناسههای عددی کاربر Zalo را میپذیرد (جستوجوی نام کاربری وجود ندارد).openبه"*"نیاز دارد.
گروهها
گفتوگوهای گروهی توسط Plugin پشتیبانی میشوند (chatTypes: ["direct", "group"]) و دسترسی به آنها به mention و سیاست گروه وابسته است:
channels.zalo.groupPolicy:open|allowlist|disabled.channels.zalo.groupAllowFromمشخص میکند کدام شناسههای فرستنده میتوانند ربات را در گروهها فعال کنند؛ اگر تنظیم نشده باشد، بهallowFromبرمیگردد.- تفکیک پیشفرض: وقتی
channels.zaloپیکربندی شده باشد،groupPolicyتنظیمنشده بهopenتفکیک میشود. وقتیchannels.zaloکاملاً وجود نداشته باشد، زمان اجرا بهصورت بسته و ایمن رویallowlistقرار میگیرد. - محدودیت گزارششده در دنیای واقعی: در برخی راهاندازیهای ربات Marketplace، ربات اصلاً قابل افزودن به گروه نبود. اگر با این مورد روبهرو شدید، آن را در تنظیمات Zalo Bot Platform ربات خود بررسی کنید؛ این محدودیتی از سمت پلتفرم است، نه سیاست OpenClaw.
نظرسنجی طولانی در برابر Webhook
- پیشفرض: نظرسنجی طولانی (بدون نیاز به URL عمومی).
- حالت Webhook: مقادیر
channels.zalo.webhookUrlوchannels.zalo.webhookSecretرا تنظیم کنید.- URL Webhook باید از HTTPS استفاده کند.
- رمز Webhook باید 8-256 نویسه باشد.
- Zalo رویدادها را با سرآیند
X-Bot-Api-Secret-Tokenارسال میکند که با مقایسهای با زمان ثابت بررسی میشود. - HTTP Gateway درخواستهای Webhook را در
channels.zalo.webhookPathمدیریت میکند (بهطور پیشفرض، مسیر URL Webhook). - درخواستها باید از
Content-Type: application/json(یا یک نوع رسانه+json) استفاده کنند. - تنها پس از ذخیره پایدار رویداد خام، HTTP 200 برگردانده میشود؛ خطاهای ذخیرهسازی HTTP 500 برمیگردانند.
- طبق مستندات API Zalo، نظرسنجی getUpdates و Webhook بهازای هر حساب مانعةالجمع هستند.
انواع پیام پشتیبانیشده
- متن: پشتیبانی کامل، تقسیمشده به قطعههای 2000 نویسهای.
- رسانه: ورودی/خروجی، محدودشده به
mediaMaxMb. - واکنشها، رشتهها، نظرسنجیها و فرمانهای بومی: توسط Plugin پشتیبانی نمیشوند.
- استریم: Plugin قابلیت استریم بلوکی را اعلام میکند، اما Zalo هیچ گزینه تنظیم اختصاصی برای صف خروجی/ادغام متن ندارد (برخلاف برخی کانالهای منطقهای دیگر)؛ اگر این موضوع برای کاربرد شما اهمیت دارد، رفتار فعلی را در محیط خود بررسی کنید.
قابلیتها
| ویژگی | وضعیت |
|---|---|
| پیامهای مستقیم | پشتیبانی میشود |
| گروهها | پشتیبانی میشود (وابسته به mention) |
| رسانه (ورودی/خروجی) | پشتیبانی میشود، محدودشده به mediaMaxMb |
| واکنشها | پشتیبانی نمیشود |
| رشتهها | پشتیبانی نمیشود |
| نظرسنجیها | پشتیبانی نمیشود |
| فرمانهای بومی | پشتیبانی نمیشود |
| پاسخ به / نقلقول | استفاده نمیشود (بهطور ثابت غیرفعال) |
مقصدهای تحویل (CLI/Cron)
از شناسه گفتوگو بهعنوان مقصد استفاده کنید:
openclaw message send --channel zalo --target 123456789 --message "hi"عیبیابی
ربات پاسخ نمیدهد:
- توکن را بررسی کنید:
openclaw channels status --probe - تأیید کنید فرستنده مجاز است (جفتسازی یا
allowFrom) - گزارشهای Gateway را بررسی کنید:
openclaw logs --follow
Webhook رویدادها را دریافت نمیکند:
- تأیید کنید URL Webhook از HTTPS استفاده میکند
- تأیید کنید رمز 8-256 نویسه است
- تأیید کنید نقطه پایانی HTTP Gateway در مسیر پیکربندیشده در دسترس است
- تأیید کنید نظرسنجی getUpdates همزمان در حال اجرا نیست (این دو مانعةالجمع هستند)
- افزایش ناگهانی درخواستها میتواند HTTP 429 برگرداند (120 درخواست / 60s برای هر مسیر+IP)؛ عقبنشینی کنید و دوباره تلاش کنید
مرجع پیکربندی
پیکربندی کامل: پیکربندی
| تنظیم | توضیحات | پیشفرض |
|---|---|---|
channels.zalo.enabled |
فعال/غیرفعالکردن راهاندازی کانال | true |
channels.zalo.accounts.<id>.botToken |
توکن ربات از Zalo Bot Platform | - |
channels.zalo.accounts.<id>.tokenFile |
خواندن توکن از فایل (پیوندهای نمادین رد میشوند) | - |
channels.zalo.accounts.<id>.name |
نام نمایشی | - |
channels.zalo.accounts.<id>.enabled |
فعال/غیرفعالکردن این حساب | true |
channels.zalo.accounts.<id>.dmPolicy |
سیاست پیام مستقیم بهازای حساب | pairing |
channels.zalo.accounts.<id>.allowFrom |
فهرست مجاز پیام مستقیم (شناسههای کاربر) | - |
channels.zalo.accounts.<id>.groupPolicy |
سیاست گروه بهازای حساب | گروهها را ببینید |
channels.zalo.accounts.<id>.groupAllowFrom |
فهرست مجاز فرستندگان گروه؛ به allowFrom برمیگردد |
- |
channels.zalo.accounts.<id>.mediaMaxMb |
سقف رسانه ورودی/خروجی (MB) | 5 |
channels.zalo.accounts.<id>.webhookUrl |
فعالکردن حالت Webhook (نیازمند HTTPS) | - |
channels.zalo.accounts.<id>.webhookSecret |
رمز Webhook (8-256 نویسه) | - |
channels.zalo.accounts.<id>.webhookPath |
مسیر Webhook روی سرور HTTP Gateway | مسیر URL Webhook |
channels.zalo.accounts.<id>.proxy |
URL پراکسی برای درخواستهای API | - |
channels.zalo.accounts.<id>.responsePrefix |
بازنویسی پیشوند پاسخ خروجی | - |
channels.zalo.defaultAccount |
حساب پیشفرض هنگام پیکربندی چند حساب | default |
channels.zalo.botToken، channels.zalo.dmPolicy و دیگر کلیدهای مسطح سطح بالا، شکل کوتاه قدیمی تکحسابی برای فیلدهای بالا هستند؛ هر دو شکل پشتیبانی میشوند.
گزینه محیطی: ZALO_BOT_TOKEN=... فقط توکن حساب پیشفرض را تفکیک میکند.
مرتبط
- نمای کلی کانالها - همه کانالهای پشتیبانیشده
- جفتسازی - احراز هویت پیام مستقیم و جریان جفتسازی
- گروهها - رفتار گفتوگوی گروهی و الزام mention
- مسیریابی کانال - مسیریابی نشست برای پیامها
- امنیت - مدل دسترسی و مقاومسازی