Developer and self-hosted
Synology Chat
يتصل Synology Chat بـ OpenClaw من خلال زوج من Webhook: يرسل Webhook صادر من Synology Chat الرسائل المباشرة الواردة إلى Gateway، وتعود الردود من خلال Webhook وارد إلى Synology Chat.
الحالة: Plugin رسمي، يُثبَّت بشكل منفصل. الرسائل المباشرة فقط؛ إرسال النصوص والملفات المستند إلى عناوين URL مدعوم.
التثبيت
openclaw plugins install @openclaw/synology-chatنسخة العمل المحلية (عند التشغيل من مستودع git):
openclaw plugins install ./path/to/local/synology-chat-pluginالتفاصيل: Plugins
الإعداد السريع
- ثبّت Plugin (أعلاه).
- في عمليات تكامل Synology Chat:
- أنشئ Webhook واردًا وانسخ عنوان URL الخاص به.
- أنشئ Webhook صادرًا باستخدام الرمز المميز السري الخاص بك.
- وجّه عنوان URL للـ Webhook الصادر إلى Gateway الخاص بـ OpenClaw:
https://gateway-host/webhook/synologyافتراضيًا.- أو
channels.synology-chat.webhookPathالمخصص.
- أكمل الإعداد في OpenClaw. يظهر Synology Chat في قائمة إعداد القنوات نفسها في كلا المسارين:
- الموجّه:
openclaw onboardأوopenclaw channels add - المباشر:
openclaw channels add --channel synology-chat --token <token> --url <incoming-webhook-url>
- الموجّه:
- أعد تشغيل Gateway وأرسل رسالة مباشرة إلى بوت Synology Chat.
تفاصيل مصادقة Webhook:
- يقبل OpenClaw الرمز المميز للـ Webhook الصادر من
body.token، ثم?token=...، ثم الترويسات. - صيغ الترويسات المقبولة:
x-synology-tokenx-webhook-tokenx-openclaw-tokenAuthorization: Bearer <token>
- تؤدي الرموز المميزة الفارغة أو المفقودة إلى الرفض الآمن.
- يمكن أن تكون الحمولات من النوع
application/x-www-form-urlencodedأوapplication/json؛ والحقولtokenوuser_idوtextمطلوبة.
الحد الأدنى للإعداد:
{ channels: { "synology-chat": { enabled: true, token: "synology-outgoing-token", incomingUrl: "https://nas.example.com/webapi/entry.cgi?api=SYNO.Chat.External&method=incoming&version=2&token=...", webhookPath: "/webhook/synology", dmPolicy: "allowlist", allowedUserIds: ["123456"], rateLimitPerMinute: 30, allowInsecureSsl: false, }, },}متغيرات البيئة
بالنسبة إلى الحساب الافتراضي، يمكنك استخدام متغيرات البيئة:
SYNOLOGY_CHAT_TOKENSYNOLOGY_CHAT_INCOMING_URLSYNOLOGY_NAS_HOSTSYNOLOGY_ALLOWED_USER_IDS(مفصولة بفواصل)SYNOLOGY_RATE_LIMITOPENCLAW_BOT_NAME
تتجاوز قيم الإعداد متغيرات البيئة.
لا يمكن تعيين SYNOLOGY_CHAT_INCOMING_URL وSYNOLOGY_NAS_HOST من ملف .env في مساحة العمل؛ راجع ملفات .env في مساحة العمل.
سياسة الرسائل المباشرة والتحكم في الوصول
- قيم
dmPolicyالمدعومة:allowlist(الافتراضية) وopenوdisabled. لا يوفّر Synology Chat مسار إقران؛ وافق على المرسلين بإضافة معرّفات مستخدمي Synology الرقمية الخاصة بهم إلىallowedUserIds. - يقبل
allowedUserIdsقائمة (أو سلسلة مفصولة بفواصل) من معرّفات مستخدمي Synology. - في وضع
allowlist، تُعامل قائمةallowedUserIdsالفارغة على أنها إعداد خاطئ، ولن يبدأ مسار Webhook. - يسمح
dmPolicy: "open"بالرسائل المباشرة العامة فقط عندما تتضمنallowedUserIdsالقيمة"*"؛ ومع الإدخالات التقييدية، لا يمكن إلا للمستخدمين المطابقين إجراء المحادثة. كما يرفضopenمع قائمةallowedUserIdsفارغة بدء المسار. - يحظر
dmPolicy: "disabled"الرسائل المباشرة. - يظل ربط مستلم الرد قائمًا افتراضيًا على
user_idالرقمي الثابت. يمثّلchannels.synology-chat.dangerouslyAllowNameMatching: trueوضع توافق للاستخدام في حالات الطوارئ، ويعيد تمكين البحث باستخدام اسم المستخدم/الاسم المستعار القابل للتغيير لتسليم الردود.
التسليم الصادر
استخدم معرّفات مستخدمي Synology Chat الرقمية كأهداف. تُقبل البادئات synology-chat: وsynology_chat: وsynology:.
أمثلة:
openclaw message send --channel synology-chat --target 123456 --message "Hello from OpenClaw"openclaw message send --channel synology-chat --target synology-chat:123456 --message "Hello again"openclaw message send --channel synology-chat --target synology:123456 --message "Short prefix"يُقسَّم النص الصادر عند 2000 حرف. يُدعم إرسال الوسائط من خلال تسليم الملفات المستند إلى عناوين URL: ينزّل جهاز NAS الملف ويرفقه (بحد أقصى 32 ميغابايت). يجب أن تستخدم عناوين URL للملفات الصادرة http أو https، وتُرفض أهداف الشبكة الخاصة أو المحظورة بأي شكل آخر قبل أن يمرّر OpenClaw عنوان URL إلى Webhook الخاص بجهاز NAS.
تعدد الحسابات
تُدعم حسابات Synology Chat المتعددة ضمن channels.synology-chat.accounts.
يمكن لكل حساب تجاوز الرمز المميز وعنوان URL الوارد ومسار Webhook وسياسة الرسائل المباشرة والحدود.
تُعزل جلسات الرسائل المباشرة لكل حساب ومستخدم، ولذلك فإن user_id الرقمي نفسه
في حسابين مختلفين على Synology لا يتشارك حالة سجل المحادثة.
امنح كل حساب مفعّل webhookPath مميزًا. يرفض OpenClaw المسارات المتطابقة المكررة
ويرفض بدء الحسابات المسماة التي لا تفعل سوى وراثة مسار Webhook مشترك في إعدادات تعدد الحسابات.
إذا كنت تحتاج عمدًا إلى الوراثة القديمة لحساب مسمى، فعيّن
dangerouslyAllowInheritedWebhookPath: true في ذلك الحساب أو في channels.synology-chat،
لكن تظل المسارات المتطابقة المكررة مرفوضة رفضًا آمنًا. يُفضّل تحديد مسارات صريحة لكل حساب.
{ channels: { "synology-chat": { enabled: true, accounts: { default: { token: "token-a", incomingUrl: "https://nas-a.example.com/...token=...", }, alerts: { token: "token-b", incomingUrl: "https://nas-b.example.com/...token=...", webhookPath: "/webhook/synology-alerts", dmPolicy: "allowlist", allowedUserIds: ["987654"], }, }, }, },}ملاحظات أمنية
- حافظ على سرية
tokenودوّره إذا تسرّب. - أبقِ
allowInsecureSsl: falseما لم تكن تثق صراحةً بشهادة محلية موقعة ذاتيًا لجهاز NAS. - تُتحقق طلبات Webhook الواردة باستخدام الرمز المميز، ويُطبَّق عليها حد للمعدل لكل مرسل (
rateLimitPerMinute، والقيمة الافتراضية 30). - تستخدم عمليات التحقق من الرموز المميزة غير الصالحة مقارنة أسرار ثابتة الزمن وتؤدي إلى الرفض الآمن؛ وتؤدي المحاولات المتكررة باستخدام رمز مميز غير صالح إلى حظر عنوان IP المصدر مؤقتًا.
- يُنقّى نص الرسالة الواردة من أنماط حقن الموجّهات المعروفة ويُقتطع عند 4000 حرف.
- يُفضّل استخدام
dmPolicy: "allowlist"في بيئة الإنتاج. - أبقِ
dangerouslyAllowNameMatchingمعطّلًا ما لم تكن تحتاج صراحةً إلى تسليم الردود القديم المستند إلى اسم المستخدم. - أبقِ
dangerouslyAllowInheritedWebhookPathمعطّلًا ما لم تكن تقبل صراحةً مخاطر التوجيه عبر مسار مشترك في إعداد متعدد الحسابات.
استكشاف الأخطاء وإصلاحها
Missing required fields (token, user_id, text):- تفتقد حمولة Webhook الصادر أحد الحقول المطلوبة
- إذا كان Synology يرسل الرمز المميز في الترويسات، فتأكد من أن Gateway/الوكيل يحافظ على تلك الترويسات
Invalid token:- سر Webhook الصادر لا يطابق
channels.synology-chat.token - يصل الطلب إلى الحساب/مسار Webhook الخطأ
- أزال وكيل عكسي ترويسة الرمز المميز قبل وصول الطلب إلى OpenClaw
- سر Webhook الصادر لا يطابق
Rate limit exceeded:- يمكن أن تؤدي كثرة محاولات استخدام رمز مميز غير صالح من المصدر نفسه إلى حظر ذلك المصدر مؤقتًا
- يخضع المرسلون المصادق عليهم أيضًا لحد منفصل لمعدل الرسائل لكل مستخدم
Allowlist is empty. Configure allowedUserIds or use dmPolicy=open with allowedUserIds=["*"].:- تم تمكين
dmPolicy="allowlist"لكن لم تتم تهيئة أي مستخدمين
- تم تمكين
User not authorized:user_idالرقمي للمرسل غير موجود فيallowedUserIds
ذو صلة
- نظرة عامة على القنوات — جميع القنوات المدعومة
- المجموعات — سلوك المحادثات الجماعية واشتراط الإشارة
- توجيه القنوات — توجيه جلسات الرسائل
- الأمان — نموذج الوصول والتقوية