diff --git a/docs/uk/channels/slack.md b/docs/uk/channels/slack.md
index 74342938f..6c52bbca3 100644
--- a/docs/uk/channels/slack.md
+++ b/docs/uk/channels/slack.md
@@ -1,38 +1,60 @@
---
read_when:
- - Налаштування Slack або налагодження режиму сокета/HTTP для Slack
+ - Налаштування Slack або налагодження режиму socket/HTTP у Slack
summary: Налаштування Slack і поведінка під час виконання (режим Socket + URL-адреси HTTP-запитів)
title: Slack
x-i18n:
- generated_at: "2026-05-05T01:21:09Z"
+ generated_at: "2026-05-05T01:44:06Z"
model: gpt-5.5
provider: openai
- source_hash: 7334027c606ff6465190433d2159c3f9cfbcf1e8a3a1e826682423f71700a064
+ source_hash: 9a8e1cbfd3d99bfc24d79b56ee762d1ab399402391b241ff40698249b0828008
source_path: channels/slack.md
workflow: 16
---
-Готово до продакшену для DM і каналів через інтеграції Slack app. Режим за замовчуванням — Socket Mode; HTTP Request URLs також підтримуються.
+Готово до продакшену для DM і каналів через інтеграції застосунку Slack. Типовий режим — Socket Mode; HTTP Request URLs також підтримуються.
-
- DM у Slack за замовчуванням використовують режим сполучення.
+
+ Slack DM типово використовують режим спарювання.
Нативна поведінка команд і каталог команд.
-
- Міжканальна діагностика та сценарії відновлення.
+
+ Міжканальна діагностика та інструкції з відновлення.
+## Вибір між Socket Mode і HTTP Request URLs
+
+Обидва транспорти готові до продакшену та мають паритет функцій для обміну повідомленнями, слеш-команд, App Home та інтерактивності. Обирайте за формою розгортання, а не за функціями.
+
+| Аспект | Socket Mode (типово) | HTTP Request URLs |
+| ---------------------------- | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------- |
+| Публічна URL-адреса Gateway | Не потрібна | Потрібна (DNS, TLS, зворотний проксі або тунель) |
+| Вихідна мережа | Вихідний WSS до `wss-primary.slack.com` має бути доступний | Без вихідного WS; лише вхідний HTTPS |
+| Потрібні токени | Bot token (`xoxb-...`) + App-Level Token (`xapp-...`) з `connections:write` | Bot token (`xoxb-...`) + Signing Secret |
+| Ноутбук розробника / за firewall | Працює без додаткових налаштувань | Потрібен публічний тунель (ngrok, Cloudflare Tunnel, Tailscale Funnel) або staging Gateway |
+| Горизонтальне масштабування | Один сеанс Socket Mode на застосунок на хост; для кількох Gateway потрібні окремі застосунки Slack | Stateless POST-обробник; кілька реплік Gateway можуть спільно використовувати один застосунок за балансувальником навантаження |
+| Кілька облікових записів на одному Gateway | Підтримується; кожен обліковий запис відкриває власний WS | Підтримується; кожному обліковому запису потрібен унікальний `webhookPath` (типово `/slack/events`), щоб реєстрації не конфліктували |
+| Транспорт слеш-команд | Доставляються через WS-з’єднання; `slash_commands[].url` ігнорується | Slack надсилає POST до `slash_commands[].url`; поле потрібне для dispatch команди |
+| Підписування запитів | Не використовується (автентифікація — це App-Level Token) | Slack підписує кожен запит; OpenClaw перевіряє через `signingSecret` |
+| Відновлення після розриву з’єднання | Slack SDK автоматично перепідключається; застосовується налаштування pong-timeout транспорту Gateway | Немає постійного з’єднання, яке може розірватися; повторні спроби виконуються для кожного запиту від Slack |
+
+
+ **Обирайте Socket Mode** для хостів з одним Gateway, ноутбуків розробників і on-prem мереж, які можуть виходити до `*.slack.com`, але не можуть приймати вхідний HTTPS.
+
+**Обирайте HTTP Request URLs**, коли запускаєте кілька реплік Gateway за балансувальником навантаження, коли вихідний WSS заблокований, але вхідний HTTPS дозволений, або коли ви вже завершуєте Slack webhooks на зворотному проксі.
+
+
## Швидке налаштування
-
+
-
- Відкрийте [api.slack.com/apps](https://api.slack.com/apps/new) → **Create New App** → **From a manifest** → виберіть свій робочий простір → вставте один із наведених нижче маніфестів → **Next** → **Create**.
+
+ Відкрийте [api.slack.com/apps](https://api.slack.com/apps/new) → **Create New App** → **From a manifest** → виберіть свій workspace → вставте один із маніфестів нижче → **Next** → **Create**.
@@ -166,10 +188,10 @@ x-i18n:
- **Recommended** відповідає повному набору можливостей вбудованого Slack plugin: App Home, слеш-команди, файли, реакції, закріплення, групові DM і читання емодзі/груп користувачів. Виберіть **Minimal**, коли політика робочого простору обмежує scopes — він охоплює DM, історію каналів/груп, згадки та слеш-команди, але вилучає файли, реакції, закріплення, групові DM (`mpim:*`), `emoji:read` і `usergroups:read`. Див. [Контрольний список маніфесту та scopes](#manifest-and-scope-checklist), щоб дізнатися обґрунтування для кожного scope і додаткові параметри, як-от додаткові слеш-команди.
+ **Recommended** відповідає повному набору функцій вбудованого Slack plugin: App Home, слеш-команди, файли, реакції, закріплення, групові DM та читання emoji/usergroup. Обирайте **Minimal**, коли політика workspace обмежує scopes — він покриває DM, історію каналів/груп, згадки та слеш-команди, але прибирає файли, реакції, закріплення, групові DM (`mpim:*`), `emoji:read` і `usergroups:read`. Див. [Чекліст маніфесту та scopes](#manifest-and-scope-checklist) для обґрунтування кожного scope й додаткових опцій, як-от додаткові слеш-команди.
- Після того як Slack створить app:
+ Після того як Slack створить застосунок:
- **Basic Information → App-Level Tokens → Generate Token and Scopes**: додайте `connections:write`, збережіть, скопіюйте значення `xapp-...`.
- **Install App → Install to Workspace**: скопіюйте `xoxb-...` Bot User OAuth Token.
@@ -199,7 +221,7 @@ openclaw config patch --file ./slack.socket.patch.json5 --dry-run
openclaw config patch --file ./slack.socket.patch.json5
```
- Резервний варіант через env (лише обліковий запис за замовчуванням):
+ Резервний варіант через env (лише типовий обліковий запис):
```bash
SLACK_APP_TOKEN=xapp-...
@@ -208,7 +230,7 @@ SLACK_BOT_TOKEN=xoxb-...
-
+
```bash
openclaw gateway
@@ -221,8 +243,8 @@ openclaw gateway
-
- Відкрийте [api.slack.com/apps](https://api.slack.com/apps/new) → **Create New App** → **From a manifest** → виберіть свій робочий простір → вставте один із наведених нижче маніфестів → замініть `https://gateway-host.example.com/slack/events` на публічну URL-адресу вашого Gateway → **Next** → **Create**.
+
+ Відкрийте [api.slack.com/apps](https://api.slack.com/apps/new) → **Create New App** → **From a manifest** → виберіть свій workspace → вставте один із маніфестів нижче → замініть `https://gateway-host.example.com/slack/events` на публічну URL-адресу Gateway → **Next** → **Create**.
@@ -305,7 +327,7 @@ openclaw gateway
}
```
-```json Minimal
+```json Мінімальний
{
"display_information": {
"name": "OpenClaw",
@@ -368,9 +390,13 @@ openclaw gateway
- **Recommended** відповідає повному набору можливостей вбудованого Slack plugin; **Minimal** вилучає файли, реакції, закріплення, групові DM (`mpim:*`), `emoji:read` і `usergroups:read` для робочих просторів із суворими обмеженнями. Див. [Контрольний список маніфесту та scopes](#manifest-and-scope-checklist), щоб дізнатися обґрунтування для кожного scope.
+ **Рекомендований** відповідає повному набору функцій вбудованого Slack plugin; **Мінімальний** вилучає файли, реакції, закріплення, групові DM (`mpim:*`), `emoji:read` і `usergroups:read` для робочих просторів із суворими обмеженнями. Див. [контрольний список маніфеста й scope](#manifest-and-scope-checklist), щоб отримати обґрунтування для кожного scope.
+
+ Усі три поля URL (`slash_commands[].url`, `event_subscriptions.request_url` і `interactivity.request_url` / `message_menu_options_url`) вказують на той самий endpoint OpenClaw. Схема маніфеста Slack вимагає, щоб вони називалися окремо, але OpenClaw маршрутизує за типом payload, тож достатньо одного `webhookPath` (типово `/slack/events`). Slash-команди без `slash_commands[].url` у режимі HTTP непомітно не виконуватимуть жодної дії.
+
+
Після того як Slack створить app:
- **Basic Information → App Credentials**: скопіюйте **Signing Secret** для перевірки запитів.
@@ -405,7 +431,7 @@ openclaw config patch --file ./slack.http.patch.json5
Використовуйте унікальні шляхи Webhook для HTTP із кількома обліковими записами
- Надайте кожному обліковому запису окремий `webhookPath` (за замовчуванням `/slack/events`), щоб реєстрації не конфліктували.
+ Надайте кожному обліковому запису окремий `webhookPath` (типово `/slack/events`), щоб реєстрації не конфліктували.
@@ -424,7 +450,7 @@ openclaw gateway
## Налаштування транспорту Socket Mode
-OpenClaw за замовчуванням встановлює для клієнта Slack SDK тайм-аут pong у 15 секунд для Socket Mode. Перевизначайте параметри транспорту лише тоді, коли потрібне налаштування під конкретний робочий простір або хост:
+OpenClaw типово встановлює для клієнта Slack SDK тайм-аут pong у 15 секунд для Socket Mode. Перевизначайте налаштування транспорту лише тоді, коли потрібне налаштування під конкретний робочий простір або хост:
```json5
{
@@ -441,13 +467,13 @@ OpenClaw за замовчуванням встановлює для клієн
}
```
-Використовуйте це лише для робочих просторів Socket Mode, які журналюють тайм-аути pong/server-ping вебсокета Slack, або працюють на хостах із відомим блокуванням event loop. `clientPingTimeout` — це очікування pong після того, як SDK надсилає client ping; `serverPingTimeout` — це очікування server pings від Slack. Повідомлення й події app залишаються станом застосунку, а не сигналами живучості транспорту.
+Використовуйте це лише для робочих просторів Socket Mode, які журналюють тайм-аути Slack websocket pong/server-ping, або працюють на хостах із відомим голодуванням event loop. `clientPingTimeout` — це очікування pong після того, як SDK надсилає client ping; `serverPingTimeout` — це очікування ping від сервера Slack. Повідомлення й події app залишаються станом застосунку, а не сигналами живучості транспорту.
-## Контрольний список маніфесту та scopes
+## Контрольний список маніфеста й scope
-Базовий маніфест Slack app однаковий для Socket Mode і HTTP Request URLs. Відрізняється лише блок `settings` (і `url` слеш-команди).
+Базовий маніфест Slack app однаковий для Socket Mode і HTTP Request URLs. Відрізняється лише блок `settings` (і `url` slash-команди).
-Базовий маніфест (Socket Mode за замовчуванням):
+Базовий маніфест (типово Socket Mode):
```json
{
@@ -564,19 +590,19 @@ OpenClaw за замовчуванням встановлює для клієн
}
```
-### Додаткові налаштування маніфесту
+### Додаткові налаштування маніфеста
-Відкрийте різні функції, які розширюють наведені вище типові значення.
+Відкрийте різні функції, що розширюють наведені вище типові значення.
-Типовий маніфест вмикає вкладку **Home** для Slack App Home і підписується на `app_home_opened`. Коли учасник робочого простору відкриває вкладку Home, OpenClaw публікує безпечний типовий вигляд Home за допомогою `views.publish`; корисне навантаження розмови або приватна конфігурація не включаються. Вкладка **Messages** залишається ввімкненою для приватних повідомлень Slack.
+Типовий маніфест вмикає вкладку Slack App Home **Home** і підписується на `app_home_opened`. Коли учасник робочого простору відкриває вкладку Home, OpenClaw публікує безпечний типовий Home view за допомогою `views.publish`; payload розмови або приватна конфігурація не включаються. Вкладка **Messages** залишається ввімкненою для Slack DM.
- Замість однієї налаштованої команди можна використовувати кілька [нативних slash-команд](#commands-and-slash-behavior) з урахуванням нюансів:
+ Можна використовувати кілька [нативних slash-команд](#commands-and-slash-behavior) замість однієї налаштованої команди, з певними нюансами:
- Використовуйте `/agentstatus` замість `/status`, оскільки команда `/status` зарезервована.
- - Одночасно можна зробити доступними не більше ніж 25 slash-команд.
+ - Одночасно можна зробити доступними не більше 25 slash-команд.
Замініть наявний розділ `features.slash_commands` підмножиною [доступних команд](/uk/tools/slash-commands#command-list):
@@ -705,7 +731,7 @@ OpenClaw за замовчуванням встановлює для клієн
- Використовуйте той самий список `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
{
@@ -731,13 +757,13 @@ OpenClaw за замовчуванням встановлює для клієн
-
- Додайте область бота `chat:write.customize`, якщо хочете, щоб вихідні повідомлення використовували ідентичність активного агента (власне ім’я користувача та піктограму) замість типової ідентичності застосунку Slack.
+
+ Додайте область бота `chat:write.customize`, якщо хочете, щоб вихідні повідомлення використовували активну ідентичність агента (користувацьке ім'я та піктограму) замість стандартної ідентичності застосунку Slack.
Якщо ви використовуєте піктограму emoji, Slack очікує синтаксис `:emoji_name:`.
-
+
Якщо ви налаштовуєте `channels.slack.userToken`, типовими областями читання є:
- `channels:history`, `groups:history`, `im:history`, `mpim:history`
@@ -754,35 +780,35 @@ OpenClaw за замовчуванням встановлює для клієн
## Модель токенів
- `botToken` + `appToken` потрібні для Socket Mode.
-- Режим HTTP потребує `botToken` + `signingSecret`.
-- `botToken`, `appToken`, `signingSecret` і `userToken` приймають звичайні текстові
- рядки або об’єкти SecretRef.
-- Токени конфігурації перевизначають резервні значення env.
-- Резервні значення env `SLACK_BOT_TOKEN` / `SLACK_APP_TOKEN` застосовуються лише до типового облікового запису.
-- `userToken` (`xoxp-...`) налаштовується лише в конфігурації (без резервного значення env) і типово має поведінку лише для читання (`userTokenReadOnly: true`).
+- HTTP-режим потребує `botToken` + `signingSecret`.
+- `botToken`, `appToken`, `signingSecret` і `userToken` приймають відкриті
+ рядки або об'єкти SecretRef.
+- Токени конфігурації перевизначають резервне значення 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 включено `signingSecretStatus`; у Socket Mode
- потрібна пара — `botTokenStatus` + `appTokenStatus`.
+ або інше неінлайнове джерело секрету, але поточна команда/шлях виконання
+ не змогли визначити фактичне значення.
+- У HTTP-режимі включено `signingSecretStatus`; у Socket Mode
+ обов'язкова пара — це `botTokenStatus` + `appTokenStatus`.
-Для дій/читання каталогу токен користувача може мати перевагу, коли його налаштовано. Для записів перевага залишається за токеном бота; записи з токеном користувача дозволені лише коли `userTokenReadOnly: false` і токен бота недоступний.
+Для дій/читання каталогу user token може мати перевагу, коли його налаштовано. Для записів bot token залишається пріоритетним; записи через user-token дозволені лише коли `userTokenReadOnly: false` і bot token недоступний.
## Дії та шлюзи
-Дії Slack контролюються через `channels.slack.actions.*`.
+Дії Slack керуються `channels.slack.actions.*`.
-Доступні групи дій у поточних інструментах Slack:
+Доступні групи дій у поточному інструментарії Slack:
-| Група | Типово |
+| Група | За замовчуванням |
| ---------- | ------- |
| messages | увімкнено |
| reactions | увімкнено |
@@ -790,26 +816,26 @@ OpenClaw за замовчуванням встановлює для клієн
| memberInfo | увімкнено |
| emojiList | увімкнено |
-Поточні дії повідомлень Slack включають `send`, `upload-file`, `download-file`, `read`, `edit`, `delete`, `pin`, `unpin`, `list-pins`, `member-info` і `emoji-list`. `download-file` приймає ідентифікатори файлів Slack, показані у вхідних плейсхолдерах файлів, і повертає попередні перегляди зображень для зображень або метадані локального файлу для інших типів файлів.
+Поточні дії повідомлень Slack включають `send`, `upload-file`, `download-file`, `read`, `edit`, `delete`, `pin`, `unpin`, `list-pins`, `member-info` і `emoji-list`. `download-file` приймає ID файлів Slack, показані у вхідних заповнювачах файлів, і повертає попередні перегляди зображень для зображень або метадані локального файла для інших типів файлів.
-## Контроль доступу та маршрутизація
+## Керування доступом і маршрутизація
- `channels.slack.dmPolicy` контролює доступ DM. `channels.slack.allowFrom` — канонічний allowlist для DM.
+ `channels.slack.dmPolicy` керує доступом до DM. `channels.slack.allowFrom` — канонічний список дозволів DM.
- - `pairing` (типово)
+ - `pairing` (за замовчуванням)
- `allowlist`
- `open` (потребує, щоб `channels.slack.allowFrom` містив `"*"`)
- `disabled`
Прапорці DM:
- - `dm.enabled` (типово true)
+ - `dm.enabled` (за замовчуванням true)
- `channels.slack.allowFrom`
- `dm.allowFrom` (застаріле)
- - `dm.groupEnabled` (групові DM типово false)
- - `dm.groupChannels` (необов’язковий allowlist MPIM)
+ - `dm.groupEnabled` (групові DM за замовчуванням false)
+ - `dm.groupChannels` (необов'язковий список дозволів MPIM)
Пріоритет для кількох облікових записів:
@@ -823,27 +849,27 @@ OpenClaw за замовчуванням встановлює для клієн
-
- `channels.slack.groupPolicy` контролює обробку каналів:
+
+ `channels.slack.groupPolicy` керує обробкою каналів:
- `open`
- `allowlist`
- `disabled`
- Allowlist каналів розміщується в `channels.slack.channels` і **має використовувати стабільні ідентифікатори каналів Slack** (наприклад `C12345678`) як ключі конфігурації.
+ Список дозволів каналів міститься в `channels.slack.channels` і **має використовувати стабільні ID каналів Slack** (наприклад, `C12345678`) як ключі конфігурації.
- Примітка щодо середовища виконання: якщо `channels.slack` повністю відсутній (налаштування лише через env), середовище виконання повертається до `groupPolicy="allowlist"` і записує попередження в журнал (навіть якщо `channels.defaults.groupPolicy` задано).
+ Примітка щодо виконання: якщо `channels.slack` повністю відсутній (налаштування лише через env), середовище виконання повертається до `groupPolicy="allowlist"` і записує попередження в журнал (навіть якщо `channels.defaults.groupPolicy` задано).
- Розпізнавання назви/ідентифікатора:
+ Розпізнавання імені/ID:
- - записи списку дозволених каналів і записи списку дозволених DM розпізнаються під час запуску, коли доступ до токена це дозволяє
- - нерозпізнані записи з назвами каналів зберігаються як налаштовано, але типово ігноруються для маршрутизації
- - вхідна авторизація та маршрутизація каналів типово спершу використовують ID; пряме зіставлення за іменем користувача/slug потребує `channels.slack.dangerouslyAllowNameMatching: true`
+ - записи списку дозволів каналів і записи списку дозволів DM розпізнаються під час запуску, коли доступ токена це дозволяє
+ - нерозпізнані записи з іменами каналів зберігаються як налаштовані, але за замовчуванням ігноруються для маршрутизації
+ - вхідна авторизація та маршрутизація каналів за замовчуванням спершу використовують ID; пряме зіставлення імені користувача/slug потребує `channels.slack.dangerouslyAllowNameMatching: true`
- Ключі на основі назв (`#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.
+ Завжди використовуйте ID каналу Slack як ключ. Щоб знайти його: клацніть канал у Slack правою кнопкою миші → **Copy link** — ID (`C...`) з'являється наприкінці URL.
Правильно:
@@ -860,7 +886,7 @@ OpenClaw за замовчуванням встановлює для клієн
}
```
- Неправильно (мовчки блокується за `groupPolicy: "allowlist"`):
+ Неправильно (тихо блокується за `groupPolicy: "allowlist"`):
```json5
{
@@ -879,85 +905,85 @@ OpenClaw за замовчуванням встановлює для клієн
- Повідомлення в каналах типово пропускаються лише за наявності згадки.
+ Повідомлення каналів за замовчуванням обмежені згадками.
Джерела згадок:
- явна згадка застосунку (`<@botId>`)
- згадка групи користувачів Slack (``), коли користувач бота є учасником цієї групи користувачів; потребує `usergroups:read`
- - regex-шаблони згадок (`agents.list[].groupChat.mentionPatterns`, резервний варіант `messages.groupChat.mentionPatterns`)
- - неявна поведінка гілки з відповіддю боту (вимкнено, коли `thread.requireExplicitMention` має значення `true`)
+ - шаблони регулярних виразів для згадок (`agents.list[].groupChat.mentionPatterns`, резервно `messages.groupChat.mentionPatterns`)
+ - неявна поведінка відповіді на потік із ботом (вимкнено, коли `thread.requireExplicitMention` має значення `true`)
- Поканальні елементи керування (`channels.slack.channels.`; назви лише через розпізнавання під час запуску або `dangerouslyAllowNameMatching`):
+ Поканальні елементи керування (`channels.slack.channels.`; імена лише через розв'язання під час запуску або `dangerouslyAllowNameMatching`):
- `requireMention`
- - `users` (список дозволених)
+ - `users` (allowlist)
- `allowBots`
- `skills`
- `systemPrompt`
- `tools`, `toolsBySender`
- - формат ключа `toolsBySender`: `id:`, `e164:`, `username:`, `name:` або wildcard `"*"`
- (застарілі ключі без префікса досі зіставляються лише з `id:`)
+ - формат ключа `toolsBySender`: `id:`, `e164:`, `username:`, `name:` або символ узагальнення `"*"`
+ (застарілі ключі без префікса й надалі зіставляються лише з `id:`)
- `allowBots` є консервативним для каналів і приватних каналів: повідомлення кімнати, написані ботом, приймаються лише тоді, коли бот-відправник явно вказаний у списку дозволених `users` цієї кімнати, або коли принаймні один явний ID власника Slack із `channels.slack.allowFrom` наразі є учасником кімнати. Wildcard і записи власників за відображуваним іменем не задовольняють умову присутності власника. Присутність власника використовує Slack `conversations.members`; переконайтеся, що застосунок має відповідний read-scope для типу кімнати (`channels:read` для публічних каналів, `groups:read` для приватних каналів). Якщо пошук учасників не вдається, OpenClaw відкидає повідомлення кімнати, написане ботом.
+ `allowBots` є консервативним для каналів і приватних каналів: повідомлення кімнати, створені ботом, приймаються лише тоді, коли бот-відправник явно вказаний в allowlist `users` цієї кімнати, або коли принаймні один явний ID власника Slack із `channels.slack.allowFrom` зараз є учасником кімнати. Символи узагальнення та записи власників за відображуваним іменем не задовольняють наявність власника. Наявність власника використовує `conversations.members` Slack; переконайтеся, що застосунок має відповідну область читання для типу кімнати (`channels:read` для публічних каналів, `groups:read` для приватних каналів). Якщо пошук учасників завершується невдало, OpenClaw відкидає повідомлення кімнати, створене ботом.
-## Гілки, сеанси та теги відповіді
+## Потоки, сеанси та теги відповідей
- DM маршрутизуються як `direct`; канали як `channel`; MPIM як `group`.
-- Привʼязки маршрутів Slack приймають необроблені ID учасників, а також цільові форми Slack, як-от `channel:C12345678`, `user:U12345678` і `<@U12345678>`.
-- За типового `session.dmScope=main` DM Slack згортаються в головний сеанс агента.
+- Прив'язки маршрутів Slack приймають сирі ID співрозмовників, а також форми цілей Slack, як-от `channel:C12345678`, `user:U12345678` і `<@U12345678>`.
+- З типовим `session.dmScope=main` DM Slack згортаються до головного сеансу агента.
- Сеанси каналів: `agent::slack:channel:`.
-- Відповіді в гілках можуть створювати суфікси сеансів гілок (`:thread:`), коли це застосовно.
+- Відповіді в потоках можуть створювати суфікси сеансів потоків (`:thread:`), коли це застосовно.
- Типове значення `channels.slack.thread.historyScope` — `thread`; типове значення `thread.inheritParent` — `false`.
-- `channels.slack.thread.initialHistoryLimit` керує тим, скільки наявних повідомлень гілки завантажується під час запуску нового сеансу гілки (типово `20`; задайте `0`, щоб вимкнути).
-- `channels.slack.thread.requireExplicitMention` (типово `false`): коли `true`, пригнічує неявні згадки в гілці, щоб бот відповідав лише на явні згадки `@bot` у гілках, навіть якщо бот уже брав участь у гілці. Без цього відповіді в гілці за участі бота обходять фільтр `requireMention`.
+- `channels.slack.thread.initialHistoryLimit` керує кількістю наявних повідомлень потоку, які отримуються під час запуску нового сеансу потоку (типово `20`; установіть `0`, щоб вимкнути).
+- `channels.slack.thread.requireExplicitMention` (типово `false`): коли `true`, пригнічує неявні згадки в потоках, щоб бот відповідав лише на явні згадки `@bot` усередині потоків, навіть якщо бот уже брав участь у потоці. Без цього відповіді в потоці, де брав участь бот, обходять обмеження `requireMention`.
-Елементи керування гілками відповідей:
+Елементи керування потоками відповідей:
- `channels.slack.replyToMode`: `off|first|all|batched` (типово `off`)
-- `channels.slack.replyToModeByChatType`: для кожного `direct|group|channel`
+- `channels.slack.replyToModeByChatType`: окремо для `direct|group|channel`
- застарілий резервний варіант для прямих чатів: `channels.slack.dm.replyToMode`
-Підтримуються ручні теги відповіді:
+Підтримуються ручні теги відповідей:
- `[[reply_to_current]]`
- `[[reply_to:]]`
-`replyToMode="off"` вимикає **всі** гілки відповідей у Slack, включно з явними тегами `[[reply_to_*]]`. Це відрізняється від Telegram, де явні теги досі враховуються в режимі `"off"`. Гілки Slack приховують повідомлення з каналу, тоді як відповіді Telegram залишаються видимими в рядку.
+`replyToMode="off"` вимикає **всі** потоки відповідей у Slack, включно з явними тегами `[[reply_to_*]]`. Це відрізняється від Telegram, де явні теги й надалі враховуються в режимі `"off"`. Потоки Slack приховують повідомлення з каналу, тоді як відповіді Telegram залишаються видимими в рядку.
## Реакції підтвердження
-`ackReaction` надсилає emoji підтвердження, поки OpenClaw обробляє вхідне повідомлення.
+`ackReaction` надсилає емодзі підтвердження, поки OpenClaw обробляє вхідне повідомлення.
-Порядок розпізнавання:
+Порядок розв'язання:
- `channels.slack.accounts..ackReaction`
- `channels.slack.ackReaction`
- `messages.ackReaction`
-- резервний emoji ідентичності агента (`agents.list[].identity.emoji`, інакше "👀")
+- резервний емодзі ідентичності агента (`agents.list[].identity.emoji`, інакше "👀")
Примітки:
-- Slack очікує shortcodes (наприклад, `"eyes"`).
+- Slack очікує короткі коди (наприклад, `"eyes"`).
- Використовуйте `""`, щоб вимкнути реакцію для облікового запису Slack або глобально.
-## Потокове передавання тексту
+## Текстове потокове передавання
`channels.slack.streaming` керує поведінкою живого попереднього перегляду:
- `off`: вимкнути потокове передавання живого попереднього перегляду.
- `partial` (типово): замінювати текст попереднього перегляду найновішим частковим виводом.
- `block`: додавати фрагментовані оновлення попереднього перегляду.
-- `progress`: показувати текст стану прогресу під час генерації, потім надсилати фінальний текст.
-- `streaming.preview.toolProgress`: коли активний чернетковий попередній перегляд, спрямовувати оновлення інструментів/прогресу в те саме редаговане повідомлення попереднього перегляду (типово: `true`). Задайте `false`, щоб зберігати окремі повідомлення інструментів/прогресу.
-- `streaming.preview.commandText` / `streaming.progress.commandText`: задайте `status`, щоб зберігати компактні рядки прогресу інструментів, приховуючи необроблений текст команд/exec (типово: `raw`).
+- `progress`: показувати текст стану поступу під час генерації, а потім надсилати фінальний текст.
+- `streaming.preview.toolProgress`: коли чернетковий попередній перегляд активний, спрямовувати оновлення інструментів/поступу в те саме редаговане повідомлення попереднього перегляду (типово: `true`). Установіть `false`, щоб зберігати окремі повідомлення інструментів/поступу.
+- `streaming.preview.commandText` / `streaming.progress.commandText`: установіть `status`, щоб зберігати компактні рядки поступу інструментів, приховуючи сирий текст команд/виконання (типово: `raw`).
-Приховати необроблений текст команд/exec, зберігаючи компактні рядки прогресу:
+Приховати сирий текст команд/виконання, зберігаючи компактні рядки поступу:
```json
{
@@ -975,16 +1001,16 @@ OpenClaw за замовчуванням встановлює для клієн
}
```
-`channels.slack.streaming.nativeTransport` керує нативним потоковим передаванням тексту Slack, коли `channels.slack.streaming.mode` має значення `partial` (типово: `true`).
+`channels.slack.streaming.nativeTransport` керує нативним текстовим потоковим передаванням Slack, коли `channels.slack.streaming.mode` має значення `partial` (типово: `true`).
-- Для появи нативного потокового передавання тексту та стану гілки помічника Slack має бути доступна гілка відповіді. Вибір гілки досі відповідає `replyToMode`.
-- Канали, групові чати та кореневі повідомлення DM верхнього рівня досі можуть використовувати звичайний чернетковий попередній перегляд, коли нативне потокове передавання недоступне або гілки відповіді немає.
-- DM Slack верхнього рівня типово залишаються поза гілками, тому вони не показують нативний потоковий/статусний попередній перегляд Slack у стилі гілки; натомість OpenClaw публікує й редагує чернетковий попередній перегляд у DM.
-- Медіа та нетекстові payloads повертаються до звичайної доставки.
-- Фінальні медіа/помилки скасовують очікувані редагування попереднього перегляду; придатні фінальні текстові/блокові повідомлення скидаються лише тоді, коли вони можуть редагувати попередній перегляд на місці.
-- Якщо потокове передавання зазнає збою посеред відповіді, OpenClaw повертається до звичайної доставки для решти payloads.
+- Для появи нативного текстового потокового передавання та стану потоку асистента Slack має бути доступний потік відповіді. Вибір потоку й надалі дотримується `replyToMode`.
+- Канали, групові чати та кореневі повідомлення DM верхнього рівня й надалі можуть використовувати звичайний чернетковий попередній перегляд, коли нативне потокове передавання недоступне або немає потоку відповіді.
+- DM Slack верхнього рівня за замовчуванням залишаються поза потоками, тому вони не показують нативний попередній перегляд потоку/стану Slack у стилі потоку; натомість OpenClaw публікує та редагує чернетковий попередній перегляд у DM.
+- Медіа та нетекстові корисні навантаження повертаються до звичайної доставки.
+- Фінальні медіа/помилки скасовують очікувані редагування попереднього перегляду; придатні текстові/блокові фінальні повідомлення скидаються лише тоді, коли вони можуть редагувати попередній перегляд на місці.
+- Якщо потокове передавання завершується невдало посеред відповіді, OpenClaw повертається до звичайної доставки для решти корисних навантажень.
-Використати чернетковий попередній перегляд замість нативного потокового передавання тексту Slack:
+Використовуйте чернетковий попередній перегляд замість нативного текстового потокового передавання Slack:
```json5
{
@@ -1001,41 +1027,41 @@ 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`.
-## Резервна реакція введення
+## Резервна реакція набору тексту
-`typingReaction` додає тимчасову реакцію до вхідного повідомлення Slack, поки OpenClaw обробляє відповідь, а потім видаляє її, коли виконання завершується. Це найкорисніше поза відповідями в гілках, які використовують типовий індикатор стану "is typing...".
+`typingReaction` додає тимчасову реакцію до вхідного повідомлення Slack, поки OpenClaw обробляє відповідь, а потім видаляє її після завершення запуску. Це найкорисніше поза відповідями в гілках, які використовують типовий індикатор стану "is typing...".
-Порядок розпізнавання:
+Порядок розв’язання:
- `channels.slack.accounts..typingReaction`
- `channels.slack.typingReaction`
Примітки:
-- Slack очікує shortcodes (наприклад, `"hourglass_flowing_sand"`).
-- Реакція виконується за принципом best-effort, а очищення автоматично виконується після завершення відповіді або шляху помилки.
+- Slack очікує короткі коди (наприклад `"hourglass_flowing_sand"`).
+- Реакція виконується за принципом best-effort, а очищення автоматично пробується після завершення відповіді або шляху помилки.
## Медіа, фрагментація та доставка
- Файлові вкладення Slack завантажуються з приватних URL, розміщених Slack (потік запиту з автентифікацією токеном), і записуються до сховища медіа, коли отримання успішне й обмеження розміру це дозволяють. Заповнювачі файлів включають Slack `fileId`, щоб агенти могли отримати оригінальний файл через `download-file`.
+ Файлові вкладення Slack завантажуються з приватних URL, розміщених у Slack (потік запиту з автентифікацією токеном), і записуються до сховища медіа, коли отримання успішне та обмеження розміру це дозволяють. Заповнювачі файлів містять Slack `fileId`, щоб агенти могли отримати оригінальний файл через `download-file`.
- Завантаження використовують обмежені тайм-аути простою та загального часу. Якщо отримання файлу Slack зависає або завершується з помилкою, OpenClaw продовжує обробляти повідомлення й повертається до заповнювача файлу.
+ Завантаження використовують обмежені тайм-аути простою та загального часу. Якщо отримання файлу Slack зависає або завершується помилкою, OpenClaw продовжує обробляти повідомлення й повертається до заповнювача файлу.
- Типове runtime-обмеження розміру вхідних даних — `20MB`, якщо його не перевизначено через `channels.slack.mediaMaxMb`.
+ Стандартне обмеження розміру вхідних даних під час виконання становить `20MB`, якщо його не перевизначено через `channels.slack.mediaMaxMb`.
- текстові фрагменти використовують `channels.slack.textChunkLimit` (типово 4000)
- - `channels.slack.chunkMode="newline"` вмикає розбиття зі пріоритетом абзаців
- - надсилання файлів використовують API завантаження Slack і можуть включати відповіді в гілках (`thread_ts`)
- - обмеження вихідних медіа відповідає `channels.slack.mediaMaxMb`, коли налаштовано; інакше надсилання в канал використовує типові значення за MIME-типом із media pipeline
+ - `channels.slack.chunkMode="newline"` вмикає поділ із пріоритетом абзаців
+ - надсилання файлів використовує API завантаження Slack і може включати відповіді в гілках (`thread_ts`)
+ - обмеження вихідних медіа бере `channels.slack.mediaMaxMb`, коли його налаштовано; інакше надсилання в канали використовує типові значення MIME-виду з конвеєра медіа
@@ -1045,14 +1071,14 @@ OpenClaw за замовчуванням встановлює для клієн
- `user:` для DM
- `channel:` для каналів
- DM Slack лише з текстом/блоками можуть публікуватися безпосередньо в ID користувачів; завантаження файлів і надсилання в гілках спершу відкривають DM через API розмов Slack, оскільки ці шляхи потребують конкретного ID розмови.
+ Текстові або лише блокові DM Slack можуть публікуватися безпосередньо за ID користувачів; завантаження файлів і надсилання в гілках спочатку відкривають DM через API розмов Slack, бо ці шляхи потребують конкретного ID розмови.
## Команди та поведінка slash
-Slash-команди зʼявляються в Slack або як одна налаштована команда, або як кілька нативних команд. Налаштуйте `channels.slack.slashCommand`, щоб змінити типові значення команд:
+Slash-команди з’являються у Slack як одна налаштована команда або кілька нативних команд. Налаштуйте `channels.slack.slashCommand`, щоб змінити стандартні параметри команди:
- `enabled: false`
- `name: "openclaw"`
@@ -1063,32 +1089,32 @@ 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.
+- Автоматичний режим нативних команд для Slack **вимкнено**, тому `commands.native: "auto"` не вмикає нативні команди Slack.
```txt
/help
```
-Меню аргументів нативних команд використовують адаптивну стратегію рендерингу, яка показує модальне підтвердження перед dispatch вибраного значення опції:
+Меню нативних аргументів використовують адаптивну стратегію відображення, яка показує модальне вікно підтвердження перед dispatch вибраного значення опції:
- до 5 опцій: блоки кнопок
- 6-100 опцій: статичне меню вибору
-- понад 100 опцій: зовнішній select з асинхронною фільтрацією опцій, коли доступні обробники interactivity options
-- перевищені ліміти Slack: закодовані значення опцій повертаються до кнопок
+- понад 100 опцій: зовнішній вибір з асинхронною фільтрацією опцій, коли доступні обробники параметрів інтерактивності
+- перевищено обмеження Slack: закодовані значення опцій повертаються до кнопок
```txt
/think
```
-Slash-сеанси використовують ізольовані ключі на кшталт `agent::slack:slash:` і досі маршрутизують виконання команд до цільового сеансу розмови за допомогою `CommandTargetSessionKey`.
+Slash-сесії використовують ізольовані ключі на кшталт `agent::slack:slash:` і все одно спрямовують виконання команд до цільової сесії розмови за допомогою `CommandTargetSessionKey`.
## Інтерактивні відповіді
-Slack може рендерити інтерактивні елементи керування відповідями, створені агентом, але цю функцію типово вимкнено.
+Slack може відображати інтерактивні елементи керування відповідями, створені агентом, але ця функція типово вимкнена.
-Увімкнути її глобально:
+Увімкніть її глобально:
```json5
{
@@ -1102,7 +1128,7 @@ Slack може рендерити інтерактивні елементи ке
}
```
-Або увімкнути її лише для одного облікового запису Slack:
+Або ввімкніть її лише для одного облікового запису Slack:
```json5
{
@@ -1120,31 +1146,31 @@ Slack може рендерити інтерактивні елементи ке
}
```
-Коли ввімкнено, агенти можуть видавати директиви відповідей лише для Slack:
+Коли ввімкнено, агенти можуть виводити директиви відповідей лише для 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 Block Kit, OpenClaw повертається до початкової текстової відповіді замість надсилання недійсного payload блоків.
+- Це UI, специфічний для Slack. Інші канали не перекладають директиви Slack Block Kit у власні системи кнопок.
+- Значення інтерактивних callback — це непрозорі токени, згенеровані OpenClaw, а не сирі значення, створені агентом.
+- Якщо згенеровані інтерактивні блоки перевищили б обмеження Slack Block Kit, OpenClaw повертається до початкової текстової відповіді замість надсилання недійсного корисного навантаження блоків.
-## Схвалення exec у Slack
+## Exec-затвердження у Slack
-Slack може працювати як нативний клієнт схвалень з інтерактивними кнопками та взаємодіями замість повернення до вебінтерфейсу або термінала.
+Slack може діяти як нативний клієнт затвердження з інтерактивними кнопками та взаємодіями, замість повернення до Web UI або термінала.
-- Схвалення exec використовують `channels.slack.execApprovals.*` для нативної маршрутизації DM/каналу.
-- Схвалення Plugin все ще можуть оброблятися через ту саму нативну для Slack поверхню кнопок, коли запит уже потрапляє в Slack і тип id схвалення — `plugin:`.
-- Авторизація схвалювачів усе ще застосовується: лише користувачі, визначені як схвалювачі, можуть схвалювати або відхиляти запити через Slack.
+- Exec-затвердження використовують `channels.slack.execApprovals.*` для нативної маршрутизації DM/каналу.
+- Plugin-затвердження все ще можуть розв’язуватися через ту саму нативну для Slack поверхню кнопок, коли запит уже потрапляє у Slack і вид ID затвердження — `plugin:`.
+- Авторизація затверджувачів усе ще застосовується: лише користувачі, визначені як затверджувачі, можуть затверджувати або відхиляти запити через Slack.
-Це використовує ту саму спільну поверхню кнопок схвалення, що й інші канали. Коли `interactivity` увімкнено в налаштуваннях вашого застосунку Slack, запити на схвалення відображаються як кнопки Block Kit безпосередньо в розмові.
-Коли ці кнопки присутні, вони є основним UX для схвалення; OpenClaw
-має включати ручну команду `/approve` лише тоді, коли результат інструмента повідомляє, що схвалення
-в чаті недоступні або ручне схвалення є єдиним шляхом.
+Це використовує ту саму спільну поверхню кнопок затвердження, що й інші канали. Коли `interactivity` увімкнено в налаштуваннях вашої програми Slack, запити на затвердження відображаються як кнопки Block Kit безпосередньо в розмові.
+Коли ці кнопки наявні, вони є основним UX затвердження; OpenClaw
+має включати ручну команду `/approve` лише тоді, коли результат інструмента каже, що chat
+затвердження недоступні або ручне затвердження є єдиним шляхом.
Шлях конфігурації:
@@ -1153,11 +1179,11 @@ Slack може працювати як нативний клієнт схвал
- `channels.slack.execApprovals.target` (`dm` | `channel` | `both`, типово: `dm`)
- `agentFilter`, `sessionFilter`
-Slack автоматично вмикає нативні схвалення exec, коли `enabled` не задано або має значення `"auto"` і визначено принаймні одного
-схвалювача. Установіть `enabled: false`, щоб явно вимкнути Slack як нативний клієнт схвалень.
-Установіть `enabled: true`, щоб примусово ввімкнути нативні схвалення, коли визначено схвалювачів.
+Slack автоматично вмикає нативні exec-затвердження, коли `enabled` не задано або має значення `"auto"` і принаймні один
+затверджувач розв’язується. Установіть `enabled: false`, щоб явно вимкнути Slack як нативний клієнт затвердження.
+Установіть `enabled: true`, щоб примусово ввімкнути нативні затвердження, коли затверджувачі розв’язуються.
-Типова поведінка без явної конфігурації схвалень exec у Slack:
+Типова поведінка без явної конфігурації exec-затверджень Slack:
```json5
{
@@ -1167,8 +1193,8 @@ Slack автоматично вмикає нативні схвалення exec
}
```
-Явна нативна конфігурація Slack потрібна лише тоді, коли ви хочете перевизначити схвалювачів, додати фільтри або
-увімкнути доставку в чат походження:
+Явна нативна конфігурація Slack потрібна лише тоді, коли потрібно перевизначити затверджувачів, додати фільтри або
+вибрати доставку в початковий чат:
```json5
{
@@ -1184,52 +1210,52 @@ Slack автоматично вмикає нативні схвалення exec
}
```
-Спільне переспрямування `approvals.exec` є окремим. Використовуйте його лише тоді, коли запити на схвалення exec також мають
+Спільне переспрямування `approvals.exec` є окремим. Використовуйте його лише тоді, коли запити exec-затвердження також мають
маршрутизуватися до інших чатів або явних позасмугових цілей. Спільне переспрямування `approvals.plugin` також
-окреме; нативні кнопки Slack усе ще можуть обробляти схвалення Plugin, коли ці запити вже потрапляють
+окреме; нативні кнопки Slack усе ще можуть розв’язувати Plugin-затвердження, коли ці запити вже потрапляють
у Slack.
-Same-chat `/approve` також працює в каналах Slack і DM, які вже підтримують команди. Див. [Схвалення exec](/uk/tools/exec-approvals), щоб переглянути повну модель переспрямування схвалень.
+`/approve` у тому самому чаті також працює в каналах Slack і DM, які вже підтримують команди. Див. [Exec-затвердження](/uk/tools/exec-approvals), щоб ознайомитися з повною моделлю переспрямування затверджень.
## Події та операційна поведінка
-- Редагування/видалення повідомлень відображаються в системні події.
-- Трансляції тредів (відповіді треду з «Also send to channel») обробляються як звичайні повідомлення користувача.
-- Події додавання/видалення реакцій відображаються в системні події.
-- Події приєднання/виходу учасника, створення/перейменування каналу та додавання/видалення закріплення відображаються в системні події.
-- `channel_id_changed` може мігрувати ключі конфігурації каналів, коли ввімкнено `configWrites`.
-- Метадані теми/призначення каналу вважаються ненадійним контекстом і можуть бути вставлені в контекст маршрутизації.
-- Початкове повідомлення треду та засівання початкового контексту історії треду фільтруються налаштованими allowlist відправників, коли це застосовно.
-- Дії блоків і взаємодії з модальними вікнами створюють структуровані системні події `Slack interaction: ...` з насиченими полями payload:
- - дії блоків: вибрані значення, мітки, значення picker та метадані `workflow_*`
- - події modal `view_submission` і `view_closed` з метаданими маршрутизованого каналу та введеннями форми
+- Редагування/видалення повідомлень зіставляються із системними подіями.
+- Трансляції гілок (відповіді в гілках "Also send to channel") обробляються як звичайні повідомлення користувачів.
+- Події додавання/видалення реакцій зіставляються із системними подіями.
+- Події входу/виходу учасників, створення/перейменування каналу та додавання/видалення закріплень зіставляються із системними подіями.
+- `channel_id_changed` може мігрувати ключі конфігурації каналів, коли `configWrites` увімкнено.
+- Метадані теми/призначення каналу вважаються ненадійним контекстом і можуть бути введені в контекст маршрутизації.
+- Початкове повідомлення гілки та засівання контексту початкової історії гілки фільтруються налаштованими allowlist відправників, коли це застосовно.
+- Дії блоків і модальні взаємодії створюють структуровані системні події `Slack interaction: ...` з багатими полями корисного навантаження:
+ - дії блоків: вибрані значення, мітки, значення picker і метадані `workflow_*`
+ - події модальних `view_submission` і `view_closed` із маршрутизованими метаданими каналу та введеннями форми
## Довідник конфігурації
Основний довідник: [Довідник конфігурації - Slack](/uk/gateway/config-channels#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`
-- треди/історія: `replyToMode`, `replyToModeByChatType`, `thread.*`, `historyLimit`, `dmHistoryLimit`, `dms.*.historyLimit`
+- гілки/історія: `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`
## Усунення несправностей
-
- Перевірте в такому порядку:
+
+ Перевірте по черзі:
- `groupPolicy`
- - allowlist каналів (`channels.slack.channels`) — **ключі мають бути ID каналів** (`C12345678`), а не назвами (`#channel-name`). Ключі на основі назв тихо не спрацьовують за `groupPolicy: "allowlist"`, тому що маршрутизація каналів типово спершу використовує ID. Щоб знайти ID: клацніть канал у Slack правою кнопкою → **Copy link** — значення `C...` наприкінці URL є ID каналу.
+ - allowlist каналів (`channels.slack.channels`) — **ключами мають бути ID каналів** (`C12345678`), а не назви (`#channel-name`). Ключі на основі назв непомітно не спрацьовують із `groupPolicy: "allowlist"`, бо маршрутизація каналів типово спочатку використовує ID. Щоб знайти ID: клацніть канал у Slack правою кнопкою → **Copy link** — значення `C...` наприкінці URL є ID каналу.
- `requireMention`
- - поканальний allowlist `users`
+ - per-channel allowlist `users`
Корисні команди:
@@ -1241,14 +1267,14 @@ openclaw doctor
-
+
Перевірте:
- `channels.slack.dm.enabled`
- `channels.slack.dmPolicy` (або застаріле `channels.slack.dm.policy`)
- - схвалення pairing / записи allowlist
- - події DM Slack Assistant: докладні журнали зі згадкою `drop message_changed`
- зазвичай означають, що Slack надіслав відредаговану подію треду Assistant без
+ - затвердження pairing / записи allowlist
+ - Події DM Slack Assistant: докладні журнали зі згадкою `drop message_changed`
+ зазвичай означають, що Slack надіслав подію редагованої гілки Assistant без
відновлюваного людського відправника в метаданих повідомлення
```bash
@@ -1257,34 +1283,34 @@ openclaw pairing list slack
-
- Перевірте bot + app токени та ввімкнення Socket Mode у налаштуваннях застосунку Slack.
+
+ Перевірте токени бота й програми та ввімкнення Socket Mode у налаштуваннях програми Slack.
Якщо `openclaw channels status --probe --json` показує `botTokenStatus` або
`appTokenStatus: "configured_unavailable"`, обліковий запис Slack
- налаштовано, але поточне середовище виконання не змогло визначити значення,
- підтримане SecretRef.
+ налаштований, але поточне середовище виконання не змогло розв’язати
+ значення на основі SecretRef.
-
+
Перевірте:
- - signing secret
- - webhook path
- - Slack Request URLs (Events + Interactivity + Slash Commands)
+ - секрет підписування
+ - шлях Webhook
+ - URL запитів Slack (події + інтерактивність + Slash Commands)
- унікальний `webhookPath` для кожного HTTP-облікового запису
- Якщо `signingSecretStatus: "configured_unavailable"` з’являється в знімках
- облікового запису, HTTP-обліковий запис налаштовано, але поточне середовище виконання не змогло
- визначити signing secret, підтриманий SecretRef.
+ Якщо `signingSecretStatus: "configured_unavailable"` з’являється у знімках
+ облікового запису, HTTP-обліковий запис налаштований, але поточне середовище виконання не змогло
+ розв’язати секрет підписування на основі SecretRef.
-
+
Перевірте, що саме ви мали на увазі:
- - режим нативних команд (`channels.slack.commands.native: true`) з відповідними slash-командами, зареєстрованими в Slack
+ - режим нативних команд (`channels.slack.commands.native: true`) з відповідними slash-командами, зареєстрованими у Slack
- або режим однієї slash-команди (`channels.slack.slashCommand.enabled: true`)
Також перевірте `commands.useAccessGroups` і allowlist каналів/користувачів.
@@ -1292,68 +1318,68 @@ openclaw pairing list slack
-## Довідник щодо бачення для вкладень
+## Довідник 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 input |
-| Інші файли | URL файлу Slack | Завантажуються, коли можливо, і доступні як файловий контекст | Бінарні файли не обробляються як вхідні зображення |
-| Відповіді треду | Файли початкового повідомлення треду | Файли кореневого повідомлення можуть бути гідратовані як контекст, коли відповідь не має безпосередніх медіа | Стартери лише з файлами використовують placeholder вкладення |
-| Повідомлення з кількома зображеннями | Кілька файлів Slack | Кожен файл оцінюється незалежно | Обробка Slack обмежена вісьмома файлами на повідомлення |
+| Тип медіа | Джерело | Поточна поведінка | Примітки |
+| ------------------------------ | -------------------- | -------------------------------------------------------------------------------- | ------------------------------------------------------------------------- |
+| Зображення JPEG / PNG / GIF / WebP | URL файлу Slack | Завантажуються й додаються до ходу для обробки з підтримкою зору | Ліміт на файл: `channels.slack.mediaMaxMb` (за замовчуванням 20 MB) |
+| Файли PDF | URL файлу Slack | Завантажуються й надаються як файловий контекст для інструментів на кшталт `download-file` або `pdf` | Вхідні дані Slack не перетворюють PDF на вхідні дані для image-vision автоматично |
+| Інші файли | URL файлу Slack | Завантажуються, коли це можливо, і надаються як файловий контекст | Бінарні файли не обробляються як вхідні зображення |
+| Відповіді в треді | Файли початкового повідомлення треду | Файли кореневого повідомлення можуть бути додані як контекст, коли відповідь не має власних медіа | Початкові повідомлення лише з файлами використовують placeholder вкладення |
+| Повідомлення з кількома зображеннями | Кілька файлів Slack | Кожен файл оцінюється незалежно | Обробка Slack обмежена вісьмома файлами на повідомлення |
-### Вхідний pipeline
+### Вхідний конвеєр
Коли надходить повідомлення Slack із файловими вкладеннями:
-1. OpenClaw завантажує файл із приватного URL Slack, використовуючи bot token (`xoxb-...`).
+1. OpenClaw завантажує файл із приватного URL Slack за допомогою токена бота (`xoxb-...`).
2. У разі успіху файл записується до сховища медіа.
-3. Завантажені шляхи медіа та типи вмісту додаються до вхідного контексту.
-4. Шляхи моделі/інструментів із підтримкою зображень можуть використовувати вкладення зображень із цього контексту.
+3. Шляхи до завантажених медіа й типи вмісту додаються до вхідного контексту.
+4. Шляхи моделей/інструментів із підтримкою зображень можуть використовувати вкладені зображення з цього контексту.
5. Файли, що не є зображеннями, залишаються доступними як файлові метадані або посилання на медіа для інструментів, які можуть їх обробляти.
### Успадкування вкладень кореня треду
Коли повідомлення надходить у треді (має батьківський `thread_ts`):
-- Якщо сама відповідь не має безпосередніх медіа, а включене кореневе повідомлення має файли, Slack може гідратувати кореневі файли як контекст стартера треду.
+- Якщо сама відповідь не має безпосередніх медіа, а включене кореневе повідомлення має файли, Slack може додати кореневі файли як контекст початкового повідомлення треду.
- Безпосередні вкладення відповіді мають пріоритет над вкладеннями кореневого повідомлення.
-- Кореневе повідомлення, яке має лише файли й не має тексту, представляється з placeholder вкладенням, щоб fallback усе ще міг включити його файли.
+- Кореневе повідомлення, яке має лише файли й не має тексту, представляється placeholder вкладення, щоб fallback все одно міг включити його файли.
### Обробка кількох вкладень
Коли одне повідомлення Slack містить кілька файлових вкладень:
-- Кожне вкладення обробляється незалежно через медійний pipeline.
-- Завантажені посилання на медіа агрегуються в контекст повідомлення.
+- Кожне вкладення обробляється незалежно через конвеєр медіа.
+- Посилання на завантажені медіа агрегуються в контекст повідомлення.
- Порядок обробки відповідає порядку файлів Slack у payload події.
-- Помилка завантаження одного вкладення не блокує інші.
+- Збій завантаження одного вкладення не блокує інші.
### Обмеження розміру, завантаження та моделей
-- **Обмеження розміру**: типово 20 MB на файл. Налаштовується через `channels.slack.mediaMaxMb`.
-- **Помилки завантаження**: файли, які Slack не може віддати, протерміновані URL, недоступні файли, надто великі файли та HTML-відповіді автентифікації/входу Slack пропускаються замість повідомлення як непідтримувані формати.
-- **Vision model**: аналіз зображень використовує активну модель відповіді, коли вона підтримує vision, або модель зображень, налаштовану в `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 медіа зображень/файлів обробляються best-effort | Поширте їх напряму в треді OpenClaw |
+| Вкладення PDF | Зберігаються як файловий/медійний контекст, не спрямовуються автоматично через image vision | Використайте `download-file` для файлових метаданих або інструмент `pdf` для аналізу PDF |
### Пов’язана документація
- [Конвеєр розуміння медіа](/uk/nodes/media-understanding)
- [Інструмент PDF](/uk/tools/pdf)
-- Епік: [#51349](https://github.com/openclaw/openclaw/issues/51349) — увімкнення зорового аналізу вкладень Slack
+- Epic: [#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)
@@ -1361,21 +1387,21 @@ Slack може прикріплювати завантажені медіа до
- Сполучіть користувача Slack із Gateway.
+ Зв’яжіть користувача Slack із Gateway.
- Поведінка каналу та групових DM.
+ Поведінка каналів і групових DM.
-
- Маршрутизуйте вхідні повідомлення до агентів.
+
+ Спрямовуйте вхідні повідомлення до агентів.
- Модель загроз і посилення захисту.
+ Модель загроз і зміцнення захисту.
- Структура конфігурації та пріоритетність.
+ Структура конфігурації та пріоритети.
-
+
Каталог команд і поведінка.