Developer and self-hosted
Nextcloud Talk
Nextcloud Talk هو Plugin قناة قابل للتنزيل (@openclaw/nextcloud-talk) يربط OpenClaw بمثيل Nextcloud مستضاف ذاتيًا من خلال روبوت Webhook في Talk. تُدعَم الرسائل المباشرة والغرف والتفاعلات ورسائل Markdown؛ وتُرسل الوسائط على هيئة عناوين URL.
التثبيت
openclaw plugins install @openclaw/nextcloud-talkاستخدم مواصفة الحزمة المجردة لمتابعة وسم الإصدار الرسمي الحالي. ثبّت إصدارًا محددًا بدقة فقط عندما تحتاج إلى تثبيت قابل لإعادة الإنتاج.
من نسخة محلية من المستودع (سير عمل التطوير):
openclaw plugins install ./path/to/local/nextcloud-talk-pluginأعد تشغيل Gateway بعد التثبيت. التفاصيل: Plugins
الإعداد السريع (للمبتدئين)
-
ثبّت Plugin (كما هو موضح أعلاه).
-
أنشئ روبوتًا على خادم Nextcloud:
bash ./occ talk:bot:install "OpenClaw" "<shared-secret>" "<webhook-url>" --feature webhook --feature response --feature reactionاحتفظ بالخيار
--feature response: فبدونه تفشل الردود الصادرة بالرمز 401. أصلح روبوتًا موجودًا باستخدام./occ talk:bot:state --feature webhook --feature response --feature reaction <botId> 1. -
فعّل الروبوت في إعدادات الغرفة المستهدفة.
-
اضبط OpenClaw:
- الإعداد:
channels.nextcloud-talk.baseUrl+channels.nextcloud-talk.botSecret - أو متغير البيئة:
NEXTCLOUD_TALK_BOT_SECRET(للحساب الافتراضي فقط)
إعداد CLI (الخياران
--urlو--tokenاسمان بديلان للحقول الصريحة؛ ويعملnc-talkوncكاسمين بديلين للقناة):bash openclaw channels add --channel nextcloud-talk \ --url https://cloud.example.com \ --token "<shared-secret>"الحقول الصريحة المكافئة:
bash openclaw channels add --channel nextcloud-talk \ --base-url https://cloud.example.com \ --secret "<shared-secret>"سر مخزّن في ملف:
bash openclaw channels add --channel nextcloud-talk \ --base-url https://cloud.example.com \ --secret-file /path/to/nextcloud-talk-secret - الإعداد:
-
أعد تشغيل Gateway (أو أكمل الإعداد).
الحد الأدنى من الإعداد:
{ channels: { "nextcloud-talk": { enabled: true, baseUrl: "https://cloud.example.com", botSecret: "shared-secret", dmPolicy: "pairing", }, },}ملاحظات
- لا يمكن للروبوتات بدء رسائل مباشرة. يجب أن يرسل المستخدم رسالة إلى الروبوت أولًا.
- يجب أن يكون عنوان URL الخاص بـ Webhook قابلًا للوصول من خادم Nextcloud؛ اضبط
webhookPublicUrlعندما يكون Gateway خلف وكيل. تُوقَّع طلبات Webhook باستخدام HMAC-SHA256 وسر الروبوت؛ وتُرفض التوقيعات غير الصالحة وتخضع لتحديد المعدل. - لا تدعم واجهة API الخاصة بالروبوت رفع الوسائط؛ وتُضاف الوسائط الصادرة كسطر
Attachment: <url>. - لا تميّز حمولة Webhook بين الرسائل المباشرة والغرف؛ اضبط
apiUser+apiPasswordلتمكين البحث عن نوع الغرفة (مع تخزين مؤقت لنحو 5 دقائق). وبدونهما، تُعامل كل محادثة على أنها غرفة. - تمر الطلبات الصادرة عبر آلية الحماية من SSRF. بالنسبة إلى مضيف Nextcloud على شبكة خاصة/داخلية موثوقة، فعّل ذلك باستخدام
channels.nextcloud-talk.network.dangerouslyAllowPrivateNetwork: true. - عند ضبط
apiUser/apiPasswordوwebhookPublicUrl، يفحصopenclaw channels statusالروبوت ويحذّر عند غياب ميزةresponse.
التحكم في الوصول (الرسائل المباشرة)
- القيمة الافتراضية:
channels.nextcloud-talk.dmPolicy = "pairing". يحصل المرسلون غير المعروفين على رمز إقران. - وافق باستخدام:
openclaw pairing list nextcloud-talkopenclaw pairing approve nextcloud-talk <CODE>
- الرسائل المباشرة العامة:
channels.nextcloud-talk.dmPolicy="open"بالإضافة إلىchannels.nextcloud-talk.allowFrom=["*"]. - يطابق
allowFromمعرّفات مستخدمي Nextcloud فقط (بعد تحويلها إلى أحرف صغيرة)؛ وتُتجاهل أسماء العرض.
الغرف (المجموعات)
- القيمة الافتراضية:
channels.nextcloud-talk.groupPolicy = "allowlist"(مشروطة بالإشارة). - أدرج الغرف المسموح بها باستخدام
channels.nextcloud-talk.rooms، مع استخدام رمز الغرفة كمفتاح؛ وتضبط"*"قيمة افتراضية شاملة:
{ channels: { "nextcloud-talk": { rooms: { "room-token": { requireMention: true }, }, }, },}- مفاتيح كل غرفة:
requireMention(القيمة الافتراضية true)، وenabled(تؤدي القيمة false إلى تعطيل الغرفة)، وallowFrom(قائمة المرسلين المسموح بهم لكل غرفة)، وtools(تجاوزات السماح بالأدوات أو رفضها)، وskills(تقييد Skills المحمّلة)، وsystemPrompt. - لعدم السماح بأي غرف، أبقِ قائمة السماح فارغة أو اضبط
channels.nextcloud-talk.groupPolicy="disabled".
الإمكانات
| الميزة | الحالة |
|---|---|
| الرسائل المباشرة | مدعومة |
| الغرف | مدعومة |
| سلاسل المحادثات | غير مدعومة |
| الوسائط | عبر URL فقط |
| التفاعلات | مدعومة |
| الأوامر الأصلية | غير مدعومة |
مرجع الإعداد (Nextcloud Talk)
الإعداد الكامل: الإعداد
خيارات المزوّد:
channels.nextcloud-talk.enabled: تمكين/تعطيل بدء تشغيل القناة.channels.nextcloud-talk.baseUrl: عنوان URL لمثيل Nextcloud.channels.nextcloud-talk.botSecret: السر المشترك للروبوت (سلسلة نصية أو مرجع سر).channels.nextcloud-talk.botSecretFile: مسار ملف عادي يحتوي على السر. تُرفض الروابط الرمزية.channels.nextcloud-talk.apiUser: مستخدم API لعمليات البحث عن الغرف (اكتشاف الرسائل المباشرة) وفحص الحالة.channels.nextcloud-talk.apiPassword: كلمة مرور API/التطبيق لعمليات البحث عن الغرف.channels.nextcloud-talk.apiPasswordFile: مسار ملف كلمة مرور API.channels.nextcloud-talk.webhookPort: منفذ مستمع Webhook (الافتراضي: 8788).channels.nextcloud-talk.webhookHost: مضيف Webhook (الافتراضي: 0.0.0.0).channels.nextcloud-talk.webhookPath: مسار Webhook (الافتراضي: /nextcloud-talk-webhook).channels.nextcloud-talk.webhookPublicUrl: عنوان URL لـ Webhook يمكن الوصول إليه خارجيًا.channels.nextcloud-talk.dmPolicy: pairing | allowlist | open | disabled(الافتراضي: pairing). تتطلبopenضبطallowFrom=["*"].channels.nextcloud-talk.allowFrom: قائمة السماح للرسائل المباشرة (معرّفات المستخدمين).channels.nextcloud-talk.groupPolicy: allowlist | open | disabled(الافتراضي: allowlist).channels.nextcloud-talk.groupAllowFrom: قائمة مرسلي الغرف المسموح بهم (معرّفات المستخدمين)؛ وتعود إلىallowFromعند عدم ضبطها.channels.nextcloud-talk.rooms: إعدادات كل غرفة وقائمة السماح (انظر أعلاه).- يمكن الإشارة إلى مجموعات وصول ثابتة للمرسلين من
allowFromوgroupAllowFromباستخدامaccessGroup:<name>. channels.nextcloud-talk.historyLimit: حد سجل المجموعات (تعطّله القيمة 0).channels.nextcloud-talk.dmHistoryLimit: حد سجل الرسائل المباشرة (تعطّله القيمة 0).channels.nextcloud-talk.dms: تجاوزات لكل رسالة مباشرة، مفهرسة حسب معرّف المستخدم (historyLimit).channels.nextcloud-talk.textChunkLimit: حجم مقطع النص الصادر بالأحرف (الافتراضي: 4000).channels.nextcloud-talk.chunkMode: length(الافتراضي) أوnewlineللتقسيم عند الأسطر الفارغة (حدود الفقرات) قبل التقسيم حسب الطول.channels.nextcloud-talk.blockStreaming: تعطيل البث الكتلي لهذه القناة.channels.nextcloud-talk.blockStreamingCoalesce: ضبط دمج البث الكتلي.channels.nextcloud-talk.responsePrefix: بادئة الردود الصادرة.channels.nextcloud-talk.markdown.tables: وضع عرض جداول Markdown (off | bullets | code | block).channels.nextcloud-talk.mediaMaxMb: الحد الأقصى للوسائط الواردة (بالميغابايت).channels.nextcloud-talk.network.dangerouslyAllowPrivateNetwork: السماح لمضيفي Nextcloud على الشبكات الخاصة/الداخلية بتجاوز آلية الحماية من SSRF.channels.nextcloud-talk.accounts.<id>: تجاوزات لكل حساب (المفاتيح نفسها)؛ ويختارdefaultAccountالحساب الافتراضي. ينطبق متغيرا البيئةNEXTCLOUD_TALK_BOT_SECRET/NEXTCLOUD_TALK_API_PASSWORDعلى الحساب الافتراضي فقط.
ذو صلة
- نظرة عامة على القنوات — جميع القنوات المدعومة
- الإقران — مصادقة الرسائل المباشرة وتدفق الإقران
- المجموعات — سلوك الدردشة الجماعية والاشتراط بالإشارة
- توجيه القنوات — توجيه جلسات الرسائل
- الأمان — نموذج الوصول والتقوية