Regional platforms
Zalo شخصی
وضعیت: آزمایشی. این یکپارچهسازی یک حساب شخصی Zalo را از طریق zca-js بومی، درونفرایندی و بدون باینری CLI خارجی خودکار میکند.
نصب
Zalo Personal یک Plugin خارجی رسمی است و همراه هسته ارائه نمیشود. پیش از استفاده آن را نصب کنید:
openclaw plugins install @openclaw/zalouser- سنجاقکردن یک نسخه:
openclaw plugins install @openclaw/zalouser@<version> - از یک نسخه دریافتشده از منبع:
openclaw plugins install ./path/to/local/zalouser-plugin - جزئیات: Pluginها
راهاندازی سریع
- Plugin را نصب کنید (در بالا).
- وارد شوید (با QR، روی دستگاه Gateway):
openclaw channels login --channel zalouser- کد QR را با برنامه موبایل Zalo اسکن کنید.
- کانال را فعال کنید:
{ channels: { zalouser: { enabled: true, dmPolicy: "pairing", }, },}- Gateway را راهاندازی مجدد کنید (یا راهاندازی را به پایان برسانید).
- دسترسی پیام مستقیم بهطور پیشفرض از جفتسازی استفاده میکند؛ در نخستین تماس، کد جفتسازی را تأیید کنید.
چیست
- بهطور کامل و درونفرایندی از طریق کتابخانه
zca-jsاجرا میشود (بدون باینری خارجیzca/openzca). - برای دریافت پیامهای ورودی از شنوندههای رویداد بومی (
message،error) استفاده میکند. - پاسخها را مستقیماً از طریق API جاوااسکریپت ارسال میکند (متن/رسانه/پیوند).
- برای موارد استفاده «حساب شخصی» طراحی شده است که API ربات Zalo در دسترس نیست.
نامگذاری
شناسه کانال zalouser است تا صریحاً نشان دهد که این یک حساب کاربری شخصی Zalo را خودکار میکند (غیررسمی). zalo برای یکپارچهسازی رسمی احتمالی با API Zalo در آینده رزرو شده است.
یافتن شناسهها (دایرکتوری)
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 هستند.
کنترل دسترسی (پیامهای مستقیم)
channels.zalouser.dmPolicy: pairing | allowlist | open | disabled (پیشفرض: pairing).
channels.zalouser.allowFrom باید از شناسههای پایدار کاربر Zalo استفاده کند. همچنین میتواند به گروههای ثابت دسترسی فرستنده (accessGroup:<name>) ارجاع دهد. هنگام راهاندازی تعاملی، نامهای واردشده را میتوان با استفاده از جستوجوی درونفرایندی مخاطبان Plugin به شناسه تبدیل کرد.
اگر نامی خام در پیکربندی باقی بماند، هنگام راهاندازی فقط در صورتی تبدیل میشود که channels.zalouser.dangerouslyAllowNameMatching: true فعال باشد. بدون این انتخاب صریح، بررسی فرستنده هنگام اجرا فقط بر اساس شناسه انجام میشود و نامهای خام برای مجوزدهی نادیده گرفته میشوند.
تأیید از طریق:
openclaw pairing list zalouseropenclaw 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بازمیگردد.
مثال:
{ 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.
مثال:
{ channels: { zalouser: { groupPolicy: "allowlist", groups: { "*": { enabled: true, requireMention: true }, "Work Chat": { enabled: true, requireMention: false }, }, }, },}چندحسابی
حسابها به پروفایلهای zalouser در وضعیت OpenClaw نگاشت میشوند. مثال:
{ channels: { zalouser: { enabled: true, defaultAccount: "default", accounts: { work: { enabled: true, profile: "work" }, }, }, },}متغیرهای محیطی
انتخاب پروفایل میتواند از متغیرهای محیطی نیز انجام شود:
| متغیر | هدف |
|---|---|
ZALOUSER_PROFILE |
نام پروفایلی که وقتی هیچ profile در پیکربندی کانال یا حساب تنظیم نشده است استفاده میشود. |
ZCA_PROFILE |
مقدار جایگزین قدیمی که فقط وقتی ZALOUSER_PROFILE تنظیم نشده است استفاده میشود. |
نام پروفایل، اعتبارنامههای ذخیرهشده ورود به Zalo را در وضعیت OpenClaw انتخاب میکند. ترتیب تبدیل:
profileصریح در پیکربندی.ZALOUSER_PROFILE.ZCA_PROFILE.- شناسه حساب برای حسابهای غیراصلی، یا
defaultبرای حساب پیشفرض.
برای راهاندازیهای چندحسابی، ترجیحاً profile را برای هر حساب در پیکربندی تنظیم کنید تا یک متغیر محیطی باعث نشود چند حساب نشست ورود یکسانی را به اشتراک بگذارند.
وضعیت تایپ، واکنشها و تأییدهای تحویل
- OpenClaw پیش از ارسال پاسخ، یک رویداد تایپ ارسال میکند (بهصورت تلاش در حد امکان).
- کنش واکنش به پیام
reactبرایzalouserدر کنشهای کانال پشتیبانی میشود.- برای حذف یک ایموجی واکنش مشخص از پیام، از
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را حذف کنید؛ کانال اکنون بهطور کامل و درونفرایندی از طریقzca-jsو بدون باینری CLI خارجی اجرا میشود.
مرتبط
- نمای کلی کانالها - همه کانالهای پشتیبانیشده
- جفتسازی - احراز هویت پیام مستقیم و جریان جفتسازی
- گروهها - رفتار گفتوگوی گروهی و محدودسازی بر اساس اشاره
- مسیریابی کانال - مسیریابی نشست برای پیامها
- امنیت - مدل دسترسی و مقاومسازی