chore(i18n): refresh uk translations
This commit is contained in:
parent
8e60a43468
commit
4610d4ef1c
File diff suppressed because it is too large
Load Diff
@ -1,42 +1,42 @@
|
||||
---
|
||||
read_when:
|
||||
- Налаштування Slack або налагодження режиму сокета/HTTP для Slack
|
||||
summary: Налаштування Slack і поведінка під час виконання (режим сокетів + URL-адреси HTTP-запитів)
|
||||
- Налаштування Slack або налагодження сокетного/HTTP-режиму Slack
|
||||
summary: Налаштування Slack і поведінка під час виконання (режим Socket + URL-адреси HTTP-запитів)
|
||||
title: Slack
|
||||
x-i18n:
|
||||
generated_at: "2026-05-01T13:24:11Z"
|
||||
generated_at: "2026-05-02T02:59:10Z"
|
||||
model: gpt-5.5
|
||||
provider: openai
|
||||
source_hash: d2b065eab0e80dc223d33d0e0c8210e1ff05ff24426f7a335885540c9eb42ae9
|
||||
source_hash: 82dbc27617415cb21e3c682d58c8a8a7f56c7471af0b43d5fcbb5df3fa872a49
|
||||
source_path: channels/slack.md
|
||||
workflow: 16
|
||||
---
|
||||
|
||||
Готово до продакшну для приватних повідомлень і каналів через інтеграції застосунку Slack. Режим за замовчуванням — Socket Mode; HTTP Request URLs також підтримуються.
|
||||
Готово до production-використання для DM і каналів через інтеграції застосунку Slack. Типовий режим — Socket Mode; HTTP Request URLs також підтримуються.
|
||||
|
||||
<CardGroup cols={3}>
|
||||
<Card title="Сполучення" icon="link" href="/uk/channels/pairing">
|
||||
Приватні повідомлення Slack за замовчуванням використовують режим сполучення.
|
||||
Slack DM типово використовують режим сполучення.
|
||||
</Card>
|
||||
<Card title="Слеш-команди" icon="terminal" href="/uk/tools/slash-commands">
|
||||
<Card title="Slash-команди" icon="terminal" href="/uk/tools/slash-commands">
|
||||
Нативна поведінка команд і каталог команд.
|
||||
</Card>
|
||||
<Card title="Усунення проблем із каналами" icon="wrench" href="/uk/channels/troubleshooting">
|
||||
Міжканальна діагностика й інструкції з відновлення.
|
||||
<Card title="Усунення несправностей каналів" icon="wrench" href="/uk/channels/troubleshooting">
|
||||
Міжканальна діагностика та playbook-и відновлення.
|
||||
</Card>
|
||||
</CardGroup>
|
||||
|
||||
## Швидке налаштування
|
||||
|
||||
<Tabs>
|
||||
<Tab title="Socket Mode (за замовчуванням)">
|
||||
<Tab title="Socket Mode (типово)">
|
||||
<Steps>
|
||||
<Step title="Створіть новий застосунок Slack">
|
||||
У налаштуваннях застосунку Slack натисніть кнопку **[Create New App](https://api.slack.com/apps/new)**:
|
||||
|
||||
- виберіть **from a manifest** і виберіть робочу область для свого застосунку
|
||||
- вставте [приклад маніфесту](#manifest-and-scope-checklist) нижче й продовжте створення
|
||||
- згенеруйте **App-Level Token** (`xapp-...`) з `connections:write`
|
||||
- виберіть **from a manifest** і виберіть робочий простір для свого застосунку
|
||||
- вставте [приклад маніфесту](#manifest-and-scope-checklist) нижче та продовжте створення
|
||||
- згенеруйте **App-Level Token** (`xapp-...`) із `connections:write`
|
||||
- установіть застосунок і скопіюйте показаний **Bot Token** (`xoxb-...`)
|
||||
|
||||
</Step>
|
||||
@ -64,7 +64,7 @@ openclaw config patch --file ./slack.socket.patch.json5 --dry-run
|
||||
openclaw config patch --file ./slack.socket.patch.json5
|
||||
```
|
||||
|
||||
Резервний варіант через змінні середовища (лише обліковий запис за замовчуванням):
|
||||
Резервний варіант через env (лише типовий обліковий запис):
|
||||
|
||||
```bash
|
||||
SLACK_APP_TOKEN=xapp-...
|
||||
@ -89,7 +89,7 @@ openclaw gateway
|
||||
<Step title="Створіть новий застосунок Slack">
|
||||
У налаштуваннях застосунку Slack натисніть кнопку **[Create New App](https://api.slack.com/apps/new)**:
|
||||
|
||||
- виберіть **from a manifest** і виберіть робочу область для свого застосунку
|
||||
- виберіть **from a manifest** і виберіть робочий простір для свого застосунку
|
||||
- вставте [приклад маніфесту](#manifest-and-scope-checklist) і оновіть URL-адреси перед створенням
|
||||
- збережіть **Signing Secret** для перевірки запитів
|
||||
- установіть застосунок і скопіюйте показаний **Bot Token** (`xoxb-...`)
|
||||
@ -121,7 +121,7 @@ openclaw config patch --file ./slack.http.patch.json5
|
||||
```
|
||||
|
||||
<Note>
|
||||
Використовуйте унікальні шляхи webhook для HTTP з кількома обліковими записами
|
||||
Використовуйте унікальні шляхи Webhook для HTTP з кількома обліковими записами
|
||||
|
||||
Надайте кожному обліковому запису окремий `webhookPath` (типово `/slack/events`), щоб реєстрації не конфліктували.
|
||||
</Note>
|
||||
@ -142,7 +142,7 @@ openclaw gateway
|
||||
|
||||
## Налаштування транспорту Socket Mode
|
||||
|
||||
OpenClaw за замовчуванням установлює для клієнта Slack SDK час очікування pong 15 секунд у Socket Mode. Перевизначайте транспортні налаштування лише тоді, коли потрібне налаштування під конкретну робочу область або хост:
|
||||
OpenClaw типово встановлює для клієнта Slack SDK час очікування pong у 15 секунд для Socket Mode. Перевизначайте налаштування транспорту лише тоді, коли вам потрібне налаштування для конкретного робочого простору або хоста:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -159,13 +159,13 @@ OpenClaw за замовчуванням установлює для клієн
|
||||
}
|
||||
```
|
||||
|
||||
Використовуйте це лише для робочих областей Socket Mode, у журналах яких є тайм-аути Slack websocket pong/server-ping, або для хостів із відомим виснаженням циклу подій. `clientPingTimeout` — це очікування pong після того, як SDK надсилає клієнтський ping; `serverPingTimeout` — це очікування ping від сервера Slack. Повідомлення й події застосунку залишаються станом застосунку, а не сигналами працездатності транспорту.
|
||||
Використовуйте це лише для робочих просторів Socket Mode, які записують у журнал тайм-аути pong websocket Slack або server-ping, чи працюють на хостах із відомим голодуванням event loop. `clientPingTimeout` — це очікування pong після того, як SDK надсилає client ping; `serverPingTimeout` — це очікування ping-ів сервера Slack. Повідомлення й події застосунку залишаються станом застосунку, а не сигналами живості транспорту.
|
||||
|
||||
## Контрольний список маніфесту й областей доступу
|
||||
## Чекліст маніфесту та scope-ів
|
||||
|
||||
Базовий маніфест застосунку Slack однаковий для Socket Mode і HTTP Request URLs. Відрізняється лише блок `settings` (і `url` слеш-команди).
|
||||
Базовий маніфест застосунку Slack однаковий для Socket Mode і HTTP Request URLs. Відрізняється лише блок `settings` (і `url` slash-команди).
|
||||
|
||||
Базовий маніфест (Socket Mode за замовчуванням):
|
||||
Базовий маніфест (Socket Mode типово):
|
||||
|
||||
```json
|
||||
{
|
||||
@ -212,6 +212,7 @@ OpenClaw за замовчуванням установлює для клієн
|
||||
"pins:write",
|
||||
"reactions:read",
|
||||
"reactions:write",
|
||||
"usergroups:read",
|
||||
"users:read"
|
||||
]
|
||||
}
|
||||
@ -239,7 +240,7 @@ OpenClaw за замовчуванням установлює для клієн
|
||||
}
|
||||
```
|
||||
|
||||
Для режиму **HTTP Request URLs** замініть `settings` на HTTP-варіант і додайте `url` до кожної слеш-команди. Потрібна публічна URL-адреса:
|
||||
Для режиму **HTTP Request URLs** замініть `settings` на HTTP-варіант і додайте `url` до кожної slash-команди. Потрібна публічна URL-адреса:
|
||||
|
||||
```json
|
||||
{
|
||||
@ -271,22 +272,22 @@ OpenClaw за замовчуванням установлює для клієн
|
||||
|
||||
### Додаткові налаштування маніфесту
|
||||
|
||||
Відкрийте різні функції, що розширюють наведені вище типові значення.
|
||||
Покажіть різні функції, що розширюють наведені вище типові значення.
|
||||
|
||||
Типовий маніфест вмикає вкладку Slack App Home **Home** і підписується на `app_home_opened`. Коли учасник робочої області відкриває вкладку Home, OpenClaw публікує безпечний типовий вигляд Home за допомогою `views.publish`; корисне навантаження розмови або приватна конфігурація не включаються. Вкладка **Messages** залишається ввімкненою для приватних повідомлень Slack.
|
||||
Типовий маніфест вмикає вкладку **Home** у Slack App Home і підписується на `app_home_opened`. Коли учасник робочого простору відкриває вкладку Home, OpenClaw публікує безпечне типове подання Home через `views.publish`; payload розмови або приватна конфігурація не включаються. Вкладка **Messages** залишається ввімкненою для Slack DM.
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Необов’язкові нативні слеш-команди">
|
||||
<Accordion title="Необов’язкові нативні slash-команди">
|
||||
|
||||
Кілька [нативних слеш-команд](#commands-and-slash-behavior) можна використовувати замість однієї налаштованої команди з урахуванням нюансів:
|
||||
Кілька [нативних slash-команд](#commands-and-slash-behavior) можна використовувати замість однієї налаштованої команди з такими нюансами:
|
||||
|
||||
- Використовуйте `/agentstatus` замість `/status`, оскільки команда `/status` зарезервована.
|
||||
- Одночасно може бути доступно не більше 25 слеш-команд.
|
||||
- Одночасно можна зробити доступними не більше ніж 25 slash-команд.
|
||||
|
||||
Замініть наявний розділ `features.slash_commands` підмножиною [доступних команд](/uk/tools/slash-commands#command-list):
|
||||
|
||||
<Tabs>
|
||||
<Tab title="Socket Mode (за замовчуванням)">
|
||||
<Tab title="Socket Mode (типово)">
|
||||
|
||||
```json
|
||||
"slash_commands": [
|
||||
@ -403,7 +404,7 @@ OpenClaw за замовчуванням установлює для клієн
|
||||
|
||||
</Tab>
|
||||
<Tab title="HTTP Request URLs">
|
||||
Використовуйте той самий список `slash_commands`, що й для Socket Mode вище, і додайте `"url": "https://gateway-host.example.com/slack/events"` до кожного запису. Приклад:
|
||||
Використовуйте той самий список `slash_commands`, що й у Socket Mode вище, і додайте `"url": "https://gateway-host.example.com/slack/events"` до кожного запису. Приклад:
|
||||
|
||||
```json
|
||||
"slash_commands": [
|
||||
@ -426,14 +427,14 @@ OpenClaw за замовчуванням установлює для клієн
|
||||
</Tabs>
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Необов’язкові області доступу для авторства (операції запису)">
|
||||
Додайте область доступу бота `chat:write.customize`, якщо хочете, щоб вихідні повідомлення використовували ідентичність активного агента (власне ім’я користувача та іконку) замість типової ідентичності застосунку Slack.
|
||||
<Accordion title="Необов’язкові scope-и авторства (операції запису)">
|
||||
Додайте bot scope `chat:write.customize`, якщо хочете, щоб вихідні повідомлення використовували активну ідентичність агента (власне ім’я користувача та іконку) замість типової ідентичності застосунку Slack.
|
||||
|
||||
Якщо ви використовуєте іконку emoji, Slack очікує синтаксис `:emoji_name:`.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Необов’язкові області user-token (операції читання)">
|
||||
Якщо ви налаштовуєте `channels.slack.userToken`, типовими областями читання є:
|
||||
Якщо ви налаштовуєте `channels.slack.userToken`, типові області читання такі:
|
||||
|
||||
- `channels:history`, `groups:history`, `im:history`, `mpim:history`
|
||||
- `channels:read`, `groups:read`, `im:read`, `mpim:read`
|
||||
@ -441,7 +442,7 @@ OpenClaw за замовчуванням установлює для клієн
|
||||
- `reactions:read`
|
||||
- `pins:read`
|
||||
- `emoji:read`
|
||||
- `search:read` (якщо ви покладаєтеся на читання через пошук Slack)
|
||||
- `search:read` (якщо ви покладаєтеся на читання пошуку Slack)
|
||||
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
@ -449,49 +450,49 @@ OpenClaw за замовчуванням установлює для клієн
|
||||
## Модель токенів
|
||||
|
||||
- `botToken` + `appToken` потрібні для Socket Mode.
|
||||
- HTTP mode потребує `botToken` + `signingSecret`.
|
||||
- HTTP-режим потребує `botToken` + `signingSecret`.
|
||||
- `botToken`, `appToken`, `signingSecret` і `userToken` приймають відкриті текстові
|
||||
рядки або об’єкти SecretRef.
|
||||
- Токени в конфігурації перевизначають запасні значення з env.
|
||||
- Запасне значення env `SLACK_BOT_TOKEN` / `SLACK_APP_TOKEN` застосовується лише до облікового запису за замовчуванням.
|
||||
- `userToken` (`xoxp-...`) задається лише в конфігурації (без запасного значення env) і за замовчуванням має поведінку лише для читання (`userTokenReadOnly: true`).
|
||||
- Токени в конфігурації перевизначають резервні значення з env.
|
||||
- Резервні env-значення `SLACK_BOT_TOKEN` / `SLACK_APP_TOKEN` застосовуються лише до стандартного облікового запису.
|
||||
- `userToken` (`xoxp-...`) налаштовується лише через конфігурацію (без резервного env-значення) і за замовчуванням має поведінку лише для читання (`userTokenReadOnly: true`).
|
||||
|
||||
Поведінка знімка стану:
|
||||
|
||||
- Перевірка облікового запису Slack відстежує поля `*Source` і `*Status`
|
||||
для кожних облікових даних (`botToken`, `appToken`, `signingSecret`, `userToken`).
|
||||
- Стан може бути `available`, `configured_unavailable` або `missing`.
|
||||
- Стан: `available`, `configured_unavailable` або `missing`.
|
||||
- `configured_unavailable` означає, що обліковий запис налаштовано через SecretRef
|
||||
або інше неінлайнове джерело секрету, але поточний шлях команди/середовища виконання
|
||||
не зміг отримати фактичне значення.
|
||||
- У HTTP mode включено `signingSecretStatus`; у Socket Mode
|
||||
потрібною парою є `botTokenStatus` + `appTokenStatus`.
|
||||
або інше не-inline джерело секрету, але поточний шлях команди/середовища виконання
|
||||
не зміг визначити фактичне значення.
|
||||
- У HTTP-режимі включено `signingSecretStatus`; у Socket Mode
|
||||
обов’язкова пара — `botTokenStatus` + `appTokenStatus`.
|
||||
|
||||
<Tip>
|
||||
Для дій/читання каталогу токен користувача може мати пріоритет, якщо його налаштовано. Для запису пріоритет залишається за токеном бота; записи через токен користувача дозволені лише тоді, коли `userTokenReadOnly: false` і токен бота недоступний.
|
||||
Для дій/читання довідника user token може мати пріоритет, якщо його налаштовано. Для запису bot token і далі має пріоритет; записи через user-token дозволені лише коли `userTokenReadOnly: false` і bot token недоступний.
|
||||
</Tip>
|
||||
|
||||
## Дії та шлюзи
|
||||
|
||||
Дії Slack керуються через `channels.slack.actions.*`.
|
||||
Дії Slack контролюються через `channels.slack.actions.*`.
|
||||
|
||||
Доступні групи дій у поточних інструментах Slack:
|
||||
Доступні групи дій у поточному інструментарії Slack:
|
||||
|
||||
| Група | За замовчуванням |
|
||||
| ---------- | ------- |
|
||||
| Група | Стандартно |
|
||||
| ---------- | ---------- |
|
||||
| messages | увімкнено |
|
||||
| reactions | увімкнено |
|
||||
| pins | увімкнено |
|
||||
| memberInfo | увімкнено |
|
||||
| emojiList | увімкнено |
|
||||
|
||||
Поточні дії повідомлень Slack включають `send`, `upload-file`, `download-file`, `read`, `edit`, `delete`, `pin`, `unpin`, `list-pins`, `member-info` і `emoji-list`. `download-file` приймає ID файлів Slack, показані у вхідних заповнювачах файлів, і повертає попередні перегляди зображень для зображень або метадані локального файлу для інших типів файлів.
|
||||
Поточні дії повідомлень Slack містять `send`, `upload-file`, `download-file`, `read`, `edit`, `delete`, `pin`, `unpin`, `list-pins`, `member-info` і `emoji-list`. `download-file` приймає ідентифікатори файлів Slack, показані у вхідних заповнювачах файлів, і повертає попередні перегляди зображень для зображень або метадані локальних файлів для інших типів файлів.
|
||||
|
||||
## Контроль доступу та маршрутизація
|
||||
|
||||
<Tabs>
|
||||
<Tab title="Політика DM">
|
||||
`channels.slack.dmPolicy` керує доступом до DM. `channels.slack.allowFrom` є канонічним списком дозволених для DM.
|
||||
`channels.slack.dmPolicy` керує доступом до DM. `channels.slack.allowFrom` — канонічний allowlist для DM.
|
||||
|
||||
- `pairing` (за замовчуванням)
|
||||
- `allowlist`
|
||||
@ -504,7 +505,7 @@ OpenClaw за замовчуванням установлює для клієн
|
||||
- `channels.slack.allowFrom`
|
||||
- `dm.allowFrom` (застаріле)
|
||||
- `dm.groupEnabled` (групові DM за замовчуванням false)
|
||||
- `dm.groupChannels` (необов’язковий список дозволених MPIM)
|
||||
- `dm.groupChannels` (необов’язковий allowlist MPIM)
|
||||
|
||||
Пріоритет для кількох облікових записів:
|
||||
|
||||
@ -518,27 +519,27 @@ OpenClaw за замовчуванням установлює для клієн
|
||||
|
||||
</Tab>
|
||||
|
||||
<Tab title="Політика каналу">
|
||||
<Tab title="Політика каналів">
|
||||
`channels.slack.groupPolicy` керує обробкою каналів:
|
||||
|
||||
- `open`
|
||||
- `allowlist`
|
||||
- `disabled`
|
||||
|
||||
Список дозволених каналів міститься в `channels.slack.channels` і **має використовувати стабільні ID каналів Slack** (наприклад, `C12345678`) як ключі конфігурації.
|
||||
Allowlist каналів міститься в `channels.slack.channels` і **має використовувати стабільні ідентифікатори каналів Slack** (наприклад, `C12345678`) як ключі конфігурації.
|
||||
|
||||
Примітка щодо середовища виконання: якщо `channels.slack` повністю відсутній (налаштування лише через env), середовище виконання повертається до `groupPolicy="allowlist"` і записує попередження в журнал (навіть якщо задано `channels.defaults.groupPolicy`).
|
||||
Примітка щодо середовища виконання: якщо `channels.slack` повністю відсутній (налаштування лише через env), середовище виконання повертається до `groupPolicy="allowlist"` і записує попередження в журнал (навіть якщо `channels.defaults.groupPolicy` задано).
|
||||
|
||||
Розпізнавання імені/ID:
|
||||
Розпізнавання імен/ідентифікаторів:
|
||||
|
||||
- записи списку дозволених каналів і записи списку дозволених DM розпізнаються під час запуску, коли доступ токена це дозволяє
|
||||
- записи allowlist каналів і записи allowlist DM розпізнаються під час запуску, коли доступ токена це дозволяє
|
||||
- нерозпізнані записи з іменами каналів зберігаються як налаштовані, але за замовчуванням ігноруються для маршрутизації
|
||||
- вхідна авторизація та маршрутизація каналів за замовчуванням спершу використовують ID; пряме зіставлення імені користувача/slug потребує `channels.slack.dangerouslyAllowNameMatching: true`
|
||||
- вхідна авторизація та маршрутизація каналів за замовчуванням спершу використовують ID; пряме зіставлення імен користувачів/slug потребує `channels.slack.dangerouslyAllowNameMatching: true`
|
||||
|
||||
<Warning>
|
||||
Ключі на основі імен (`#channel-name` або `channel-name`) **не** збігаються при `groupPolicy: "allowlist"`. Пошук каналу за замовчуванням спершу використовує ID, тому ключ на основі імені ніколи не маршрутизуватиметься успішно, і всі повідомлення в цьому каналі буде тихо заблоковано. Це відрізняється від `groupPolicy: "open"`, де ключ каналу не потрібен для маршрутизації, а ключ на основі імені виглядає так, ніби працює.
|
||||
Ключі на основі імен (`#channel-name` або `channel-name`) **не** збігаються під `groupPolicy: "allowlist"`. Пошук каналу за замовчуванням спершу використовує ID, тому ключ на основі імені ніколи не маршрутизуватиметься успішно, а всі повідомлення в цьому каналі буде тихо заблоковано. Це відрізняється від `groupPolicy: "open"`, де ключ каналу не потрібен для маршрутизації, і ключ на основі імені виглядає робочим.
|
||||
|
||||
Завжди використовуйте ID каналу Slack як ключ. Щоб знайти його: клацніть канал у Slack правою кнопкою миші → **Copy link** — ID (`C...`) з’являється в кінці URL.
|
||||
Завжди використовуйте ідентифікатор каналу Slack як ключ. Щоб знайти його: клацніть канал у Slack правою кнопкою миші → **Copy link** — ID (`C...`) з’явиться в кінці URL.
|
||||
|
||||
Правильно:
|
||||
|
||||
@ -555,7 +556,7 @@ OpenClaw за замовчуванням установлює для клієн
|
||||
}
|
||||
```
|
||||
|
||||
Неправильно (тихо блокується при `groupPolicy: "allowlist"`):
|
||||
Неправильно (тихо блокується під `groupPolicy: "allowlist"`):
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -573,54 +574,55 @@ OpenClaw за замовчуванням установлює для клієн
|
||||
|
||||
</Tab>
|
||||
|
||||
<Tab title="Згадки та користувачі каналу">
|
||||
Повідомлення каналу за замовчуванням пропускаються через шлюз згадок.
|
||||
<Tab title="Mentions and channel users">
|
||||
Повідомлення каналів за замовчуванням пропускаються лише за згадкою.
|
||||
|
||||
Джерела згадок:
|
||||
|
||||
- явна згадка застосунку (`<@botId>`)
|
||||
- regex-шаблони згадок (`agents.list[].groupChat.mentionPatterns`, резервно `messages.groupChat.mentionPatterns`)
|
||||
- неявна поведінка треду reply-to-bot (вимкнено, коли `thread.requireExplicitMention` має значення `true`)
|
||||
- згадка групи користувачів Slack (`<!subteam^S...>`), коли користувач бота є учасником цієї групи користувачів; потребує `usergroups:read`
|
||||
- regex-патерни згадок (`agents.list[].groupChat.mentionPatterns`, резервно `messages.groupChat.mentionPatterns`)
|
||||
- неявна поведінка гілки з відповіддю боту (вимкнено, коли `thread.requireExplicitMention` має значення `true`)
|
||||
|
||||
Поканальні елементи керування (`channels.slack.channels.<id>`; назви лише через розв’язання під час запуску або `dangerouslyAllowNameMatching`):
|
||||
Поканальні елементи керування (`channels.slack.channels.<id>`; імена лише через розв’язання під час запуску або `dangerouslyAllowNameMatching`):
|
||||
|
||||
- `requireMention`
|
||||
- `users` (allowlist)
|
||||
- `users` (список дозволених)
|
||||
- `allowBots`
|
||||
- `skills`
|
||||
- `systemPrompt`
|
||||
- `tools`, `toolsBySender`
|
||||
- формат ключів `toolsBySender`: `id:`, `e164:`, `username:`, `name:` або wildcard `"*"`
|
||||
- формат ключа `toolsBySender`: `id:`, `e164:`, `username:`, `name:` або wildcard `"*"`
|
||||
(застарілі ключі без префікса й надалі зіставляються лише з `id:`)
|
||||
|
||||
`allowBots` консервативний для каналів і приватних каналів: повідомлення кімнати, створені ботом, приймаються лише тоді, коли бот-відправник явно вказаний у allowlist `users` цієї кімнати, або коли принаймні один явний ID власника Slack із `channels.slack.allowFrom` зараз є учасником кімнати. Wildcard і записи власників за відображуваним іменем не задовольняють наявність власника. Наявність власника використовує Slack `conversations.members`; переконайтеся, що застосунок має відповідний read scope для типу кімнати (`channels:read` для публічних каналів, `groups:read` для приватних каналів). Якщо пошук учасників не вдається, OpenClaw відкидає повідомлення кімнати, створене ботом.
|
||||
`allowBots` є консервативним для каналів і приватних каналів: повідомлення кімнати, створені ботом, приймаються лише тоді, коли бот-відправник явно вказаний у списку дозволених `users` цієї кімнати, або коли принаймні один явний ідентифікатор власника Slack із `channels.slack.allowFrom` наразі є учасником кімнати. Wildcard і записи власників за відображуваним іменем не підтверджують присутність власника. Присутність власника використовує Slack `conversations.members`; переконайтеся, що застосунок має відповідну область читання для типу кімнати (`channels:read` для публічних каналів, `groups:read` для приватних каналів). Якщо пошук учасників не вдається, OpenClaw відкидає повідомлення кімнати, створене ботом.
|
||||
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
## Треди, сеанси й теги відповідей
|
||||
## Гілки, сесії та теги відповіді
|
||||
|
||||
- DM маршрутизуються як `direct`; канали як `channel`; MPIM як `group`.
|
||||
- З типовим `session.dmScope=main` DM Slack згортаються до основного сеансу агента.
|
||||
- Сеанси каналів: `agent:<agentId>:slack:channel:<channelId>`.
|
||||
- Відповіді в тредах можуть створювати суфікси сеансів треду (`:thread:<threadTs>`), коли це застосовно.
|
||||
- Типове значення `channels.slack.thread.historyScope` — `thread`; типове значення `thread.inheritParent` — `false`.
|
||||
- `channels.slack.thread.initialHistoryLimit` керує тим, скільки наявних повідомлень треду отримується під час запуску нового сеансу треду (типово `20`; установіть `0`, щоб вимкнути).
|
||||
- `channels.slack.thread.requireExplicitMention` (типово `false`): коли `true`, пригнічує неявні згадки в тредах, тож бот відповідає лише на явні згадки `@bot` усередині тредів, навіть якщо бот уже брав участь у треді. Без цього відповіді в треді, де брав участь бот, обходять перевірку `requireMention`.
|
||||
- За стандартного `session.dmScope=main` DM Slack згортаються до основної сесії агента.
|
||||
- Сесії каналів: `agent:<agentId>:slack:channel:<channelId>`.
|
||||
- Відповіді в гілках можуть створювати суфікси сесій гілок (`:thread:<threadTs>`), коли це застосовно.
|
||||
- Стандартне значення `channels.slack.thread.historyScope` — `thread`; стандартне значення `thread.inheritParent` — `false`.
|
||||
- `channels.slack.thread.initialHistoryLimit` керує тим, скільки наявних повідомлень гілки отримується під час запуску нової сесії гілки (стандартно `20`; задайте `0`, щоб вимкнути).
|
||||
- `channels.slack.thread.requireExplicitMention` (стандартно `false`): коли `true`, пригнічує неявні згадки в гілці, щоб бот відповідав лише на явні згадки `@bot` усередині гілок, навіть якщо бот уже брав участь у гілці. Без цього відповіді в гілці, де брав участь бот, обходять пропускання `requireMention`.
|
||||
|
||||
Елементи керування відповідями в тредах:
|
||||
Елементи керування гілками відповідей:
|
||||
|
||||
- `channels.slack.replyToMode`: `off|first|all|batched` (типово `off`)
|
||||
- `channels.slack.replyToMode`: `off|first|all|batched` (стандартно `off`)
|
||||
- `channels.slack.replyToModeByChatType`: окремо для `direct|group|channel`
|
||||
- застарілий резервний варіант для прямих чатів: `channels.slack.dm.replyToMode`
|
||||
|
||||
Підтримуються ручні теги відповідей:
|
||||
Підтримуються ручні теги відповіді:
|
||||
|
||||
- `[[reply_to_current]]`
|
||||
- `[[reply_to:<id>]]`
|
||||
|
||||
<Note>
|
||||
`replyToMode="off"` вимикає **усі** відповіді в тредах у Slack, зокрема явні теги `[[reply_to_*]]`. Це відрізняється від Telegram, де явні теги й далі враховуються в режимі `"off"`. Треди Slack приховують повідомлення з каналу, тоді як відповіді Telegram залишаються видимими в рядку.
|
||||
`replyToMode="off"` вимикає **усі** гілки відповідей у Slack, включно з явними тегами `[[reply_to_*]]`. Це відрізняється від Telegram, де явні теги й надалі враховуються в режимі `"off"`. Гілки Slack приховують повідомлення з каналу, тоді як відповіді Telegram залишаються видимими вбудовано.
|
||||
</Note>
|
||||
|
||||
## Реакції підтвердження
|
||||
@ -636,29 +638,29 @@ OpenClaw за замовчуванням установлює для клієн
|
||||
|
||||
Примітки:
|
||||
|
||||
- Slack очікує shortcodes (наприклад, `"eyes"`).
|
||||
- Slack очікує короткі коди (наприклад, `"eyes"`).
|
||||
- Використовуйте `""`, щоб вимкнути реакцію для облікового запису Slack або глобально.
|
||||
|
||||
## Потокове передавання тексту
|
||||
|
||||
`channels.slack.streaming` керує поведінкою live preview:
|
||||
`channels.slack.streaming` керує поведінкою живого попереднього перегляду:
|
||||
|
||||
- `off`: вимкнути потокове передавання live preview.
|
||||
- `partial` (типово): замінювати текст preview найновішим частковим виводом.
|
||||
- `block`: додавати фрагментовані оновлення preview.
|
||||
- `progress`: показувати текст стану прогресу під час генерування, а потім надсилати фінальний текст.
|
||||
- `streaming.preview.toolProgress`: коли draft preview активний, спрямовувати оновлення інструментів/прогресу в те саме редаговане повідомлення preview (типово: `true`). Установіть `false`, щоб зберігати окремі повідомлення інструментів/прогресу.
|
||||
- `off`: вимкнути потокове передавання живого попереднього перегляду.
|
||||
- `partial` (стандартно): замінювати текст попереднього перегляду найновішим частковим виводом.
|
||||
- `block`: додавати фрагментовані оновлення попереднього перегляду.
|
||||
- `progress`: показувати текст стану перебігу під час генерування, а потім надсилати фінальний текст.
|
||||
- `streaming.preview.toolProgress`: коли чернетковий попередній перегляд активний, маршрутизувати оновлення інструментів/перебігу в те саме редаговане повідомлення попереднього перегляду (стандартно: `true`). Задайте `false`, щоб зберігати окремі повідомлення інструментів/перебігу.
|
||||
|
||||
`channels.slack.streaming.nativeTransport` керує нативним потоковим передаванням тексту Slack, коли `channels.slack.streaming.mode` має значення `partial` (типово: `true`).
|
||||
`channels.slack.streaming.nativeTransport` керує нативним потоковим передаванням тексту Slack, коли `channels.slack.streaming.mode` має значення `partial` (стандартно: `true`).
|
||||
|
||||
- Для появи нативного потокового передавання тексту й стану треду асистента Slack має бути доступний тред відповіді. Вибір треду й надалі відповідає `replyToMode`.
|
||||
- Корені каналів і групових чатів усе ще можуть використовувати звичайний draft preview, коли нативне потокове передавання недоступне.
|
||||
- DM Slack верхнього рівня типово залишаються поза тредом, тому вони не показують preview у стилі треду; використовуйте відповіді в тредах або `typingReaction`, якщо хочете бачити там прогрес.
|
||||
- Медіа й нетекстові payloads повертаються до звичайної доставки.
|
||||
- Медіа/помилки фінальних повідомлень скасовують очікувані редагування preview; придатні текстові/блокові фінальні повідомлення скидаються лише тоді, коли можуть редагувати preview на місці.
|
||||
- Якщо потокове передавання зазнає збою посеред відповіді, OpenClaw повертається до звичайної доставки для решти payloads.
|
||||
- Для появи нативного потокового передавання тексту та стану гілки асистента Slack має бути доступна гілка відповіді. Вибір гілки й надалі дотримується `replyToMode`.
|
||||
- Корені каналів і групових чатів усе ще можуть використовувати звичайний чернетковий попередній перегляд, коли нативне потокове передавання недоступне.
|
||||
- DM Slack верхнього рівня за замовчуванням залишаються поза гілкою, тому вони не показують попередній перегляд у стилі гілки; використовуйте відповіді в гілках або `typingReaction`, якщо хочете бачити перебіг там.
|
||||
- Медіа та нетекстові payload-и повертаються до звичайної доставки.
|
||||
- Фінальні медіа/помилки скасовують очікувані редагування попереднього перегляду; придатні текстові/блокові фінальні повідомлення скидаються лише тоді, коли можуть редагувати попередній перегляд на місці.
|
||||
- Якщо потокове передавання зазнає збою посеред відповіді, OpenClaw повертається до звичайної доставки для решти payload-ів.
|
||||
|
||||
Використовуйте draft preview замість нативного потокового передавання тексту Slack:
|
||||
Використовуйте чернетковий попередній перегляд замість нативного потокового передавання тексту Slack:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -675,13 +677,13 @@ OpenClaw за замовчуванням установлює для клієн
|
||||
|
||||
Застарілі ключі:
|
||||
|
||||
- `channels.slack.streamMode` (`replace | status_final | append`) автоматично мігрує до `channels.slack.streaming.mode`.
|
||||
- boolean `channels.slack.streaming` автоматично мігрує до `channels.slack.streaming.mode` і `channels.slack.streaming.nativeTransport`.
|
||||
- застарілий `channels.slack.nativeStreaming` автоматично мігрує до `channels.slack.streaming.nativeTransport`.
|
||||
- `channels.slack.streamMode` (`replace | status_final | append`) автоматично мігрується до `channels.slack.streaming.mode`.
|
||||
- булевий `channels.slack.streaming` автоматично мігрується до `channels.slack.streaming.mode` і `channels.slack.streaming.nativeTransport`.
|
||||
- застарілий `channels.slack.nativeStreaming` автоматично мігрується до `channels.slack.streaming.nativeTransport`.
|
||||
|
||||
## Резервна typing reaction
|
||||
## Резервна реакція набору
|
||||
|
||||
`typingReaction` додає тимчасову реакцію до вхідного повідомлення Slack, поки OpenClaw обробляє відповідь, а потім видаляє її після завершення запуску. Це найкорисніше поза відповідями в тредах, які використовують типовий індикатор стану "набирає текст...".
|
||||
`typingReaction` додає тимчасову реакцію до вхідного повідомлення Slack, поки OpenClaw обробляє відповідь, а потім видаляє її, коли виконання завершується. Це найкорисніше поза відповідями в гілках, які використовують стандартний індикатор стану "is typing...".
|
||||
|
||||
Порядок розв’язання:
|
||||
|
||||
@ -690,26 +692,26 @@ OpenClaw за замовчуванням установлює для клієн
|
||||
|
||||
Примітки:
|
||||
|
||||
- Slack очікує shortcodes (наприклад, `"hourglass_flowing_sand"`).
|
||||
- Реакція виконується за принципом best-effort, а очищення автоматично виконується після завершення відповіді або шляху помилки.
|
||||
- Slack очікує короткі коди (наприклад, `"hourglass_flowing_sand"`).
|
||||
- Реакція виконується за принципом best-effort, а очищення автоматично виконується після завершення відповіді або шляху збою.
|
||||
|
||||
## Медіа, фрагментація й доставка
|
||||
## Медіа, фрагментація та доставка
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Inbound attachments">
|
||||
Файлові вкладення Slack завантажуються з приватних URL, розміщених у Slack (потік запитів з автентифікацією токеном), і записуються до сховища медіа, коли отримання успішне й дозволяють обмеження розміру. Заповнювачі файлів містять Slack `fileId`, щоб агенти могли отримати оригінальний файл за допомогою `download-file`.
|
||||
Вкладені файли Slack завантажуються з приватних URL, розміщених у Slack (потік запиту з автентифікацією токеном), і записуються до сховища медіа, коли отримання успішне та обмеження розміру це дозволяють. Заповнювачі файлів містять Slack `fileId`, щоб агенти могли отримати оригінальний файл за допомогою `download-file`.
|
||||
|
||||
Завантаження використовують обмежені idle і загальні тайм-аути. Якщо отримання файлу Slack зависає або зазнає збою, OpenClaw продовжує обробляти повідомлення й повертається до заповнювача файлу.
|
||||
Завантаження використовують обмежені таймаути простою та загального часу. Якщо отримання файлу Slack зависає або завершується помилкою, OpenClaw продовжує обробляти повідомлення й повертається до заповнювача файлу.
|
||||
|
||||
Стандартне обмеження розміру вхідних даних під час виконання становить `20MB`, якщо його не перевизначено через `channels.slack.mediaMaxMb`.
|
||||
Обмеження розміру вхідних даних під час виконання за замовчуванням становить `20MB`, якщо його не перевизначено через `channels.slack.mediaMaxMb`.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Вихідний текст і файли">
|
||||
- текстові фрагменти використовують `channels.slack.textChunkLimit` (стандартно 4000)
|
||||
- `channels.slack.chunkMode="newline"` вмикає поділ із пріоритетом абзаців
|
||||
- надсилання файлів використовує API завантаження Slack і може включати відповіді в треді (`thread_ts`)
|
||||
- обмеження вихідних медіа відповідає `channels.slack.mediaMaxMb`, якщо налаштовано; інакше надсилання в канали використовує стандартні значення за MIME-типом із медіаконвеєра
|
||||
- текстові фрагменти використовують `channels.slack.textChunkLimit` (за замовчуванням 4000)
|
||||
- `channels.slack.chunkMode="newline"` вмикає розбиття з пріоритетом абзаців
|
||||
- надсилання файлів використовує API завантаження Slack і може включати відповіді в тредах (`thread_ts`)
|
||||
- обмеження вихідних медіа відповідає `channels.slack.mediaMaxMb`, коли налаштовано; інакше надсилання в канал використовує типові значення за MIME-типом із медіаконвеєра
|
||||
|
||||
</Accordion>
|
||||
|
||||
@ -719,14 +721,14 @@ OpenClaw за замовчуванням установлює для клієн
|
||||
- `user:<id>` для DM
|
||||
- `channel:<id>` для каналів
|
||||
|
||||
Slack DM відкриваються через API розмов Slack під час надсилання до цілей користувачів.
|
||||
DM Slack відкриваються через API розмов Slack під час надсилання до цілей користувача.
|
||||
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## Команди та поведінка slash
|
||||
|
||||
Slash-команди з’являються в Slack або як одна налаштована команда, або як кілька нативних команд. Налаштуйте `channels.slack.slashCommand`, щоб змінити стандартні значення команд:
|
||||
Slash-команди з’являються у Slack як одна налаштована команда або кілька нативних команд. Налаштуйте `channels.slack.slashCommand`, щоб змінити типові значення команд:
|
||||
|
||||
- `enabled: false`
|
||||
- `name: "openclaw"`
|
||||
@ -737,7 +739,7 @@ Slash-команди з’являються в Slack або як одна на
|
||||
/openclaw /help
|
||||
```
|
||||
|
||||
Натомість нативні команди потребують [додаткових налаштувань маніфесту](#additional-manifest-settings) у вашому застосунку Slack і вмикаються через `channels.slack.commands.native: true` або `commands.native: true` у глобальних конфігураціях.
|
||||
Нативні команди потребують [додаткових налаштувань маніфесту](#additional-manifest-settings) у вашому застосунку Slack і натомість вмикаються через `channels.slack.commands.native: true` або `commands.native: true` у глобальних конфігураціях.
|
||||
|
||||
- Автоматичний режим нативних команд **вимкнено** для Slack, тому `commands.native: "auto"` не вмикає нативні команди Slack.
|
||||
|
||||
@ -745,22 +747,22 @@ Slash-команди з’являються в Slack або як одна на
|
||||
/help
|
||||
```
|
||||
|
||||
Меню нативних аргументів використовують адаптивну стратегію відтворення, яка показує модальне вікно підтвердження перед відправленням вибраного значення опції:
|
||||
Меню нативних аргументів використовують адаптивну стратегію відтворення, яка показує модальне вікно підтвердження перед передаванням вибраного значення опції:
|
||||
|
||||
- до 5 опцій: блоки кнопок
|
||||
- 6-100 опцій: статичне меню вибору
|
||||
- понад 100 опцій: зовнішній вибір з асинхронною фільтрацією опцій, коли доступні обробники опцій інтерактивності
|
||||
- перевищено ліміти Slack: закодовані значення опцій повертаються до кнопок
|
||||
- 6–100 опцій: статичне меню вибору
|
||||
- понад 100 опцій: зовнішній вибір з асинхронною фільтрацією опцій, коли доступні обробники параметрів інтерактивності
|
||||
- перевищені ліміти Slack: закодовані значення опцій повертаються до кнопок
|
||||
|
||||
```txt
|
||||
/think
|
||||
```
|
||||
|
||||
Slash-сеанси використовують ізольовані ключі на кшталт `agent:<agentId>:slack:slash:<userId>` і все одно маршрутизують виконання команд до сеансу цільової розмови за допомогою `CommandTargetSessionKey`.
|
||||
Slash-сеанси використовують ізольовані ключі на кшталт `agent:<agentId>:slack:slash:<userId>` і все одно спрямовують виконання команд до цільового сеансу розмови за допомогою `CommandTargetSessionKey`.
|
||||
|
||||
## Інтерактивні відповіді
|
||||
|
||||
Slack може відтворювати створені агентом інтерактивні елементи керування відповідями, але ця функція стандартно вимкнена.
|
||||
Slack може відтворювати створені агентом елементи керування інтерактивною відповіддю, але ця функція за замовчуванням вимкнена.
|
||||
|
||||
Увімкніть її глобально:
|
||||
|
||||
@ -799,39 +801,39 @@ Slack може відтворювати створені агентом інте
|
||||
- `[[slack_buttons: Approve:approve, Reject:reject]]`
|
||||
- `[[slack_select: Choose a target | Canary:canary, Production:production]]`
|
||||
|
||||
Ці директиви компілюються в Slack Block Kit і маршрутизують натискання або вибори назад через наявний шлях подій взаємодії Slack.
|
||||
Ці директиви компілюються в Slack Block Kit і спрямовують кліки або вибори назад через наявний шлях подій взаємодії Slack.
|
||||
|
||||
Примітки:
|
||||
|
||||
- Це інтерфейс, специфічний для Slack. Інші канали не перекладають директиви Slack Block Kit у власні системи кнопок.
|
||||
- Значення інтерактивних callback є непрозорими токенами, згенерованими OpenClaw, а не сирими значеннями, створеними агентом.
|
||||
- Це інтерфейс, специфічний для Slack. Інші канали не перетворюють директиви Slack Block Kit на власні системи кнопок.
|
||||
- Значення інтерактивних callback — це згенеровані OpenClaw непрозорі токени, а не сирі значення, створені агентом.
|
||||
- Якщо згенеровані інтерактивні блоки перевищили б ліміти Slack Block Kit, OpenClaw повертається до початкової текстової відповіді замість надсилання недійсного payload блоків.
|
||||
|
||||
## Підтвердження exec у Slack
|
||||
## Підтвердження виконання у Slack
|
||||
|
||||
Slack може працювати як нативний клієнт підтверджень з інтерактивними кнопками та взаємодіями, замість повернення до Web UI або термінала.
|
||||
|
||||
- Підтвердження exec використовують `channels.slack.execApprovals.*` для нативної маршрутизації в DM/канал.
|
||||
- Підтвердження Plugin все ще можуть вирішуватися через ту саму нативну поверхню кнопок Slack, коли запит уже потрапляє в Slack і тип id підтвердження є `plugin:`.
|
||||
- Авторизація підтверджувача все ще застосовується: лише користувачі, ідентифіковані як підтверджувачі, можуть схвалювати або відхиляти запити через Slack.
|
||||
- Підтвердження виконання використовують `channels.slack.execApprovals.*` для нативної маршрутизації DM/каналів.
|
||||
- Підтвердження Plugin усе ще можуть вирішуватися через ту саму нативну для Slack поверхню кнопок, коли запит уже надходить у Slack, а вид ідентифікатора підтвердження — `plugin:`.
|
||||
- Авторизація користувачів, які підтверджують, усе ще застосовується: лише користувачі, визначені як ті, хто може підтверджувати, можуть схвалювати або відхиляти запити через Slack.
|
||||
|
||||
Це використовує ту саму спільну поверхню кнопок підтвердження, що й інші канали. Коли `interactivity` увімкнено в налаштуваннях вашого застосунку Slack, запити підтвердження відтворюються як кнопки Block Kit безпосередньо в розмові.
|
||||
Коли ці кнопки присутні, вони є основним UX підтвердження; OpenClaw
|
||||
має включати ручну команду `/approve` лише тоді, коли результат інструмента каже, що
|
||||
підтвердження в чаті недоступні або ручне підтвердження є єдиним шляхом.
|
||||
має включати ручну команду `/approve` лише тоді, коли результат інструмента повідомляє, що підтвердження в чаті
|
||||
недоступні або ручне підтвердження є єдиним шляхом.
|
||||
|
||||
Шлях конфігурації:
|
||||
|
||||
- `channels.slack.execApprovals.enabled`
|
||||
- `channels.slack.execApprovals.approvers` (необов’язково; повертається до `commands.ownerAllowFrom`, коли можливо)
|
||||
- `channels.slack.execApprovals.target` (`dm` | `channel` | `both`, стандартно: `dm`)
|
||||
- `channels.slack.execApprovals.target` (`dm` | `channel` | `both`, за замовчуванням: `dm`)
|
||||
- `agentFilter`, `sessionFilter`
|
||||
|
||||
Slack автоматично вмикає нативні підтвердження exec, коли `enabled` не задано або має значення `"auto"` і
|
||||
визначається принаймні один підтверджувач. Установіть `enabled: false`, щоб явно вимкнути Slack як нативний клієнт підтверджень.
|
||||
Установіть `enabled: true`, щоб примусово ввімкнути нативні підтвердження, коли підтверджувачів визначено.
|
||||
Slack автоматично вмикає нативні підтвердження виконання, коли `enabled` не задано або має значення `"auto"` і
|
||||
визначається принаймні один користувач для підтвердження. Задайте `enabled: false`, щоб явно вимкнути Slack як нативний клієнт підтверджень.
|
||||
Задайте `enabled: true`, щоб примусово ввімкнути нативні підтвердження, коли визначаються користувачі для підтвердження.
|
||||
|
||||
Стандартна поведінка без явної конфігурації підтверджень exec для Slack:
|
||||
Типова поведінка без явної конфігурації підтверджень виконання Slack:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -841,8 +843,8 @@ Slack автоматично вмикає нативні підтверджен
|
||||
}
|
||||
```
|
||||
|
||||
Явна нативна конфігурація Slack потрібна лише тоді, коли потрібно перевизначити підтверджувачів, додати фільтри або
|
||||
увімкнути доставку до вихідного чату:
|
||||
Явна нативна конфігурація Slack потрібна лише тоді, коли потрібно перевизначити користувачів для підтвердження, додати фільтри або
|
||||
увімкнути доставку в чат походження:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -858,39 +860,39 @@ Slack автоматично вмикає нативні підтверджен
|
||||
}
|
||||
```
|
||||
|
||||
Спільне переспрямування `approvals.exec` є окремим. Використовуйте його лише тоді, коли запити підтвердження exec також мають
|
||||
маршрутизуватися до інших чатів або явних позасмугових цілей. Спільне переспрямування `approvals.plugin` також
|
||||
окреме; нативні кнопки Slack усе ще можуть вирішувати підтвердження Plugin, коли ці запити вже потрапляють
|
||||
Спільне переспрямування `approvals.exec` є окремим. Використовуйте його лише тоді, коли запити підтвердження виконання також мають
|
||||
спрямовуватися до інших чатів або явних позасмугових цілей. Спільне переспрямування `approvals.plugin` також
|
||||
окреме; нативні кнопки Slack усе ще можуть вирішувати підтвердження Plugin, коли ці запити вже надходять
|
||||
у Slack.
|
||||
|
||||
`/approve` у тому самому чаті також працює в каналах Slack і DM, які вже підтримують команди. Див. [Підтвердження exec](/uk/tools/exec-approvals), щоб отримати повну модель переспрямування підтверджень.
|
||||
`/approve` у тому самому чаті також працює в каналах Slack і DM, які вже підтримують команди. Див. [Підтвердження виконання](/uk/tools/exec-approvals), щоб переглянути повну модель переспрямування підтверджень.
|
||||
|
||||
## Події та операційна поведінка
|
||||
|
||||
- Редагування/видалення повідомлень відображаються в системні події.
|
||||
- Трансляції тредів (відповіді в треді "Also send to channel") обробляються як звичайні повідомлення користувача.
|
||||
- Події додавання/видалення реакцій відображаються в системні події.
|
||||
- Події приєднання/виходу учасника, створення/перейменування каналу та додавання/видалення закріплень відображаються в системні події.
|
||||
- `channel_id_changed` може мігрувати ключі конфігурації каналу, коли `configWrites` увімкнено.
|
||||
- Редагування/видалення повідомлень зіставляються із системними подіями.
|
||||
- Трансляції тредів (відповіді в треді з параметром «Також надіслати в канал») обробляються як звичайні повідомлення користувача.
|
||||
- Події додавання/видалення реакцій зіставляються із системними подіями.
|
||||
- Події приєднання/виходу учасника, створення/перейменування каналу та додавання/видалення закріплення зіставляються із системними подіями.
|
||||
- `channel_id_changed` може мігрувати ключі конфігурації каналу, коли ввімкнено `configWrites`.
|
||||
- Метадані теми/призначення каналу розглядаються як ненадійний контекст і можуть бути вставлені в контекст маршрутизації.
|
||||
- Автор початку треду та початкове наповнення контексту історією треду фільтруються за налаштованими allowlist відправників, коли застосовно.
|
||||
- Дії блоків і модальні взаємодії генерують структуровані системні події `Slack interaction: ...` з багатими полями payload:
|
||||
- Початкове повідомлення треду та початкове заповнення контексту історії треду фільтруються налаштованими списками дозволених відправників, коли застосовно.
|
||||
- Дії блоків і модальні взаємодії виводять структуровані системні події `Slack interaction: ...` з насиченими полями payload:
|
||||
- дії блоків: вибрані значення, мітки, значення picker і метадані `workflow_*`
|
||||
- події модального `view_submission` і `view_closed` з маршрутизованими метаданими каналу та введеннями форми
|
||||
- події модальних `view_submission` і `view_closed` з маршрутизованими метаданими каналу та введенням форми
|
||||
|
||||
## Довідник конфігурації
|
||||
|
||||
Основний довідник: [Довідник конфігурації - Slack](/uk/gateway/config-channels#slack).
|
||||
Основний довідник: [Довідник конфігурації — Slack](/uk/gateway/config-channels#slack).
|
||||
|
||||
<Accordion title="Високосигнальні поля Slack">
|
||||
|
||||
- режим/автентифікація: `mode`, `botToken`, `appToken`, `signingSecret`, `webhookPath`, `accounts.*`
|
||||
- доступ до DM: `dm.enabled`, `dmPolicy`, `allowFrom` (застаріле: `dm.policy`, `dm.allowFrom`), `dm.groupEnabled`, `dm.groupChannels`
|
||||
- перемикач сумісності: `dangerouslyAllowNameMatching` (break-glass; тримайте вимкненим, якщо не потрібно)
|
||||
- доступ до каналу: `groupPolicy`, `channels.*`, `channels.*.users`, `channels.*.requireMention`
|
||||
- перемикач сумісності: `dangerouslyAllowNameMatching` (аварійний; тримайте вимкненим, якщо не потрібно)
|
||||
- доступ до каналів: `groupPolicy`, `channels.*`, `channels.*.users`, `channels.*.requireMention`
|
||||
- треди/історія: `replyToMode`, `replyToModeByChatType`, `thread.*`, `historyLimit`, `dmHistoryLimit`, `dms.*.historyLimit`
|
||||
- доставка: `textChunkLimit`, `chunkMode`, `mediaMaxMb`, `streaming`, `streaming.nativeTransport`, `streaming.preview.toolProgress`
|
||||
- ops/функції: `configWrites`, `commands.native`, `slashCommand.*`, `actions.*`, `userToken`, `userTokenReadOnly`
|
||||
- операції/функції: `configWrites`, `commands.native`, `slashCommand.*`, `actions.*`, `userToken`, `userTokenReadOnly`
|
||||
|
||||
</Accordion>
|
||||
|
||||
@ -898,12 +900,12 @@ Slack автоматично вмикає нативні підтверджен
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Немає відповідей у каналах">
|
||||
Перевірте в такому порядку:
|
||||
Перевірте по черзі:
|
||||
|
||||
- `groupPolicy`
|
||||
- allowlist каналу (`channels.slack.channels`) — **ключі мають бути ID каналів** (`C12345678`), а не назвами (`#channel-name`). Ключі на основі назв тихо не спрацьовують за `groupPolicy: "allowlist"`, бо маршрутизація каналів стандартно насамперед базується на ID. Щоб знайти ID: клацніть канал у Slack правою кнопкою → **Copy link** — значення `C...` наприкінці URL є ID каналу.
|
||||
- список дозволених каналів (`channels.slack.channels`) — **ключі мають бути ідентифікаторами каналів** (`C12345678`), а не назвами (`#channel-name`). Ключі на основі назв непомітно не спрацьовують із `groupPolicy: "allowlist"`, оскільки маршрутизація каналів за замовчуванням насамперед використовує ідентифікатори. Щоб знайти ідентифікатор: клацніть правою кнопкою канал у Slack → **Copy link** — значення `C...` наприкінці URL є ідентифікатором каналу.
|
||||
- `requireMention`
|
||||
- allowlist `users` для окремого каналу
|
||||
- поканальний список дозволених `users`
|
||||
|
||||
Корисні команди:
|
||||
|
||||
@ -915,14 +917,14 @@ openclaw doctor
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Повідомлення DM ігноруються">
|
||||
<Accordion title="DM-повідомлення ігноруються">
|
||||
Перевірте:
|
||||
|
||||
- `channels.slack.dm.enabled`
|
||||
- `channels.slack.dmPolicy` (або застаріле `channels.slack.dm.policy`)
|
||||
- підтвердження спарювання / записи allowlist
|
||||
- події DM Slack Assistant: докладні журнали зі згадкою `drop message_changed`
|
||||
зазвичай означають, що Slack надіслав подію відредагованого треду Assistant без
|
||||
- підтвердження pairing / записи списку дозволених
|
||||
- Події DM Slack Assistant: докладні журнали зі згадкою `drop message_changed`
|
||||
зазвичай означають, що Slack надіслав відредаговану подію треду Assistant без
|
||||
відновлюваного людського відправника в метаданих повідомлення
|
||||
|
||||
```bash
|
||||
@ -931,53 +933,52 @@ openclaw pairing list slack
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Socket mode не підключається">
|
||||
<Accordion title="Режим Socket не підключається">
|
||||
Перевірте токени bot + app і ввімкнення Socket Mode у налаштуваннях застосунку Slack.
|
||||
|
||||
Якщо `openclaw channels status --probe --json` показує `botTokenStatus` або
|
||||
`appTokenStatus: "configured_unavailable"`, обліковий запис Slack
|
||||
налаштовано, але поточний runtime не зміг визначити значення,
|
||||
підкріплене SecretRef.
|
||||
налаштований, але поточне середовище виконання не змогло визначити значення на основі SecretRef.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HTTP mode не отримує події">
|
||||
<Accordion title="Режим HTTP не отримує події">
|
||||
Перевірте:
|
||||
|
||||
- signing secret
|
||||
- webhook path
|
||||
- шлях Webhook
|
||||
- URL запитів Slack (Events + Interactivity + Slash Commands)
|
||||
- унікальний `webhookPath` для кожного HTTP-облікового запису
|
||||
|
||||
Якщо `signingSecretStatus: "configured_unavailable"` з’являється в
|
||||
знімках облікових записів, HTTP-обліковий запис налаштовано, але поточний runtime не зміг
|
||||
визначити signing secret, підкріплений SecretRef.
|
||||
Якщо `signingSecretStatus: "configured_unavailable"` з’являється у знімках облікового запису,
|
||||
HTTP-обліковий запис налаштований, але поточне середовище виконання не змогло
|
||||
визначити signing secret на основі SecretRef.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Нативні/slash-команди не запускаються">
|
||||
<Accordion title="Нативні/slash-команди не спрацьовують">
|
||||
Перевірте, що саме ви мали на увазі:
|
||||
|
||||
- режим нативних команд (`channels.slack.commands.native: true`) з відповідними slash-командами, зареєстрованими в Slack
|
||||
- режим нативних команд (`channels.slack.commands.native: true`) із відповідними slash-командами, зареєстрованими у Slack
|
||||
- або режим однієї slash-команди (`channels.slack.slashCommand.enabled: true`)
|
||||
|
||||
Також перевірте `commands.useAccessGroups` і allowlist каналів/користувачів.
|
||||
Також перевірте `commands.useAccessGroups` і списки дозволених каналів/користувачів.
|
||||
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## Довідник vision для вкладень
|
||||
|
||||
Slack може прикріплювати завантажені медіа до ходу агента, коли завантаження файлів Slack успішні та ліміти розміру це дозволяють. Файли зображень можуть передаватися через шлях розуміння медіа або безпосередньо до моделі відповіді з підтримкою vision; інші файли зберігаються як контекст файлів для завантаження, а не розглядаються як вхідні зображення.
|
||||
Slack може прикріплювати завантажені медіа до кроку агента, коли завантаження файлів Slack успішне й обмеження розміру дозволяють. Файли зображень можуть проходити через шлях розуміння медіа або безпосередньо до моделі відповіді з підтримкою vision; інші файли зберігаються як контекст файлів для завантаження, а не обробляються як вхідні зображення.
|
||||
|
||||
### Підтримувані типи медіа
|
||||
|
||||
| Тип медіа | Джерело | Поточна поведінка | Примітки |
|
||||
| ------------------------------ | -------------------- | --------------------------------------------------------------------------------- | ------------------------------------------------------------------------- |
|
||||
| Зображення JPEG / PNG / GIF / WebP | URL файлу Slack | Завантажуються та прикріплюються до ходу для обробки з підтримкою vision | Обмеження на файл: `channels.slack.mediaMaxMb` (стандартно 20 MB) |
|
||||
| PDF-файли | URL файлу Slack | Завантажуються та надаються як файловий контекст для інструментів, таких як `download-file` або `pdf` | Вхідний шлях Slack не перетворює PDF на вхідні дані image-vision автоматично |
|
||||
| Інші файли | URL файлу Slack | Завантажуються, коли можливо, і надаються як файловий контекст | Бінарні файли не розглядаються як вхідні зображення |
|
||||
| Відповіді в треді | Файли автора треду | Файли кореневого повідомлення можуть бути гідратовані як контекст, коли відповідь не має безпосередніх медіа | Автори лише з файлами використовують placeholder вкладення |
|
||||
| Зображення JPEG / PNG / GIF / WebP | URL файлу Slack | Завантажуються й додаються до ходу для обробки з підтримкою зору | Ліміт на файл: `channels.slack.mediaMaxMb` (типово 20 MB) |
|
||||
| Файли PDF | URL файлу Slack | Завантажуються й надаються як файловий контекст для інструментів, як-от `download-file` або `pdf` | Вхідні повідомлення Slack не перетворюють PDF автоматично на вхідні дані для зорової обробки |
|
||||
| Інші файли | URL файлу Slack | Завантажуються, коли це можливо, і надаються як файловий контекст | Бінарні файли не обробляються як вхідні зображення |
|
||||
| Відповіді в треді | Файли початкового повідомлення треду | Файли кореневого повідомлення можуть бути завантажені як контекст, коли відповідь не має власних медіа | Початкові повідомлення лише з файлами використовують заповнювач вкладення |
|
||||
| Повідомлення з кількома зображеннями | Кілька файлів Slack | Кожен файл оцінюється незалежно | Обробка Slack обмежена вісьмома файлами на повідомлення |
|
||||
|
||||
### Вхідний конвеєр
|
||||
@ -985,49 +986,49 @@ Slack може прикріплювати завантажені медіа до
|
||||
Коли надходить повідомлення Slack із файловими вкладеннями:
|
||||
|
||||
1. OpenClaw завантажує файл із приватної URL-адреси Slack за допомогою токена бота (`xoxb-...`).
|
||||
2. Файл успішно записується до сховища медіа.
|
||||
3. Завантажені шляхи медіа та типи вмісту додаються до вхідного контексту.
|
||||
4. Шляхи моделей/інструментів із підтримкою зображень можуть використовувати вкладення зображень із цього контексту.
|
||||
5. Файли, що не є зображеннями, залишаються доступними як метадані файлів або посилання на медіа для інструментів, які можуть їх обробляти.
|
||||
2. У разі успіху файл записується до сховища медіа.
|
||||
3. Шляхи завантажених медіа й типи вмісту додаються до вхідного контексту.
|
||||
4. Шляхи моделі/інструменту з підтримкою зображень можуть використовувати вкладення зображень із цього контексту.
|
||||
5. Файли, що не є зображеннями, залишаються доступними як файлові метадані або посилання на медіа для інструментів, які можуть їх обробляти.
|
||||
|
||||
### Успадкування вкладень кореня треду
|
||||
|
||||
Коли повідомлення надходить у тред (має батьківський `thread_ts`):
|
||||
Коли повідомлення надходить у треді (має батьківський `thread_ts`):
|
||||
|
||||
- Якщо сама відповідь не має безпосередніх медіа, а включене кореневе повідомлення має файли, Slack може гідратувати кореневі файли як контекст початку треду.
|
||||
- Безпосередні вкладення відповіді мають пріоритет над вкладеннями кореневого повідомлення.
|
||||
- Кореневе повідомлення, яке має лише файли й не має тексту, представляється заповнювачем вкладення, щоб резервний механізм усе одно міг включити його файли.
|
||||
- Якщо сама відповідь не має власних медіа, а включене кореневе повідомлення має файли, Slack може завантажити кореневі файли як контекст початкового повідомлення треду.
|
||||
- Власні вкладення відповіді мають пріоритет над вкладеннями кореневого повідомлення.
|
||||
- Кореневе повідомлення, яке має лише файли й не має тексту, представляється заповнювачем вкладення, щоб резервний варіант усе одно міг включити його файли.
|
||||
|
||||
### Обробка кількох вкладень
|
||||
|
||||
Коли одне повідомлення Slack містить кілька файлових вкладень:
|
||||
|
||||
- Кожне вкладення обробляється незалежно через медіаконвеєр.
|
||||
- Завантажені посилання на медіа агрегуються в контекст повідомлення.
|
||||
- Посилання на завантажені медіа агрегуються в контекст повідомлення.
|
||||
- Порядок обробки відповідає порядку файлів Slack у корисному навантаженні події.
|
||||
- Помилка завантаження одного вкладення не блокує інші.
|
||||
|
||||
### Обмеження розміру, завантаження та моделей
|
||||
|
||||
- **Обмеження розміру**: Типово 20 MB на файл. Налаштовується через `channels.slack.mediaMaxMb`.
|
||||
- **Помилки завантаження**: Файли, які Slack не може надати, протерміновані URL-адреси, недоступні файли, завеликі файли та HTML-відповіді автентифікації/входу Slack пропускаються замість того, щоб повідомлятися як непідтримувані формати.
|
||||
- **Модель бачення**: Аналіз зображень використовує активну модель відповіді, якщо вона підтримує бачення, або модель зображень, налаштовану в `agents.defaults.imageModel`.
|
||||
- **Ліміт розміру**: Типово 20 MB на файл. Налаштовується через `channels.slack.mediaMaxMb`.
|
||||
- **Помилки завантаження**: Файли, які Slack не може надати, прострочені URL-адреси, недоступні файли, завеликі файли та HTML-відповіді автентифікації/входу Slack пропускаються, а не повідомляються як непідтримувані формати.
|
||||
- **Зорова модель**: Аналіз зображень використовує активну модель відповіді, коли вона підтримує зір, або модель зображень, налаштовану в `agents.defaults.imageModel`.
|
||||
|
||||
### Відомі обмеження
|
||||
|
||||
| Сценарій | Поточна поведінка | Обхідний шлях |
|
||||
| ------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- |
|
||||
| Протермінована URL-адреса файлу Slack | Файл пропускається; помилка не показується | Повторно завантажте файл у Slack |
|
||||
| Модель бачення не налаштована | Вкладення зображень зберігаються як посилання на медіа, але не аналізуються як зображення | Налаштуйте `agents.defaults.imageModel` або використовуйте модель відповіді з підтримкою бачення |
|
||||
| Дуже великі зображення (> 20 MB типово) | Пропускаються відповідно до обмеження розміру | Збільште `channels.slack.mediaMaxMb`, якщо Slack дозволяє |
|
||||
| Переслані/поширені вкладення | Текст і розміщені в Slack медіа зображень/файлів обробляються за принципом найкращої спроби | Поширте безпосередньо в треді OpenClaw |
|
||||
| PDF-вкладення | Зберігаються як контекст файлу/медіа, автоматично не спрямовуються через бачення зображень | Використовуйте `download-file` для метаданих файлу або інструмент `pdf` для аналізу PDF |
|
||||
| Сценарій | Поточна поведінка | Обхідний шлях |
|
||||
| -------------------------------------- | ---------------------------------------------------------------------------- | -------------------------------------------------------------------------- |
|
||||
| Прострочена URL-адреса файлу Slack | Файл пропускається; помилка не показується | Повторно завантажте файл у Slack |
|
||||
| Зорова модель не налаштована | Вкладення зображень зберігаються як посилання на медіа, але не аналізуються як зображення | Налаштуйте `agents.defaults.imageModel` або використовуйте модель відповіді з підтримкою зору |
|
||||
| Дуже великі зображення (> 20 MB типово) | Пропускаються відповідно до ліміту розміру | Збільште `channels.slack.mediaMaxMb`, якщо Slack дозволяє |
|
||||
| Переслані/спільні вкладення | Текст і розміщені в Slack медіа зображень/файлів обробляються за принципом найкращих зусиль | Поділіться ними повторно безпосередньо в треді OpenClaw |
|
||||
| Вкладення PDF | Зберігаються як файловий/медійний контекст, не спрямовуються автоматично через зорову обробку зображень | Використовуйте `download-file` для файлових метаданих або інструмент `pdf` для аналізу PDF |
|
||||
|
||||
### Пов’язана документація
|
||||
|
||||
- [Конвеєр розуміння медіа](/uk/nodes/media-understanding)
|
||||
- [Інструмент PDF](/uk/tools/pdf)
|
||||
- Епік: [#51349](https://github.com/openclaw/openclaw/issues/51349) — увімкнення бачення вкладень Slack
|
||||
- Епік: [#51349](https://github.com/openclaw/openclaw/issues/51349) — увімкнення зорової обробки вкладень Slack
|
||||
- Регресійні тести: [#51353](https://github.com/openclaw/openclaw/issues/51353)
|
||||
- Жива перевірка: [#51354](https://github.com/openclaw/openclaw/issues/51354)
|
||||
|
||||
@ -1035,19 +1036,19 @@ Slack може прикріплювати завантажені медіа до
|
||||
|
||||
<CardGroup cols={2}>
|
||||
<Card title="Сполучення" icon="link" href="/uk/channels/pairing">
|
||||
Сполучіть користувача Slack із gateway.
|
||||
Сполучіть користувача Slack із Gateway.
|
||||
</Card>
|
||||
<Card title="Групи" icon="users" href="/uk/channels/groups">
|
||||
Поведінка каналів і групових DM.
|
||||
</Card>
|
||||
<Card title="Маршрутизація каналів" icon="route" href="/uk/channels/channel-routing">
|
||||
Маршрутизуйте вхідні повідомлення до агентів.
|
||||
<Card title="Маршрутизація каналу" icon="route" href="/uk/channels/channel-routing">
|
||||
Спрямовуйте вхідні повідомлення до агентів.
|
||||
</Card>
|
||||
<Card title="Безпека" icon="shield" href="/uk/gateway/security">
|
||||
Модель загроз і посилення захисту.
|
||||
</Card>
|
||||
<Card title="Конфігурація" icon="sliders" href="/uk/gateway/configuration">
|
||||
Структура конфігурації та пріоритет.
|
||||
Структура конфігурації та пріоритетність.
|
||||
</Card>
|
||||
<Card title="Slash-команди" icon="terminal" href="/uk/tools/slash-commands">
|
||||
Каталог команд і поведінка.
|
||||
|
||||
@ -1,29 +1,29 @@
|
||||
---
|
||||
read_when:
|
||||
- Налаштування Plugin каналу (автентифікація, контроль доступу, кілька облікових записів)
|
||||
- Усунення несправностей із ключами конфігурації для окремих каналів
|
||||
- Аудит політики приватних повідомлень, групової політики або обмеження згадок
|
||||
summary: 'Конфігурація каналів: контроль доступу, сполучення, окремі ключі для кожного каналу в Slack, Discord, Telegram, WhatsApp, Matrix, iMessage тощо'
|
||||
- Усунення несправностей із ключами конфігурації для кожного каналу
|
||||
- Аудит політики DM, політики груп або обмеження за згадками
|
||||
summary: 'Конфігурація каналів: контроль доступу, сполучення, ключі для кожного каналу в Slack, Discord, Telegram, WhatsApp, Matrix, iMessage тощо'
|
||||
title: Конфігурація — канали
|
||||
x-i18n:
|
||||
generated_at: "2026-05-01T18:35:03Z"
|
||||
generated_at: "2026-05-02T02:59:28Z"
|
||||
model: gpt-5.5
|
||||
provider: openai
|
||||
source_hash: bca1314b67f8d2dd4699888a728af28a75b973b001901581536df31c2d0e8ce8
|
||||
source_hash: bc790f19aed583b4c52988c170c8883bf56282cfbf3eae26f655f7a4660bd4ed
|
||||
source_path: gateway/config-channels.md
|
||||
workflow: 16
|
||||
---
|
||||
|
||||
Ключі конфігурації для окремих каналів у `channels.*`. Охоплює доступ до DM і груп,
|
||||
налаштування кількох облікових записів, обмеження за згадками та ключі для окремих каналів Slack, Discord,
|
||||
Telegram, WhatsApp, Matrix, iMessage та інших вбудованих channel plugins.
|
||||
налаштування з кількома обліковими записами, обмеження за згадкою та ключі для окремих каналів Slack, Discord,
|
||||
Telegram, WhatsApp, Matrix, iMessage та інших bundled channel plugins.
|
||||
|
||||
Для агентів, інструментів, середовища виконання gateway та інших ключів верхнього рівня див.
|
||||
Для агентів, інструментів, середовища виконання Gateway та інших ключів верхнього рівня див.
|
||||
[Довідник конфігурації](/uk/gateway/configuration-reference).
|
||||
|
||||
## Канали
|
||||
|
||||
Кожен канал запускається автоматично, коли існує його розділ конфігурації (якщо не встановлено `enabled: false`).
|
||||
Кожен канал запускається автоматично, коли існує його розділ конфігурації (якщо не задано `enabled: false`).
|
||||
|
||||
### Доступ до DM і груп
|
||||
|
||||
@ -32,14 +32,14 @@ Telegram, WhatsApp, Matrix, iMessage та інших вбудованих channe
|
||||
| Політика DM | Поведінка |
|
||||
| ------------------- | --------------------------------------------------------------- |
|
||||
| `pairing` (типово) | Невідомі відправники отримують одноразовий код сполучення; власник має схвалити |
|
||||
| `allowlist` | Лише відправники в `allowFrom` (або в сховищі дозволених після сполучення) |
|
||||
| `allowlist` | Лише відправники в `allowFrom` (або paired allow store) |
|
||||
| `open` | Дозволити всі вхідні DM (потребує `allowFrom: ["*"]`) |
|
||||
| `disabled` | Ігнорувати всі вхідні DM |
|
||||
| `disabled` | Ігнорувати всі вхідні DM |
|
||||
|
||||
| Групова політика | Поведінка |
|
||||
| Групова політика | Поведінка |
|
||||
| --------------------- | ------------------------------------------------------ |
|
||||
| `allowlist` (типово) | Лише групи, що відповідають налаштованому списку дозволених |
|
||||
| `open` | Обходити списки дозволених груп (обмеження за згадками все одно застосовується) |
|
||||
| `allowlist` (типово) | Лише групи, що відповідають налаштованому allowlist |
|
||||
| `open` | Обійти групові allowlists (обмеження за згадкою все ще застосовується) |
|
||||
| `disabled` | Блокувати всі повідомлення груп/кімнат |
|
||||
|
||||
<Note>
|
||||
@ -48,9 +48,9 @@ Telegram, WhatsApp, Matrix, iMessage та інших вбудованих channe
|
||||
Якщо блок провайдера повністю відсутній (`channels.<provider>` відсутній), групова політика під час виконання повертається до `allowlist` (fail-closed) із попередженням під час запуску.
|
||||
</Note>
|
||||
|
||||
### Перевизначення моделі каналу
|
||||
### Перевизначення моделей каналів
|
||||
|
||||
Використовуйте `channels.modelByChannel`, щоб закріпити певні ID каналів за моделлю. Значення приймають `provider/model` або налаштовані псевдоніми моделей. Зіставлення каналів застосовується, коли сесія ще не має перевизначення моделі (наприклад, встановленого через `/model`).
|
||||
Використовуйте `channels.modelByChannel`, щоб закріпити конкретні ID каналів за моделлю. Значення приймають `provider/model` або налаштовані псевдоніми моделей. Зіставлення каналів застосовується, коли сеанс ще не має перевизначення моделі (наприклад, заданого через `/model`).
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -92,14 +92,14 @@ Telegram, WhatsApp, Matrix, iMessage та інших вбудованих channe
|
||||
```
|
||||
|
||||
- `channels.defaults.groupPolicy`: резервна групова політика, коли `groupPolicy` на рівні провайдера не встановлено.
|
||||
- `channels.defaults.contextVisibility`: типовий режим видимості додаткового контексту для всіх каналів. Значення: `all` (типово, включати весь контекст цитат/тредів/історії), `allowlist` (включати лише контекст від відправників зі списку дозволених), `allowlist_quote` (те саме, що allowlist, але зберігати явний контекст цитати/відповіді). Перевизначення для окремого каналу: `channels.<channel>.contextVisibility`.
|
||||
- `channels.defaults.heartbeat.showOk`: включати справні статуси каналів у вивід heartbeat.
|
||||
- `channels.defaults.heartbeat.showAlerts`: включати погіршені/помилкові статуси у вивід heartbeat.
|
||||
- `channels.defaults.heartbeat.useIndicator`: рендерити компактний вивід heartbeat у стилі індикатора.
|
||||
- `channels.defaults.contextVisibility`: типовий режим видимості додаткового контексту для всіх каналів. Значення: `all` (типово, включає весь контекст цитат/тредів/історії), `allowlist` (включає лише контекст від відправників з allowlist), `allowlist_quote` (те саме, що allowlist, але зберігає явний контекст цитати/відповіді). Перевизначення для окремого каналу: `channels.<channel>.contextVisibility`.
|
||||
- `channels.defaults.heartbeat.showOk`: включати справні статуси каналів у вивід Heartbeat.
|
||||
- `channels.defaults.heartbeat.showAlerts`: включати погіршені/помилкові статуси у вивід Heartbeat.
|
||||
- `channels.defaults.heartbeat.useIndicator`: відображати компактний вивід Heartbeat у стилі індикатора.
|
||||
|
||||
### WhatsApp
|
||||
|
||||
WhatsApp працює через web-канал Gateway (Baileys Web). Він запускається автоматично, коли існує зв’язана сесія.
|
||||
WhatsApp працює через вебканал Gateway (Baileys Web). Він запускається автоматично, коли існує прив’язаний сеанс.
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -139,7 +139,7 @@ WhatsApp працює через web-канал Gateway (Baileys Web). Він з
|
||||
}
|
||||
```
|
||||
|
||||
<Accordion title="Кілька облікових записів WhatsApp">
|
||||
<Accordion title="WhatsApp із кількома обліковими записами">
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -157,9 +157,9 @@ WhatsApp працює через web-канал Gateway (Baileys Web). Він з
|
||||
}
|
||||
```
|
||||
|
||||
- Вихідні команди типово використовують обліковий запис `default`, якщо він існує; інакше перший налаштований ID облікового запису (відсортований).
|
||||
- Необов’язковий `channels.whatsapp.defaultAccount` перевизначає цей резервний вибір типового облікового запису, коли збігається з налаштованим ID облікового запису.
|
||||
- Застарілий каталог автентифікації Baileys для одного облікового запису мігрується командою `openclaw doctor` у `whatsapp/default`.
|
||||
- Вихідні команди типово використовують обліковий запис `default`, якщо він є; інакше перший налаштований ID облікового запису (у відсортованому порядку).
|
||||
- Необов’язковий `channels.whatsapp.defaultAccount` перевизначає цей резервний вибір типового облікового запису, коли він збігається з налаштованим ID облікового запису.
|
||||
- Застарілий каталог авторизації Baileys для одного облікового запису мігрується командою `openclaw doctor` у `whatsapp/default`.
|
||||
- Перевизначення для окремого облікового запису: `channels.whatsapp.accounts.<id>.sendReadReceipts`, `channels.whatsapp.accounts.<id>.dmPolicy`, `channels.whatsapp.accounts.<id>.allowFrom`.
|
||||
|
||||
</Accordion>
|
||||
@ -219,13 +219,13 @@ WhatsApp працює через web-канал Gateway (Baileys Web). Він з
|
||||
}
|
||||
```
|
||||
|
||||
- Токен бота: `channels.telegram.botToken` або `channels.telegram.tokenFile` (лише звичайний файл; символічні посилання відхиляються), з `TELEGRAM_BOT_TOKEN` як резервним варіантом для типового облікового запису.
|
||||
- Токен бота: `channels.telegram.botToken` або `channels.telegram.tokenFile` (лише звичайний файл; symlinks відхиляються), з `TELEGRAM_BOT_TOKEN` як резервним варіантом для типового облікового запису.
|
||||
- `apiRoot` — це лише корінь Telegram Bot API. Використовуйте `https://api.telegram.org` або власний self-hosted/proxy root, а не `https://api.telegram.org/bot<TOKEN>`; `openclaw doctor --fix` видаляє випадковий кінцевий суфікс `/bot<TOKEN>`.
|
||||
- Необов’язковий `channels.telegram.defaultAccount` перевизначає типовий вибір облікового запису, коли збігається з налаштованим ID облікового запису.
|
||||
- У налаштуваннях із кількома обліковими записами (2+ ID облікових записів) задайте явне типове значення (`channels.telegram.defaultAccount` або `channels.telegram.accounts.default`), щоб уникнути резервної маршрутизації; `openclaw doctor` попереджає, коли воно відсутнє або недійсне.
|
||||
- Необов’язковий `channels.telegram.defaultAccount` перевизначає вибір типового облікового запису, коли він збігається з налаштованим ID облікового запису.
|
||||
- У налаштуваннях із кількома обліковими записами (2+ ID облікових записів) задайте явний типовий обліковий запис (`channels.telegram.defaultAccount` або `channels.telegram.accounts.default`), щоб уникнути резервної маршрутизації; `openclaw doctor` попереджає, коли він відсутній або недійсний.
|
||||
- `configWrites: false` блокує записи конфігурації, ініційовані Telegram (міграції ID супергруп, `/config set|unset`).
|
||||
- Записи верхнього рівня `bindings[]` з `type: "acp"` налаштовують постійні прив’язки ACP для тем форуму (використовуйте канонічний `chatId:topic:topicId` у `match.peer.id`). Семантика полів спільна в [Агенти ACP](/uk/tools/acp-agents#channel-specific-settings).
|
||||
- Попередні перегляди потоків Telegram використовують `sendMessage` + `editMessageText` (працює в особистих і групових чатах).
|
||||
- Записи верхнього рівня `bindings[]` із `type: "acp"` налаштовують постійні прив’язки ACP для тем форуму (використовуйте канонічний `chatId:topic:topicId` у `match.peer.id`). Семантика полів спільна в [Агентах ACP](/uk/tools/acp-agents#channel-specific-settings).
|
||||
- Попередні перегляди потоків Telegram використовують `sendMessage` + `editMessageText` (працює в прямих і групових чатах).
|
||||
- Політика повторних спроб: див. [Політика повторних спроб](/uk/concepts/retry).
|
||||
|
||||
### Discord
|
||||
@ -330,39 +330,40 @@ WhatsApp працює через web-канал Gateway (Baileys Web). Він з
|
||||
}
|
||||
```
|
||||
|
||||
- Токен: `channels.discord.token`, з `DISCORD_BOT_TOKEN` як резервним варіантом для стандартного акаунта.
|
||||
- Прямі вихідні виклики, які надають явний Discord `token`, використовують цей токен для виклику; налаштування повторних спроб/політик акаунта все одно надходять з вибраного акаунта в активному знімку runtime.
|
||||
- Необов'язковий `channels.discord.defaultAccount` перевизначає вибір стандартного акаунта, коли він збігається з налаштованим id акаунта.
|
||||
- Використовуйте `user:<id>` (DM) або `channel:<id>` (канал guild) для цілей доставки; голі числові ID відхиляються.
|
||||
- Slug-и guild мають нижній регістр із пробілами, заміненими на `-`; ключі каналів використовують slug-овану назву (без `#`). Надавайте перевагу ID guild.
|
||||
- Повідомлення, створені ботами, стандартно ігноруються. `allowBots: true` вмикає їх; використовуйте `allowBots: "mentions"`, щоб приймати лише повідомлення ботів, які згадують бота (власні повідомлення все одно фільтруються).
|
||||
- `channels.discord.guilds.<id>.ignoreOtherMentions` (і перевизначення каналів) відкидає повідомлення, які згадують іншого користувача або роль, але не бота (окрім @everyone/@here).
|
||||
- `maxLinesPerMessage` (стандартно 17) розбиває високі повідомлення, навіть якщо вони менші за 2000 символів.
|
||||
- `channels.discord.threadBindings` керує прив'язаною до Discord thread маршрутизацією:
|
||||
- `enabled`: перевизначення Discord для функцій прив'язаних до thread сесій (`/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age` і прив'язана доставка/маршрутизація)
|
||||
- `idleHours`: перевизначення Discord для автоматичного unfocus через неактивність у годинах (`0` вимикає)
|
||||
- Токен: `channels.discord.token`, із `DISCORD_BOT_TOKEN` як резервним варіантом для облікового запису за замовчуванням.
|
||||
- Прямі вихідні виклики, які надають явний `token` Discord, використовують цей токен для виклику; параметри повторних спроб і політик облікового запису все одно беруться з вибраного облікового запису в активному знімку runtime.
|
||||
- Необов’язковий `channels.discord.defaultAccount` перевизначає вибір облікового запису за замовчуванням, коли він збігається з налаштованим ідентифікатором облікового запису.
|
||||
- Використовуйте `user:<id>` (DM) або `channel:<id>` (канал гільдії) для цілей доставки; прості числові ID відхиляються.
|
||||
- Слаги гільдій пишуться малими літерами із заміною пробілів на `-`; ключі каналів використовують назву зі слагом (без `#`). Надавайте перевагу ID гільдій.
|
||||
- Повідомлення, створені ботами, за замовчуванням ігноруються. `allowBots: true` вмикає їх; використовуйте `allowBots: "mentions"`, щоб приймати лише повідомлення ботів, які згадують бота (власні повідомлення все одно фільтруються).
|
||||
- `channels.discord.guilds.<id>.ignoreOtherMentions` (і перевизначення каналів) відкидає повідомлення, які згадують іншого користувача або роль, але не бота (крім @everyone/@here).
|
||||
- `channels.discord.mentionAliases` зіставляє стабільний вихідний текст `@handle` з ID користувачів Discord перед надсиланням, тож відомих учасників команди можна згадувати детерміновано, навіть коли тимчасовий кеш каталогу порожній. Перевизначення для окремого облікового запису розміщені в `channels.discord.accounts.<accountId>.mentionAliases`.
|
||||
- `maxLinesPerMessage` (за замовчуванням 17) розбиває високі повідомлення, навіть якщо вони менші за 2000 символів.
|
||||
- `channels.discord.threadBindings` керує маршрутизацією Discord, прив’язаною до тредів:
|
||||
- `enabled`: перевизначення Discord для функцій сесії, прив’язаних до тредів (`/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age`, а також прив’язана доставка/маршрутизація)
|
||||
- `idleHours`: перевизначення Discord для автоматичного скасування фокуса через неактивність у годинах (`0` вимикає)
|
||||
- `maxAgeHours`: перевизначення Discord для жорсткого максимального віку в годинах (`0` вимикає)
|
||||
- `spawnSubagentSessions`: перемикач із явним увімкненням для автоматичного створення/прив'язування thread через `sessions_spawn({ thread: true })`
|
||||
- Записи верхнього рівня `bindings[]` з `type: "acp"` налаштовують постійні прив'язки ACP для каналів і threads (використовуйте id каналу/thread у `match.peer.id`). Семантика полів спільна в [Агенти ACP](/uk/tools/acp-agents#channel-specific-settings).
|
||||
- `spawnSubagentSessions`: перемикач явного ввімкнення для автоматичного створення/прив’язки треду через `sessions_spawn({ thread: true })`
|
||||
- Записи верхнього рівня `bindings[]` з `type: "acp"` налаштовують сталі прив’язки ACP для каналів і тредів (використовуйте ID каналу/треду в `match.peer.id`). Семантика полів спільна в [ACP Agents](/uk/tools/acp-agents#channel-specific-settings).
|
||||
- `channels.discord.ui.components.accentColor` задає акцентний колір для контейнерів компонентів Discord v2.
|
||||
- `channels.discord.voice` вмикає розмови в голосових каналах Discord і необов'язкові перевизначення auto-join + LLM + TTS. Текстові конфігурації Discord стандартно лишають голос вимкненим; задайте `channels.discord.voice.enabled=true`, щоб увімкнути.
|
||||
- `channels.discord.voice.model` необов'язково перевизначає модель LLM, яку використовують для відповідей у голосових каналах Discord.
|
||||
- `channels.discord.voice.daveEncryption` і `channels.discord.voice.decryptionFailureTolerance` передаються до параметрів DAVE `@discordjs/voice` (стандартно `true` і `24`).
|
||||
- `channels.discord.voice.connectTimeoutMs` керує початковим очікуванням Ready `@discordjs/voice` для `/vc join` і спроб auto-join (стандартно `30000`).
|
||||
- `channels.discord.voice.reconnectGraceMs` керує тим, скільки часу від'єднана голосова сесія може мати на вхід у сигналізацію повторного підключення, перш ніж OpenClaw її знищить (стандартно `15000`).
|
||||
- OpenClaw додатково намагається відновити отримання голосу, виходячи з голосової сесії та повторно приєднуючись до неї після повторюваних помилок розшифрування.
|
||||
- `channels.discord.streaming` є канонічним ключем режиму потоку. Застарілі значення `streamMode` і булеві `streaming` автоматично мігруються.
|
||||
- `channels.discord.autoPresence` зіставляє доступність runtime із присутністю бота (healthy => online, degraded => idle, exhausted => dnd) і дозволяє необов'язкові перевизначення тексту статусу.
|
||||
- `channels.discord.dangerouslyAllowNameMatching` повторно вмикає змінне зіставлення за ім'ям/тегом (режим сумісності break-glass).
|
||||
- `channels.discord.execApprovals`: нативна для Discord доставка схвалень exec і авторизація схвалювачів.
|
||||
- `enabled`: `true`, `false` або `"auto"` (стандартно). В автоматичному режимі схвалення exec активуються, коли схвалювачів можна визначити з `approvers` або `commands.ownerAllowFrom`.
|
||||
- `approvers`: ID користувачів Discord, яким дозволено схвалювати запити exec. Якщо пропущено, використовує `commands.ownerAllowFrom`.
|
||||
- `agentFilter`: необов'язковий allowlist ID агентів. Пропустіть, щоб пересилати схвалення для всіх агентів.
|
||||
- `sessionFilter`: необов'язкові шаблони ключів сесій (підрядок або regex).
|
||||
- `target`: куди надсилати запити схвалення. `"dm"` (стандартно) надсилає в DM схвалювачів, `"channel"` надсилає в початковий канал, `"both"` надсилає в обидва місця. Коли target містить `"channel"`, кнопками можуть користуватися лише визначені схвалювачі.
|
||||
- `cleanupAfterResolve`: коли `true`, видаляє DM схвалень після схвалення, відмови або timeout.
|
||||
- `channels.discord.voice` вмикає розмови в голосових каналах Discord і необов’язкові перевизначення автоприєднання + LLM + TTS. Текстові конфігурації Discord за замовчуванням залишають голос вимкненим; задайте `channels.discord.voice.enabled=true`, щоб увімкнути.
|
||||
- `channels.discord.voice.model` необов’язково перевизначає модель LLM, що використовується для відповідей у голосових каналах Discord.
|
||||
- `channels.discord.voice.daveEncryption` і `channels.discord.voice.decryptionFailureTolerance` передаються до параметрів DAVE `@discordjs/voice` (`true` і `24` за замовчуванням).
|
||||
- `channels.discord.voice.connectTimeoutMs` керує початковим очікуванням Ready `@discordjs/voice` для `/vc join` і спроб автоприєднання (`30000` за замовчуванням).
|
||||
- `channels.discord.voice.reconnectGraceMs` керує тим, скільки часу від’єднана голосова сесія може входити в сигналізацію повторного підключення, перш ніж OpenClaw її знищить (`15000` за замовчуванням).
|
||||
- OpenClaw додатково намагається відновити приймання голосу, виходячи з голосової сесії та повторно приєднуючись до неї після повторюваних помилок дешифрування.
|
||||
- `channels.discord.streaming` є канонічним ключем режиму потоку. Застарілі значення `streamMode` і булеві значення `streaming` автоматично мігруються.
|
||||
- `channels.discord.autoPresence` зіставляє доступність runtime зі статусом присутності бота (healthy => online, degraded => idle, exhausted => dnd) і дозволяє необов’язкові перевизначення тексту статусу.
|
||||
- `channels.discord.dangerouslyAllowNameMatching` повторно вмикає зіставлення за змінюваними іменем/тегом (режим сумісності для аварійного обходу).
|
||||
- `channels.discord.execApprovals`: доставка схвалень exec у нативному форматі Discord і авторизація схвалювачів.
|
||||
- `enabled`: `true`, `false` або `"auto"` (за замовчуванням). В автоматичному режимі схвалення exec активуються, коли схвалювачів можна визначити з `approvers` або `commands.ownerAllowFrom`.
|
||||
- `approvers`: ID користувачів Discord, яким дозволено схвалювати запити exec. Якщо пропущено, використовується резервне значення `commands.ownerAllowFrom`.
|
||||
- `agentFilter`: необов’язковий список дозволених ID агентів. Пропустіть, щоб пересилати схвалення для всіх агентів.
|
||||
- `sessionFilter`: необов’язкові шаблони ключів сесій (підрядок або регулярний вираз).
|
||||
- `target`: куди надсилати запити на схвалення. `"dm"` (за замовчуванням) надсилає в DM схвалювачів, `"channel"` надсилає до початкового каналу, `"both"` надсилає в обидва місця. Коли target включає `"channel"`, кнопками можуть користуватися лише визначені схвалювачі.
|
||||
- `cleanupAfterResolve`: коли `true`, видаляє DM зі схваленнями після схвалення, відмови або тайм-ауту.
|
||||
|
||||
**Режими сповіщень про реакції:** `off` (немає), `own` (повідомлення бота, стандартно), `all` (усі повідомлення), `allowlist` (з `guilds.<id>.users` для всіх повідомлень).
|
||||
**Режими сповіщень про реакції:** `off` (немає), `own` (повідомлення бота, за замовчуванням), `all` (усі повідомлення), `allowlist` (з `guilds.<id>.users` для всіх повідомлень).
|
||||
|
||||
### Google Chat
|
||||
|
||||
@ -393,11 +394,11 @@ WhatsApp працює через web-канал Gateway (Baileys Web). Він з
|
||||
}
|
||||
```
|
||||
|
||||
- JSON сервісного акаунта: inline (`serviceAccount`) або на основі файлу (`serviceAccountFile`).
|
||||
- SecretRef сервісного акаунта також підтримується (`serviceAccountRef`).
|
||||
- Резервні значення env: `GOOGLE_CHAT_SERVICE_ACCOUNT` або `GOOGLE_CHAT_SERVICE_ACCOUNT_FILE`.
|
||||
- JSON сервісного облікового запису: вбудований (`serviceAccount`) або на основі файлу (`serviceAccountFile`).
|
||||
- SecretRef сервісного облікового запису також підтримується (`serviceAccountRef`).
|
||||
- Резервні змінні середовища: `GOOGLE_CHAT_SERVICE_ACCOUNT` або `GOOGLE_CHAT_SERVICE_ACCOUNT_FILE`.
|
||||
- Використовуйте `spaces/<spaceId>` або `users/<userId>` для цілей доставки.
|
||||
- `channels.googlechat.dangerouslyAllowNameMatching` повторно вмикає змінне зіставлення email principal (режим сумісності break-glass).
|
||||
- `channels.googlechat.dangerouslyAllowNameMatching` повторно вмикає зіставлення за змінюваним email principal (режим сумісності для аварійного обходу).
|
||||
|
||||
### Slack
|
||||
|
||||
@ -469,44 +470,44 @@ WhatsApp працює через web-канал Gateway (Baileys Web). Він з
|
||||
}
|
||||
```
|
||||
|
||||
- **Socket mode** потребує і `botToken`, і `appToken` (`SLACK_BOT_TOKEN` + `SLACK_APP_TOKEN` для резервного env стандартного акаунта).
|
||||
- **HTTP mode** потребує `botToken` плюс `signingSecret` (у корені або для окремого акаунта).
|
||||
- `socketMode` передає налаштування транспорту Slack SDK Socket Mode до публічного API приймача Bolt. Використовуйте це лише під час дослідження timeout ping/pong або поведінки застарілого websocket.
|
||||
- `botToken`, `appToken`, `signingSecret` і `userToken` приймають plaintext
|
||||
рядки або об'єкти SecretRef.
|
||||
- Знімки акаунтів Slack надають поля джерела/статусу для кожних облікових даних, як-от
|
||||
`botTokenSource`, `botTokenStatus`, `appTokenStatus` і, в HTTP mode,
|
||||
`signingSecretStatus`. `configured_unavailable` означає, що акаунт
|
||||
налаштований через SecretRef, але поточний шлях command/runtime не зміг
|
||||
- **Socket mode** потребує і `botToken`, і `appToken` (`SLACK_BOT_TOKEN` + `SLACK_APP_TOKEN` для резервного env облікового запису за замовчуванням).
|
||||
- **HTTP mode** потребує `botToken` плюс `signingSecret` (у корені або для окремого облікового запису).
|
||||
- `socketMode` передає налаштування транспорту Socket Mode SDK Slack до публічного API приймача Bolt. Використовуйте це лише під час розслідування тайм-аутів ping/pong або поведінки застарілого websocket.
|
||||
- `botToken`, `appToken`, `signingSecret` і `userToken` приймають прості текстові
|
||||
рядки або об’єкти SecretRef.
|
||||
- Знімки облікових записів Slack надають поля джерела/статусу для окремих облікових даних, як-от
|
||||
`botTokenSource`, `botTokenStatus`, `appTokenStatus`, а в HTTP mode —
|
||||
`signingSecretStatus`. `configured_unavailable` означає, що обліковий запис
|
||||
налаштовано через SecretRef, але поточний шлях команди/runtime не зміг
|
||||
визначити значення секрету.
|
||||
- `configWrites: false` блокує записи конфігурації, ініційовані Slack.
|
||||
- Необов'язковий `channels.slack.defaultAccount` перевизначає вибір стандартного акаунта, коли він збігається з налаштованим id акаунта.
|
||||
- `channels.slack.streaming.mode` є канонічним ключем режиму потоку Slack. `channels.slack.streaming.nativeTransport` керує нативним потоковим транспортом Slack. Застарілі значення `streamMode`, булеві `streaming` і `nativeStreaming` автоматично мігруються.
|
||||
- Необов’язковий `channels.slack.defaultAccount` перевизначає вибір облікового запису за замовчуванням, коли він збігається з налаштованим ідентифікатором облікового запису.
|
||||
- `channels.slack.streaming.mode` є канонічним ключем режиму потоку Slack. `channels.slack.streaming.nativeTransport` керує нативним потоковим транспортом Slack. Застарілі значення `streamMode`, булеві значення `streaming` і значення `nativeStreaming` автоматично мігруються.
|
||||
- Використовуйте `user:<id>` (DM) або `channel:<id>` для цілей доставки.
|
||||
|
||||
**Режими сповіщень про реакції:** `off`, `own` (стандартно), `all`, `allowlist` (з `reactionAllowlist`).
|
||||
**Режими сповіщень про реакції:** `off`, `own` (за замовчуванням), `all`, `allowlist` (з `reactionAllowlist`).
|
||||
|
||||
**Ізоляція сесій thread:** `thread.historyScope` є окремим для thread (стандартно) або спільним для всього каналу. `thread.inheritParent` копіює transcript батьківського каналу до нових threads.
|
||||
**Ізоляція тредових сесій:** `thread.historyScope` є окремим для кожного треду (за замовчуванням) або спільним для каналу. `thread.inheritParent` копіює транскрипт батьківського каналу в нові треди.
|
||||
|
||||
- Нативний streaming Slack разом зі Slack assistant-style статусом thread "is typing..." потребують цільового thread для відповіді. DM верхнього рівня стандартно лишаються поза thread, тому вони використовують `typingReaction` або звичайну доставку замість preview у стилі thread.
|
||||
- `typingReaction` додає тимчасову реакцію до вхідного повідомлення Slack, поки відповідь виконується, а потім прибирає її після завершення. Використовуйте shortcode emoji Slack, наприклад `"hourglass_flowing_sand"`.
|
||||
- `channels.slack.execApprovals`: нативна для Slack доставка схвалень exec і авторизація схвалювачів. Та сама схема, що й у Discord: `enabled` (`true`/`false`/`"auto"`), `approvers` (ID користувачів Slack), `agentFilter`, `sessionFilter` і `target` (`"dm"`, `"channel"` або `"both"`).
|
||||
- Нативний стримінг Slack разом зі статусом треду в стилі асистента Slack "is typing..." потребують цілі треду для відповіді. DM верхнього рівня за замовчуванням залишаються поза тредом, тому вони використовують `typingReaction` або звичайну доставку замість попереднього перегляду в стилі треду.
|
||||
- `typingReaction` додає тимчасову реакцію до вхідного повідомлення Slack, поки виконується відповідь, а потім прибирає її після завершення. Використовуйте shortcode емодзі Slack, наприклад `"hourglass_flowing_sand"`.
|
||||
- `channels.slack.execApprovals`: доставка схвалень exec у нативному форматі Slack і авторизація схвалювачів. Та сама схема, що й у Discord: `enabled` (`true`/`false`/`"auto"`), `approvers` (ID користувачів Slack), `agentFilter`, `sessionFilter` і `target` (`"dm"`, `"channel"` або `"both"`).
|
||||
|
||||
| Група дій | Стандартно | Примітки |
|
||||
| Група дій | За замовчуванням | Примітки |
|
||||
| ------------ | ------- | ---------------------- |
|
||||
| reactions | увімкнено | Ставити реакції + показувати список реакцій |
|
||||
| reactions | увімкнено | Реагувати + перелічувати реакції |
|
||||
| messages | увімкнено | Читати/надсилати/редагувати/видаляти |
|
||||
| pins | увімкнено | Закріпити/відкріпити/показати список |
|
||||
| pins | увімкнено | Закріпити/відкріпити/перелічити |
|
||||
| memberInfo | увімкнено | Інформація про учасника |
|
||||
| emojiList | увімкнено | Список власних emoji |
|
||||
| emojiList | увімкнено | Список користувацьких емодзі |
|
||||
|
||||
### Mattermost
|
||||
|
||||
Mattermost постачається як bundled Plugin у поточних випусках OpenClaw. Старіші або
|
||||
custom builds можуть встановити поточний npm package за допомогою
|
||||
Mattermost постачається як вбудований Plugin у поточних релізах OpenClaw. Старіші або
|
||||
кастомні збірки можуть установити поточний npm-пакет за допомогою
|
||||
`openclaw plugins install @openclaw/mattermost`; якщо npm повідомляє, що
|
||||
пакет, яким володіє OpenClaw, deprecated, використовуйте bundled Plugin або локальний checkout
|
||||
доки не буде опубліковано новіший npm package.
|
||||
пакет, яким володіє OpenClaw, застарів, використовуйте вбудований Plugin або локальний checkout
|
||||
до публікації новішого npm-пакета.
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -536,18 +537,23 @@ custom builds можуть встановити поточний npm package з
|
||||
}
|
||||
```
|
||||
|
||||
Режими чату: `oncall` (відповідати на @-mention, стандартно), `onmessage` (кожне повідомлення), `onchar` (повідомлення, що починаються з trigger prefix).
|
||||
Режими чату: `oncall` (відповідати на @-згадку, за замовчуванням), `onmessage` (кожне повідомлення), `onchar` (повідомлення, що починаються з префікса-тригера).
|
||||
|
||||
Коли нативні команди Mattermost увімкнено:
|
||||
|
||||
- `commands.callbackPath` має бути шляхом (наприклад, `/api/channels/mattermost/command`), а не повним URL.
|
||||
- `commands.callbackPath` має бути шляхом (наприклад, `/api/channels/mattermost/command`), а не повною URL-адресою.
|
||||
- `commands.callbackUrl` має вказувати на endpoint OpenClaw gateway і бути доступним із сервера Mattermost.
|
||||
- Власні slash callback автентифікуються токенами для кожної команди, які повертає Mattermost під час реєстрації slash command. Якщо реєстрація не вдається або жодні команди не активовано, OpenClaw відхиляє callback із повідомленням `Unauthorized: invalid command token.`
|
||||
- Для приватних/tailnet/внутрішніх callback-хостів Mattermost може вимагати, щоб `ServiceSettings.AllowedUntrustedInternalConnections` містив callback-хост/домен. Використовуйте значення хоста/домену, а не повні URL.
|
||||
- Нативні slash callbacks автентифікуються токенами для кожної команди, які повертає
|
||||
Mattermost під час реєстрації slash command. Якщо реєстрація не вдається або
|
||||
жодні команди не активовано, OpenClaw відхиляє callbacks з
|
||||
`Unauthorized: invalid command token.`
|
||||
- Для приватних/tailnet/внутрішніх callback-хостів Mattermost може вимагати,
|
||||
щоб `ServiceSettings.AllowedUntrustedInternalConnections` містив callback host/domain.
|
||||
Використовуйте значення host/domain, а не повні URL-адреси.
|
||||
- `channels.mattermost.configWrites`: дозволити або заборонити записи конфігурації, ініційовані Mattermost.
|
||||
- `channels.mattermost.requireMention`: вимагати `@mention` перед відповіддю в каналах.
|
||||
- `channels.mattermost.groups.<channelId>.requireMention`: перевизначення mention-gating для окремого каналу (`"*"` для стандартного значення).
|
||||
- Необов’язковий `channels.mattermost.defaultAccount` перевизначає вибір стандартного облікового запису, коли він збігається з id налаштованого облікового запису.
|
||||
- `channels.mattermost.groups.<channelId>.requireMention`: перевизначення mention-gating для окремого каналу (`"*"` для типового значення).
|
||||
- Необов’язковий `channels.mattermost.defaultAccount` перевизначає вибір типового облікового запису, коли він збігається з налаштованим account id.
|
||||
|
||||
### Signal
|
||||
|
||||
@ -568,11 +574,11 @@ custom builds можуть встановити поточний npm package з
|
||||
}
|
||||
```
|
||||
|
||||
**Режими сповіщень про реакції:** `off`, `own` (стандартно), `all`, `allowlist` (з `reactionAllowlist`).
|
||||
**Режими сповіщень про реакції:** `off`, `own` (типово), `all`, `allowlist` (з `reactionAllowlist`).
|
||||
|
||||
- `channels.signal.account`: прив’язати запуск каналу до конкретної ідентичності облікового запису Signal.
|
||||
- `channels.signal.configWrites`: дозволити або заборонити записи конфігурації, ініційовані Signal.
|
||||
- Необов’язковий `channels.signal.defaultAccount` перевизначає вибір стандартного облікового запису, коли він збігається з id налаштованого облікового запису.
|
||||
- Необов’язковий `channels.signal.defaultAccount` перевизначає вибір типового облікового запису, коли він збігається з налаштованим account id.
|
||||
|
||||
### BlueBubbles
|
||||
|
||||
@ -591,9 +597,9 @@ BlueBubbles — рекомендований шлях для iMessage (на ба
|
||||
}
|
||||
```
|
||||
|
||||
- Основні шляхи ключів, описані тут: `channels.bluebubbles`, `channels.bluebubbles.dmPolicy`.
|
||||
- Необов’язковий `channels.bluebubbles.defaultAccount` перевизначає вибір стандартного облікового запису, коли він збігається з id налаштованого облікового запису.
|
||||
- Записи верхнього рівня `bindings[]` з `type: "acp"` можуть прив’язувати розмови BlueBubbles до постійних сеансів ACP. Використовуйте handle BlueBubbles або цільовий рядок (`chat_id:*`, `chat_guid:*`, `chat_identifier:*`) у `match.peer.id`. Семантика спільних полів: [ACP Agents](/uk/tools/acp-agents#channel-specific-settings).
|
||||
- Основні key paths, описані тут: `channels.bluebubbles`, `channels.bluebubbles.dmPolicy`.
|
||||
- Необов’язковий `channels.bluebubbles.defaultAccount` перевизначає вибір типового облікового запису, коли він збігається з налаштованим account id.
|
||||
- Записи верхнього рівня `bindings[]` з `type: "acp"` можуть прив’язувати розмови BlueBubbles до постійних ACP sessions. Використовуйте BlueBubbles handle або target string (`chat_id:*`, `chat_guid:*`, `chat_identifier:*`) у `match.peer.id`. Спільна семантика полів: [ACP Agents](/uk/tools/acp-agents#channel-specific-settings).
|
||||
- Повну конфігурацію каналу BlueBubbles задокументовано в [BlueBubbles](/uk/channels/bluebubbles).
|
||||
|
||||
### iMessage
|
||||
@ -622,17 +628,17 @@ OpenClaw запускає `imsg rpc` (JSON-RPC через stdio). Демон а
|
||||
}
|
||||
```
|
||||
|
||||
- Необов’язковий `channels.imessage.defaultAccount` перевизначає вибір стандартного облікового запису, коли він збігається з id налаштованого облікового запису.
|
||||
- Необов’язковий `channels.imessage.defaultAccount` перевизначає вибір типового облікового запису, коли він збігається з налаштованим account id.
|
||||
|
||||
- Потребує Full Disk Access до БД Messages.
|
||||
- Надавайте перевагу цілям `chat_id:<id>`. Використовуйте `imsg chats --limit 20`, щоб отримати список чатів.
|
||||
- `cliPath` може вказувати на SSH-обгортку; установіть `remoteHost` (`host` або `user@host`) для отримання вкладень через SCP.
|
||||
- `attachmentRoots` і `remoteAttachmentRoots` обмежують вхідні шляхи вкладень (стандартно: `/Users/*/Library/Messages/Attachments`).
|
||||
- SCP використовує сувору перевірку host-key, тому переконайтеся, що ключ relay-хоста вже існує в `~/.ssh/known_hosts`.
|
||||
- Потрібен Full Disk Access до Messages DB.
|
||||
- Надавайте перевагу target `chat_id:<id>`. Використовуйте `imsg chats --limit 20`, щоб перелічити чати.
|
||||
- `cliPath` може вказувати на SSH wrapper; задайте `remoteHost` (`host` або `user@host`) для отримання вкладень через SCP.
|
||||
- `attachmentRoots` і `remoteAttachmentRoots` обмежують шляхи вхідних вкладень (типово: `/Users/*/Library/Messages/Attachments`).
|
||||
- SCP використовує сувору перевірку host key, тому переконайтеся, що ключ relay host уже існує в `~/.ssh/known_hosts`.
|
||||
- `channels.imessage.configWrites`: дозволити або заборонити записи конфігурації, ініційовані iMessage.
|
||||
- Записи верхнього рівня `bindings[]` з `type: "acp"` можуть прив’язувати розмови iMessage до постійних сеансів ACP. Використовуйте нормалізований handle або явну ціль чату (`chat_id:*`, `chat_guid:*`, `chat_identifier:*`) у `match.peer.id`. Семантика спільних полів: [ACP Agents](/uk/tools/acp-agents#channel-specific-settings).
|
||||
- Записи верхнього рівня `bindings[]` з `type: "acp"` можуть прив’язувати розмови iMessage до постійних ACP sessions. Використовуйте нормалізований handle або явний chat target (`chat_id:*`, `chat_guid:*`, `chat_identifier:*`) у `match.peer.id`. Спільна семантика полів: [ACP Agents](/uk/tools/acp-agents#channel-specific-settings).
|
||||
|
||||
<Accordion title="Приклад SSH-обгортки iMessage">
|
||||
<Accordion title="Приклад SSH wrapper для iMessage">
|
||||
|
||||
```bash
|
||||
#!/usr/bin/env bash
|
||||
@ -674,20 +680,20 @@ Matrix працює на базі Plugin і налаштовується в `cha
|
||||
```
|
||||
|
||||
- Автентифікація токеном використовує `accessToken`; автентифікація паролем використовує `userId` + `password`.
|
||||
- `channels.matrix.proxy` спрямовує HTTP-трафік Matrix через явний HTTP(S)-проксі. Іменовані облікові записи можуть перевизначити його за допомогою `channels.matrix.accounts.<id>.proxy`.
|
||||
- `channels.matrix.network.dangerouslyAllowPrivateNetwork` дозволяє приватні/внутрішні homeserver. `proxy` і ця згода на мережу є незалежними засобами керування.
|
||||
- `channels.matrix.defaultAccount` вибирає бажаний обліковий запис у конфігураціях із кількома обліковими записами.
|
||||
- `channels.matrix.autoJoin` стандартно має значення `off`, тому запрошені кімнати та нові запрошення у стилі DM ігноруються, доки ви не встановите `autoJoin: "allowlist"` з `autoJoinAllowlist` або `autoJoin: "always"`.
|
||||
- `channels.matrix.execApprovals`: Matrix-native доставка схвалень exec і авторизація approver.
|
||||
- `enabled`: `true`, `false` або `"auto"` (стандартно). В автоматичному режимі схвалення exec активуються, коли approver можна визначити з `approvers` або `commands.ownerAllowFrom`.
|
||||
- `approvers`: ID користувачів Matrix (наприклад, `@owner:example.org`), яким дозволено схвалювати exec-запити.
|
||||
- `agentFilter`: необов’язковий allowlist ID агентів. Опустіть, щоб пересилати схвалення для всіх агентів.
|
||||
- `sessionFilter`: необов’язкові шаблони ключів сеансів (підрядок або regex).
|
||||
- `target`: куди надсилати запити на схвалення. `"dm"` (стандартно), `"channel"` (початкова кімната) або `"both"`.
|
||||
- `channels.matrix.proxy` маршрутизує HTTP-трафік Matrix через явний HTTP(S)-проксі. Іменовані облікові записи можуть перевизначити його за допомогою `channels.matrix.accounts.<id>.proxy`.
|
||||
- `channels.matrix.network.dangerouslyAllowPrivateNetwork` дозволяє приватні/внутрішні homeservers. `proxy` і ця згода на мережу є незалежними елементами керування.
|
||||
- `channels.matrix.defaultAccount` вибирає бажаний обліковий запис у налаштуваннях із кількома обліковими записами.
|
||||
- `channels.matrix.autoJoin` типово має значення `off`, тому запрошені кімнати та нові запрошення у стилі DM ігноруються, доки ви не задасте `autoJoin: "allowlist"` з `autoJoinAllowlist` або `autoJoin: "always"`.
|
||||
- `channels.matrix.execApprovals`: нативна для Matrix доставка exec approvals і авторизація затверджувачів.
|
||||
- `enabled`: `true`, `false` або `"auto"` (типово). В автоматичному режимі exec approvals активуються, коли затверджувачів можна визначити з `approvers` або `commands.ownerAllowFrom`.
|
||||
- `approvers`: Matrix user IDs (наприклад, `@owner:example.org`), яким дозволено затверджувати exec requests.
|
||||
- `agentFilter`: необов’язковий allowlist agent ID. Опустіть, щоб пересилати approvals для всіх agents.
|
||||
- `sessionFilter`: необов’язкові session key patterns (підрядок або regex).
|
||||
- `target`: куди надсилати approval prompts. `"dm"` (типово), `"channel"` (початкова кімната) або `"both"`.
|
||||
- Перевизначення для окремого облікового запису: `channels.matrix.accounts.<id>.execApprovals`.
|
||||
- `channels.matrix.dm.sessionScope` керує тим, як DM Matrix групуються в сеанси: `per-user` (стандартно) спільно використовує їх за маршрутизованим peer, тоді як `per-room` ізолює кожну DM-кімнату.
|
||||
- Перевірки статусу Matrix і live-пошуки в каталозі використовують ту саму політику проксі, що й runtime-трафік.
|
||||
- Повну конфігурацію Matrix, правила таргетування та приклади налаштування задокументовано в [Matrix](/uk/channels/matrix).
|
||||
- `channels.matrix.dm.sessionScope` керує тим, як Matrix DMs групуються в sessions: `per-user` (типово) спільно використовується за маршрутизованим peer, а `per-room` ізолює кожну DM room.
|
||||
- Matrix status probes і live directory lookups використовують ту саму proxy policy, що й runtime traffic.
|
||||
- Повну конфігурацію Matrix, правила targeting і приклади налаштування задокументовано в [Matrix](/uk/channels/matrix).
|
||||
|
||||
### Microsoft Teams
|
||||
|
||||
@ -706,8 +712,8 @@ Microsoft Teams працює на базі Plugin і налаштовуєтьс
|
||||
}
|
||||
```
|
||||
|
||||
- Основні шляхи ключів, описані тут: `channels.msteams`, `channels.msteams.configWrites`.
|
||||
- Повну конфігурацію Teams (облікові дані, Webhook, політика DM/груп, перевизначення для окремих команд/каналів) задокументовано в [Microsoft Teams](/uk/channels/msteams).
|
||||
- Основні key paths, описані тут: `channels.msteams`, `channels.msteams.configWrites`.
|
||||
- Повну конфігурацію Teams (credentials, Webhook, DM/group policy, перевизначення для окремої team/channel) задокументовано в [Microsoft Teams](/uk/channels/msteams).
|
||||
|
||||
### IRC
|
||||
|
||||
@ -732,8 +738,8 @@ IRC працює на базі Plugin і налаштовується в `channe
|
||||
}
|
||||
```
|
||||
|
||||
- Основні шляхи ключів, описані тут: `channels.irc`, `channels.irc.dmPolicy`, `channels.irc.configWrites`, `channels.irc.nickserv.*`.
|
||||
- Необов’язковий `channels.irc.defaultAccount` перевизначає вибір стандартного облікового запису, коли він збігається з id налаштованого облікового запису.
|
||||
- Основні key paths, описані тут: `channels.irc`, `channels.irc.dmPolicy`, `channels.irc.configWrites`, `channels.irc.nickserv.*`.
|
||||
- Необов’язковий `channels.irc.defaultAccount` перевизначає вибір типового облікового запису, коли він збігається з налаштованим account id.
|
||||
- Повну конфігурацію каналу IRC (host/port/TLS/channels/allowlists/mention gating) задокументовано в [IRC](/uk/channels/irc).
|
||||
|
||||
### Кілька облікових записів (усі канали)
|
||||
@ -759,34 +765,34 @@ IRC працює на базі Plugin і налаштовується в `channe
|
||||
}
|
||||
```
|
||||
|
||||
- `default` використовується, коли `accountId` опущено (CLI + маршрутизація).
|
||||
- Env-токени застосовуються лише до **стандартного** облікового запису.
|
||||
- `default` використовується, коли `accountId` пропущено (CLI + routing).
|
||||
- Env tokens застосовуються лише до **типового** облікового запису.
|
||||
- Базові налаштування каналу застосовуються до всіх облікових записів, якщо їх не перевизначено для окремого облікового запису.
|
||||
- Використовуйте `bindings[].match.accountId`, щоб маршрутизувати кожен обліковий запис до іншого агента.
|
||||
- Якщо ви додаєте нестандартний обліковий запис через `openclaw channels add` (або onboarding каналу), залишаючись на конфігурації каналу верхнього рівня з одним обліковим записом, OpenClaw спочатку переносить account-scoped значення верхнього рівня для одного облікового запису в карту облікових записів каналу, щоб початковий обліковий запис продовжив працювати. Більшість каналів переміщують їх у `channels.<channel>.accounts.default`; Matrix натомість може зберегти наявну відповідну іменовану/стандартну ціль.
|
||||
- Наявні прив’язки лише каналу (без `accountId`) продовжують відповідати стандартному обліковому запису; account-scoped прив’язки залишаються необов’язковими.
|
||||
- `openclaw doctor --fix` також виправляє змішані форми, переміщуючи account-scoped значення верхнього рівня для одного облікового запису в підвищений обліковий запис, вибраний для цього каналу. Більшість каналів використовують `accounts.default`; Matrix натомість може зберегти наявну відповідну іменовану/стандартну ціль.
|
||||
- Використовуйте `bindings[].match.accountId`, щоб маршрутизувати кожен обліковий запис до іншого agent.
|
||||
- Якщо ви додаєте нетиповий обліковий запис через `openclaw channels add` (або onboarding каналу), поки все ще використовуєте однооблікову конфігурацію каналу верхнього рівня, OpenClaw спочатку переносить account-scoped top-level single-account values до channel account map, щоб початковий обліковий запис продовжив працювати. Більшість каналів переміщують їх у `channels.<channel>.accounts.default`; Matrix натомість може зберегти наявний відповідний named/default target.
|
||||
- Наявні channel-only bindings (без `accountId`) і далі відповідають типовому обліковому запису; account-scoped bindings залишаються необов’язковими.
|
||||
- `openclaw doctor --fix` також виправляє змішані форми, переміщуючи account-scoped top-level single-account values до promoted account, вибраного для цього каналу. Більшість каналів використовують `accounts.default`; Matrix натомість може зберегти наявний відповідний named/default target.
|
||||
|
||||
### Інші Plugin-канали
|
||||
### Інші канали Plugin
|
||||
|
||||
Багато Plugin-каналів налаштовуються як `channels.<id>` і задокументовані на своїх окремих сторінках каналів (наприклад, Feishu, Matrix, LINE, Nostr, Zalo, Nextcloud Talk, Synology Chat і Twitch).
|
||||
Багато каналів Plugin налаштовуються як `channels.<id>` і задокументовані на власних сторінках каналів (наприклад Feishu, Matrix, LINE, Nostr, Zalo, Nextcloud Talk, Synology Chat і Twitch).
|
||||
Дивіться повний індекс каналів: [Канали](/uk/channels).
|
||||
|
||||
### Mention gating у групових чатах
|
||||
|
||||
Для групових повідомлень стандартно **вимагається mention** (metadata mention або безпечні regex-шаблони). Застосовується до групових чатів WhatsApp, Telegram, Discord, Google Chat і iMessage.
|
||||
Групові повідомлення типово **вимагають mention** (metadata mention або безпечні regex patterns). Застосовується до групових чатів WhatsApp, Telegram, Discord, Google Chat та iMessage.
|
||||
|
||||
Видимі відповіді керуються окремо. Для групових/канальних кімнат стандартне значення — `messages.groupChat.visibleReplies: "message_tool"`: OpenClaw все одно обробляє turn, але звичайні фінальні відповіді залишаються приватними, а видимий вивід у кімнату потребує `message(action=send)`. Установлюйте `"automatic"` лише тоді, коли потрібна legacy-поведінка, за якої звичайні відповіді публікуються назад у кімнату. Щоб застосувати таку саму поведінку видимих відповідей лише через інструмент і до прямих чатів, установіть `messages.visibleReplies: "message_tool"`; Codex harness також використовує цю поведінку лише через інструмент як своє стандартне значення для прямих чатів, коли параметр не задано.
|
||||
Visible replies керуються окремо. Для group/channel rooms типове значення `messages.groupChat.visibleReplies: "message_tool"`: OpenClaw усе ще обробляє turn, але звичайні final replies залишаються приватними, а видимий output у кімнаті потребує `message(action=send)`. Задайте `"automatic"` лише тоді, коли потрібна legacy behavior, за якої звичайні відповіді публікуються назад у room. Щоб застосувати таку саму поведінку tool-only visible-reply також до direct chats, задайте `messages.visibleReplies: "message_tool"`; Codex harness також використовує цю tool-only behavior як своє незадане типове значення для direct-chat.
|
||||
|
||||
Якщо інструмент повідомлень недоступний за активної політики інструментів, OpenClaw повертається до автоматичних видимих відповідей замість того, щоб мовчки пригнічувати відповідь. `openclaw doctor` попереджає про цю невідповідність.
|
||||
Якщо message tool недоступний за активної tool policy, OpenClaw повертається до automatic visible replies замість того, щоб мовчки пригнічувати відповідь. `openclaw doctor` попереджає про цю невідповідність.
|
||||
|
||||
Gateway гаряче перезавантажує конфігурацію `messages` після збереження файлу. Перезапуск потрібен лише тоді, коли file watching або перезавантаження конфігурації вимкнено в розгортанні.
|
||||
Gateway hot-reloads конфігурацію `messages` після збереження файлу. Перезапускайте лише тоді, коли file watching або config reload вимкнено в розгортанні.
|
||||
|
||||
**Типи mention:**
|
||||
**Типи mentions:**
|
||||
|
||||
- **Metadata mentions**: власні @-mentions платформи. Ігноруються в режимі WhatsApp self-chat.
|
||||
- **Текстові шаблони**: безпечні regex-шаблони в `agents.list[].groupChat.mentionPatterns`. Недійсні шаблони та небезпечні вкладені повторення ігноруються.
|
||||
- Mention gating застосовується лише тоді, коли виявлення можливе (власні mentions або принаймні один шаблон).
|
||||
- **Metadata mentions**: нативні platform @-mentions. Ігноруються в режимі WhatsApp self-chat.
|
||||
- **Text patterns**: безпечні regex patterns у `agents.list[].groupChat.mentionPatterns`. Некоректні patterns і небезпечне nested repetition ігноруються.
|
||||
- Mention gating застосовується лише тоді, коли виявлення можливе (native mentions або принаймні один pattern).
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -803,11 +809,11 @@ Gateway гаряче перезавантажує конфігурацію `mess
|
||||
}
|
||||
```
|
||||
|
||||
`messages.groupChat.historyLimit` задає глобальне значення за замовчуванням. Канали можуть перевизначати його за допомогою `channels.<channel>.historyLimit` (або для окремого облікового запису). Установіть `0`, щоб вимкнути.
|
||||
`messages.groupChat.historyLimit` задає глобальне значення за замовчуванням. Канали можуть перевизначати його через `channels.<channel>.historyLimit` (або для окремого облікового запису). Установіть `0`, щоб вимкнути.
|
||||
|
||||
`messages.visibleReplies` є глобальним значенням за замовчуванням для source-turn; `messages.groupChat.visibleReplies` перевизначає його для source-turn у групах/каналах. Коли `messages.visibleReplies` не задано, harness може надати власне значення за замовчуванням для direct/source; Codex harness за замовчуванням використовує `message_tool`. Списки дозволених каналів і mention gating все ще визначають, чи буде turn оброблено.
|
||||
`messages.visibleReplies` — це глобальне значення за замовчуванням для вихідних ходів; `messages.groupChat.visibleReplies` перевизначає його для вихідних ходів групи/каналу. Коли `messages.visibleReplies` не задано, harness може надати власне значення за замовчуванням для прямих/вихідних чатів; harness Codex за замовчуванням використовує `message_tool`. Списки дозволених каналів і перевірка згадок усе одно визначають, чи буде хід оброблено.
|
||||
|
||||
#### Обмеження історії DM
|
||||
#### Обмеження історії приватних повідомлень
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -822,13 +828,13 @@ Gateway гаряче перезавантажує конфігурацію `mess
|
||||
}
|
||||
```
|
||||
|
||||
Визначення: перевизначення для окремого DM → значення провайдера за замовчуванням → без обмеження (зберігається все).
|
||||
Порядок визначення: перевизначення для окремого приватного чату → значення провайдера за замовчуванням → без обмеження (зберігається все).
|
||||
|
||||
Підтримується: `telegram`, `whatsapp`, `discord`, `slack`, `signal`, `imessage`, `msteams`.
|
||||
|
||||
#### Режим чату із собою
|
||||
|
||||
Додайте власний номер до `allowFrom`, щоб увімкнути режим чату із собою (ігнорує нативні @-mentions, відповідає лише на текстові шаблони):
|
||||
Додайте власний номер до `allowFrom`, щоб увімкнути режим чату із собою (ігнорує нативні @-згадки, відповідає лише на текстові шаблони):
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -876,32 +882,32 @@ Gateway гаряче перезавантажує конфігурацію `mess
|
||||
}
|
||||
```
|
||||
|
||||
<Accordion title="Відомості про команди">
|
||||
<Accordion title="Command details">
|
||||
|
||||
- Цей блок налаштовує поверхні команд. Поточний вбудований і bundled каталог команд див. у [Slash Commands](/uk/tools/slash-commands).
|
||||
- Ця сторінка є **довідником ключів конфігурації**, а не повним каталогом команд. Команди, що належать каналам/Plugin, як-от QQ Bot `/bot-ping` `/bot-help` `/bot-logs`, LINE `/card`, device-pair `/pair`, memory `/dreaming`, phone-control `/phone` і Talk `/voice`, задокументовано на сторінках їхніх каналів/Plugin, а також у [Slash Commands](/uk/tools/slash-commands).
|
||||
- Ця сторінка є **довідником ключів конфігурації**, а не повним каталогом команд. Команди, що належать каналам/Plugin, як-от QQ Bot `/bot-ping` `/bot-help` `/bot-logs`, LINE `/card`, device-pair `/pair`, memory `/dreaming`, phone-control `/phone` і Talk `/voice`, задокументовано на сторінках відповідних каналів/Plugin, а також у [Slash Commands](/uk/tools/slash-commands).
|
||||
- Текстові команди мають бути **окремими** повідомленнями з початковим `/`.
|
||||
- `native: "auto"` вмикає нативні команди для Discord/Telegram, залишає Slack вимкненим.
|
||||
- `nativeSkills: "auto"` вмикає нативні команди Skills для Discord/Telegram, залишає Slack вимкненим.
|
||||
- Перевизначення для окремого каналу: `channels.discord.commands.native` (bool або `"auto"`). `false` очищає раніше зареєстровані команди.
|
||||
- Перевизначте нативну реєстрацію Skills для окремого каналу за допомогою `channels.<provider>.commands.nativeSkills`.
|
||||
- Перевизначайте реєстрацію нативних Skills для окремого каналу через `channels.<provider>.commands.nativeSkills`.
|
||||
- `channels.telegram.customCommands` додає додаткові пункти меню Telegram-бота.
|
||||
- `bash: true` вмикає `! <cmd>` для shell хоста. Потребує `tools.elevated.enabled` і відправника в `tools.elevated.allowFrom.<channel>`.
|
||||
- `config: true` вмикає `/config` (читає/записує `openclaw.json`). Для клієнтів Gateway `chat.send` постійні записи `/config set|unset` також потребують `operator.admin`; доступна лише для читання команда `/config show` залишається доступною для звичайних клієнтів операторів із write scope.
|
||||
- `mcp: true` вмикає `/mcp` для конфігурації керованого OpenClaw MCP-сервера в `mcp.servers`.
|
||||
- `plugins: true` вмикає `/plugins` для виявлення Plugin, установлення та керування ввімкненням/вимкненням.
|
||||
- `bash: true` вмикає `! <cmd>` для оболонки хоста. Потребує `tools.elevated.enabled` і відправника в `tools.elevated.allowFrom.<channel>`.
|
||||
- `config: true` вмикає `/config` (читає/записує `openclaw.json`). Для клієнтів gateway `chat.send` постійні записи `/config set|unset` також потребують `operator.admin`; `/config show` лише для читання залишається доступним для звичайних клієнтів-операторів із правами запису.
|
||||
- `mcp: true` вмикає `/mcp` для конфігурації MCP-сервера, керованого OpenClaw, у `mcp.servers`.
|
||||
- `plugins: true` вмикає `/plugins` для виявлення Plugin, встановлення та елементів керування ввімкненням/вимкненням.
|
||||
- `channels.<provider>.configWrites` обмежує зміни конфігурації для окремого каналу (за замовчуванням: true).
|
||||
- Для каналів із кількома обліковими записами `channels.<provider>.accounts.<id>.configWrites` також обмежує записи, спрямовані на цей обліковий запис (наприклад, `/allowlist --config --account <id>` або `/config set channels.<provider>.accounts.<id>...`).
|
||||
- `restart: false` вимикає `/restart` і дії інструмента перезапуску Gateway. За замовчуванням: `true`.
|
||||
- Для багатооблікових каналів `channels.<provider>.accounts.<id>.configWrites` також обмежує записи, націлені на цей обліковий запис (наприклад, `/allowlist --config --account <id>` або `/config set channels.<provider>.accounts.<id>...`).
|
||||
- `restart: false` вимикає `/restart` і дії інструмента перезапуску gateway. За замовчуванням: `true`.
|
||||
- `ownerAllowFrom` — це явний список дозволених власників для команд/інструментів лише для власника. Він окремий від `allowFrom`.
|
||||
- `ownerDisplay: "hash"` хешує id власників у системному prompt. Установіть `ownerDisplaySecret`, щоб керувати хешуванням.
|
||||
- `allowFrom` задається для кожного провайдера. Коли його встановлено, це **єдине** джерело авторизації (списки дозволених каналів/pairing і `useAccessGroups` ігноруються).
|
||||
- `useAccessGroups: false` дозволяє командам обходити політики access-group, коли `allowFrom` не встановлено.
|
||||
- `ownerDisplay: "hash"` хешує ідентифікатори власників у системному промпті. Установіть `ownerDisplaySecret`, щоб керувати хешуванням.
|
||||
- `allowFrom` задається для кожного провайдера. Якщо його встановлено, це **єдине** джерело авторизації (списки дозволених каналів/сполучення та `useAccessGroups` ігноруються).
|
||||
- `useAccessGroups: false` дозволяє командам обходити політики груп доступу, коли `allowFrom` не встановлено.
|
||||
- Мапа документації команд:
|
||||
- вбудований і bundled каталог: [Slash Commands](/uk/tools/slash-commands)
|
||||
- поверхні команд, специфічні для каналів: [Канали](/uk/channels)
|
||||
- поверхні команд для окремих каналів: [Канали](/uk/channels)
|
||||
- команди QQ Bot: [QQ Bot](/uk/channels/qqbot)
|
||||
- команди pairing: [Pairing](/uk/channels/pairing)
|
||||
- команди сполучення: [Сполучення](/uk/channels/pairing)
|
||||
- команда картки LINE: [LINE](/uk/channels/line)
|
||||
- memory dreaming: [Dreaming](/uk/concepts/dreaming)
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user