Developer and self-hosted
Nextcloud Talk
Nextcloud Talk یک Plugin کانال قابل دانلود (@openclaw/nextcloud-talk) است که OpenClaw را از طریق یک ربات Webhook در Talk به یک نمونهٔ Nextcloud میزبانیشده توسط خودتان متصل میکند. پیامهای مستقیم، اتاقها، واکنشها و پیامهای markdown پشتیبانی میشوند؛ رسانهها بهصورت URL ارسال میشوند.
نصب
openclaw plugins install @openclaw/nextcloud-talkبرای دنبالکردن برچسب انتشار رسمی فعلی، از مشخصات سادهٔ بسته استفاده کنید. فقط زمانی یک نسخهٔ دقیق را ثابت کنید که به نصب تکرارپذیر نیاز دارید.
از یک کپی محلی مخزن (گردشکارهای توسعه):
openclaw plugins install ./path/to/local/nextcloud-talk-pluginپس از نصب، Gateway را راهاندازی مجدد کنید. جزئیات: Pluginها
راهاندازی سریع (مبتدی)
-
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 قابل دسترسی باشد؛ وقتی Gateway پشت پراکسی قرار دارد،
webhookPublicUrlرا تنظیم کنید. درخواستهای Webhook با استفاده از راز ربات و HMAC-SHA256 امضا میشوند؛ امضاهای نامعتبر رد شده و نرخ آنها محدود میشود. - بارگذاری رسانه توسط API ربات پشتیبانی نمیشود؛ رسانهٔ خروجی بهصورت خط
Attachment: <url>افزوده میشود. - بار دادهٔ Webhook پیامهای مستقیم را از اتاقها متمایز نمیکند؛ برای فعالکردن جستوجوی نوع اتاق،
apiUser+apiPasswordرا تنظیم کنید (حدود ۵ دقیقه در حافظهٔ نهان میماند). بدون آنها، هر گفتوگو بهعنوان اتاق در نظر گرفته میشود. - درخواستهای خروجی از محافظ 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: سقف رسانهٔ ورودی (MB).channels.nextcloud-talk.network.dangerouslyAllowPrivateNetwork: عبور میزبانهای خصوصی/داخلی Nextcloud از محافظ SSRF را مجاز میکند.channels.nextcloud-talk.accounts.<id>: بازنویسیهای هر حساب (همان کلیدها)؛defaultAccountحساب پیشفرض را انتخاب میکند. متغیرهای محیطیNEXTCLOUD_TALK_BOT_SECRET/NEXTCLOUD_TALK_API_PASSWORDفقط بر حساب پیشفرض اعمال میشوند.
مرتبط
- نمای کلی کانالها — همهٔ کانالهای پشتیبانیشده
- جفتسازی — احراز هویت پیام مستقیم و جریان جفتسازی
- گروهها — رفتار گفتوگوی گروهی و الزام اشاره
- مسیریابی کانال — مسیریابی نشست برای پیامها
- امنیت — مدل دسترسی و مقاومسازی