> ## Documentation Index
> Fetch the complete documentation index at: https://docs2.openclaw.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Nextcloud Talk

Nextcloud Talk — это загружаемый плагин канала (`@openclaw/nextcloud-talk`), который подключает OpenClaw к самостоятельно размещённому экземпляру Nextcloud через webhook-бота Talk. Поддерживаются личные сообщения, комнаты, реакции и сообщения с Markdown; медиафайлы отправляются в виде URL.

## Установка

```bash theme={"theme":{"light":"min-light","dark":"min-dark"}}
openclaw plugins install @openclaw/nextcloud-talk
```

Используйте спецификацию пакета без версии, чтобы получать текущий официальный тег выпуска. Закрепляйте точную версию только в том случае, если вам нужна воспроизводимая установка.

Из локальной рабочей копии (для процессов разработки):

```bash theme={"theme":{"light":"min-light","dark":"min-dark"}}
openclaw plugins install ./path/to/local/nextcloud-talk-plugin
```

После установки перезапустите Gateway. Подробнее: [Плагины](https://docs2.openclaw.ai/ru/tools/plugin.md)

## Быстрая настройка (для начинающих)

1. Установите плагин (см. выше).

2. Создайте бота на сервере Nextcloud:

   ```bash theme={"theme":{"light":"min-light","dark":"min-dark"}}
   ./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`.

3. Включите бота в настройках целевой комнаты.

4. Настройте OpenClaw:

   * Конфигурация: `channels.nextcloud-talk.baseUrl` + `channels.nextcloud-talk.botSecret`
   * Или переменные окружения: `NEXTCLOUD_TALK_BOT_SECRET` (только для учётной записи по умолчанию)

   Настройка через CLI (`--url`/`--token` являются псевдонимами явных полей; `nc-talk` и `nc` работают как псевдонимы канала):

   ```bash theme={"theme":{"light":"min-light","dark":"min-dark"}}
   openclaw channels add --channel nextcloud-talk \
     --url https://cloud.example.com \
     --token "<shared-secret>"
   ```

   Эквивалентные явные поля:

   ```bash theme={"theme":{"light":"min-light","dark":"min-dark"}}
   openclaw channels add --channel nextcloud-talk \
     --base-url https://cloud.example.com \
     --secret "<shared-secret>"
   ```

   Секрет из файла:

   ```bash theme={"theme":{"light":"min-light","dark":"min-dark"}}
   openclaw channels add --channel nextcloud-talk \
     --base-url https://cloud.example.com \
     --secret-file /path/to/nextcloud-talk-secret
   ```

5. Перезапустите Gateway (или завершите настройку).

Минимальная конфигурация:

```json5 theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  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-talk`
  * `openclaw 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`, ключами которого служат токены комнат; `"*"` задаёт значение по умолчанию с подстановочным знаком:

```json5 theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  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)

Полная конфигурация: [Конфигурация](https://docs2.openclaw.ai/ru/gateway/configuration.md)

Параметры провайдера:

* `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.streaming.chunkMode`: `length` (по умолчанию) или `newline` для разделения по пустым строкам (границам абзацев) перед разделением по длине.
* `channels.nextcloud-talk.streaming.block.enabled`: включение или отключение потоковой передачи блоков для этого канала.
* `channels.nextcloud-talk.streaming.block.coalesce`: настройка объединения при потоковой передаче блоков.
* `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` применяются только к учётной записи по умолчанию.

## Связанные материалы

* [Обзор каналов](https://docs2.openclaw.ai/ru/channels.md) — все поддерживаемые каналы
* [Сопряжение](https://docs2.openclaw.ai/ru/channels/pairing.md) — аутентификация в личных сообщениях и процесс сопряжения
* [Группы](https://docs2.openclaw.ai/ru/channels/groups.md) — поведение групповых чатов и требование упоминаний
* [Маршрутизация каналов](https://docs2.openclaw.ai/ru/channels/channel-routing.md) — маршрутизация сеансов для сообщений
* [Безопасность](https://docs2.openclaw.ai/ru/gateway/security.md) — модель доступа и усиление защиты
