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. Докладніше: 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, щоб увімкнути визначення типу кімнати (кешується приблизно на 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застосовуються лише до облікового запису за замовчуванням.
Пов’язані матеріали
- Огляд каналів — усі підтримувані канали
- Сполучення — автентифікація особистих повідомлень і процес сполучення
- Групи — поведінка групових чатів і вимога згадки
- Маршрутизація каналів — маршрутизація сеансів для повідомлень
- Безпека — модель доступу та посилення захисту