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 - از یک نسخه محلی کد:
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 یک برنامه پیامرسان متمرکز بر ویتنام است. Bot API آن به Gateway اجازه میدهد رباتی را برای مکالمات یکبهیک و گفتوگوهای گروهی اجرا کند و پاسخها را بهصورت قطعی به Zalo بازگرداند (مدل هرگز کانالها را انتخاب نمیکند).
این صفحه رباتهای Zalo Bot Creator / Marketplace را پوشش میدهد. رباتهای Zalo Official Account (OA) سطح محصول متفاوتی هستند و ممکن است رفتار متفاوتی داشته باشند؛ این صفحه آنها را پوشش نمیدهد.
نحوه کار
- پیامهای ورودی همراه با جاینگهدارهای رسانه، در قالب پوش مشترک کانال یکسانسازی میشوند.
- پاسخها همیشه به همان گفتوگوی Zalo بازگردانده میشوند؛ پاسخ نقلقولی استفاده نمیشود (
replyToModeبهصورت ثابت غیرفعال است). - بهطور پیشفرض از نظرسنجی طولانی (
getUpdates) استفاده میشود؛ حالت Webhook از طریقchannels.zalo.webhookUrlدر دسترس است. - در گروهها، برای فعالشدن ربات باید به آن @اشاره شود؛ این مورد برای هر کانال قابلپیکربندی نیست.
محدودیتها
| محدودیت | مقدار |
|---|---|
| اندازه قطعه متن خروجی | ۲۰۰۰ نویسه (محدودیت Zalo API) |
| اندازه رسانه (ورودی/خروجی) | channels.zalo.mediaMaxMb، مقدار پیشفرض 5 مگابایت |
| بدنه درخواست Webhook | ۱ مگابایت، مهلت خواندن ۳۰ ثانیه |
| محدودیت نرخ Webhook | ۱۲۰ درخواست در ۶۰ ثانیه بهازای هر مسیر+IP کارخواه، سپس HTTP 429 |
| بازه رویداد تکراری Webhook | ۵ دقیقه (با کلید مسیر + حساب + نام رویداد + گفتوگو + فرستنده + شناسه پیام) |
کنترل دسترسی
پیامهای مستقیم
channels.zalo.dmPolicy:pairing(پیشفرض) |allowlist|open|disabled.- جفتسازی: فرستندگان ناشناس یک کد جفتسازی دریافت میکنند؛ پیامها تا زمان تأیید نادیده گرفته میشوند. کدها پس از ۱ ساعت منقضی میشوند.
openclaw pairing list zaloopenclaw pairing approve zalo <CODE>- جزئیات: جفتسازی
channels.zalo.allowFromشناسههای عددی کاربران Zalo را میپذیرد (جستوجوی نام کاربری وجود ندارد). حالتopenبه"*"نیاز دارد.
گروهها
گفتوگوهای گروهی توسط Plugin پشتیبانی میشوند (chatTypes: ["direct", "group"]) و دسترسی به آنها با اشاره و سیاست گروه کنترل میشود:
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 باید بین ۸ تا ۲۵۶ نویسه باشد.
- Zalo رویدادها را با سرآیند
X-Bot-Api-Secret-Tokenارسال میکند که با مقایسه زمانثابت بررسی میشود. - HTTP مربوط به Gateway درخواستهای Webhook را در
channels.zalo.webhookPathمدیریت میکند (مقدار پیشفرض، مسیر URL مربوط به Webhook است). - درخواستها باید از
Content-Type: application/json(یا نوع رسانهای+json) استفاده کنند. - طبق مستندات Zalo API، نظرسنجی getUpdates و Webhook برای هر ربات متقابلاً انحصاری هستند.
انواع پیام پشتیبانیشده
- متن: پشتیبانی کامل، قطعهبندیشده به ۲۰۰۰ نویسه.
- رسانه: ورودی/خروجی، محدودشده با
mediaMaxMb. - واکنشها، رشتهها، نظرسنجیها و فرمانهای بومی: توسط Plugin پشتیبانی نمیشوند.
- جریانی: Plugin قابلیت جریاندهی بلوکی را اعلام میکند، اما Zalo گزینههای اختصاصی تنظیم صف خروجی/ادغام متن ندارد (برخلاف برخی کانالهای منطقهای دیگر)؛ اگر این موضوع برای مورد استفاده شما اهمیت دارد، رفتار فعلی را در محیط خود بررسی کنید.
قابلیتها
| قابلیت | وضعیت |
|---|---|
| پیامهای مستقیم | پشتیبانی میشود |
| گروهها | پشتیبانی میشود (نیازمند اشاره) |
| رسانه (ورودی/خروجی) | پشتیبانی میشود، محدود به 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 استفاده میکند
- تأیید کنید که راز بین ۸ تا ۲۵۶ نویسه است
- تأیید کنید که نقطه پایانی HTTP مربوط به Gateway در مسیر پیکربندیشده در دسترس است
- تأیید کنید که نظرسنجی getUpdates همزمان در حال اجرا نیست (این دو متقابلاً انحصاری هستند)
- افزایش ناگهانی درخواستها میتواند HTTP 429 برگرداند (۱۲۰ درخواست در ۶۰ ثانیه بهازای هر مسیر+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 |
سقف رسانه ورودی/خروجی (مگابایت) | 5 |
channels.zalo.accounts.<id>.webhookUrl |
فعالکردن حالت Webhook (HTTPS الزامی است) | - |
channels.zalo.accounts.<id>.webhookSecret |
راز Webhook (۸ تا ۲۵۶ نویسه) | - |
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=... فقط توکن حساب پیشفرض را تعیین میکند.
مرتبط
- نمای کلی کانالها - همه کانالهای پشتیبانیشده
- جفتسازی - احراز هویت پیام مستقیم و جریان جفتسازی
- گروهها - رفتار گفتوگوی گروهی و الزام اشاره
- مسیریابی کانال - مسیریابی نشست برای پیامها
- امنیت - مدل دسترسی و مقاومسازی