diff --git a/docs/uk/channels/slack.md b/docs/uk/channels/slack.md
index 7bb6e222a..7d59ff1ba 100644
--- a/docs/uk/channels/slack.md
+++ b/docs/uk/channels/slack.md
@@ -1,29 +1,29 @@
---
read_when:
- Налаштування Slack або налагодження режиму socket/HTTP у Slack
-summary: Налаштування Slack і поведінка під час роботи (Socket Mode + URL-адреси HTTP Request)
+summary: Налаштування Slack і поведінка під час виконання (Socket Mode + URL-адреси HTTP-запитів)
title: Slack
x-i18n:
- generated_at: "2026-04-06T06:59:24Z"
+ generated_at: "2026-04-06T07:21:13Z"
model: gpt-5.4
provider: openai
- source_hash: 471421a34e5ff20dfc46dab85422d2e814524068c8466d0738448cd5d64d415b
+ source_hash: f324c1b203146b8b885179e9f76cd6883cedf96a87df1d9642626d8e7fb392a7
source_path: channels/slack.md
workflow: 15
---
# Slack
-Статус: готово до використання в production для приватних повідомлень + каналів через інтеграції застосунку Slack. Режим за замовчуванням — Socket Mode; URL-адреси HTTP Request також підтримуються.
+Стан: готовий до production для DM і каналів через інтеграції застосунку Slack. Типовий режим — Socket Mode; URL-адреси HTTP-запитів також підтримуються.
-
- Приватні повідомлення Slack за замовчуванням використовують режим підключення.
+
+ За замовчуванням Slack DM працюють у режимі пейрингу.
- Вбудована поведінка команд і каталог команд.
+ Нативна поведінка команд і каталог команд.
-
+
Міжканальна діагностика та сценарії відновлення.
@@ -31,7 +31,7 @@ x-i18n:
## Швидке налаштування
-
+
У налаштуваннях застосунку Slack:
@@ -56,7 +56,7 @@ x-i18n:
}
```
- Резервне значення з env (лише для облікового запису за замовчуванням):
+ Резервне значення з env (лише для типового акаунта):
```bash
SLACK_APP_TOKEN=xapp-...
@@ -75,10 +75,10 @@ SLACK_BOT_TOKEN=xoxb-...
- `channel_rename`
- `pin_added`, `pin_removed`
- Також увімкніть **Messages Tab** у App Home для приватних повідомлень.
+ Також увімкніть **Messages Tab** у App Home для DM.
-
+
```bash
openclaw gateway
@@ -89,13 +89,13 @@ openclaw gateway
-
+
- - встановіть режим HTTP (`channels.slack.mode="http"`)
+ - установіть режим HTTP (`channels.slack.mode="http"`)
- скопіюйте **Signing Secret** Slack
- - встановіть однаковий Request URL для Event Subscriptions, Interactivity і Slash command на той самий шлях webhook (типово `/slack/events`)
+ - установіть однаковий URL запиту для Event Subscriptions + Interactivity + Slash command на той самий шлях webhook (типово `/slack/events`)
@@ -117,10 +117,10 @@ openclaw gateway
-
- Підтримується HTTP-режим для кожного облікового запису окремо.
+
+ Підтримується HTTP-режим для кожного акаунта окремо.
- Призначте кожному обліковому запису окремий `webhookPath`, щоб реєстрації не конфліктували.
+ Надайте кожному акаунту окремий `webhookPath`, щоб реєстрації не конфліктували.
@@ -129,8 +129,8 @@ openclaw gateway
## Контрольний список маніфесту та scope
-
-
+
+
```json
{
@@ -205,10 +205,95 @@ openclaw gateway
}
```
-
+
+
+
+```json
+{
+ "display_information": {
+ "name": "OpenClaw",
+ "description": "Slack connector for OpenClaw"
+ },
+ "features": {
+ "bot_user": {
+ "display_name": "OpenClaw",
+ "always_online": true
+ },
+ "app_home": {
+ "messages_tab_enabled": true,
+ "messages_tab_read_only_enabled": false
+ },
+ "slash_commands": [
+ {
+ "command": "/openclaw",
+ "description": "Send a message to OpenClaw",
+ "should_escape": false,
+ "url": "https://gateway-host.example.com/slack/events"
+ }
+ ]
+ },
+ "oauth_config": {
+ "scopes": {
+ "bot": [
+ "app_mentions:read",
+ "assistant:write",
+ "channels:history",
+ "channels:read",
+ "chat:write",
+ "commands",
+ "emoji:read",
+ "files:read",
+ "files:write",
+ "groups:history",
+ "groups:read",
+ "im:history",
+ "im:read",
+ "im:write",
+ "mpim:history",
+ "mpim:read",
+ "mpim:write",
+ "pins:read",
+ "pins:write",
+ "reactions:read",
+ "reactions:write",
+ "users:read"
+ ]
+ }
+ },
+ "settings": {
+ "event_subscriptions": {
+ "request_url": "https://gateway-host.example.com/slack/events",
+ "bot_events": [
+ "app_mention",
+ "channel_rename",
+ "member_joined_channel",
+ "member_left_channel",
+ "message.channels",
+ "message.groups",
+ "message.im",
+ "message.mpim",
+ "pin_added",
+ "pin_removed",
+ "reaction_added",
+ "reaction_removed"
+ ]
+ },
+ "interactivity": {
+ "is_enabled": true,
+ "request_url": "https://gateway-host.example.com/slack/events",
+ "message_menu_options_url": "https://gateway-host.example.com/slack/events"
+ }
+ }
+}
+```
+
+
+
+
+
- Якщо ви налаштовуєте `channels.slack.userToken`, типовими scope для читання є:
+ Якщо ви налаштовуєте `channels.slack.userToken`, типовими scope читання є:
- `channels:history`, `groups:history`, `im:history`, `mpim:history`
- `channels:read`, `groups:read`, `im:read`, `mpim:read`
@@ -223,28 +308,28 @@ openclaw gateway
## Модель токенів
-- `botToken` + `appToken` обов'язкові для Socket Mode.
+- `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`).
-- Необов'язково: додайте `chat:write.customize`, якщо хочете, щоб вихідні повідомлення використовували активну ідентичність агента (власні `username` та icon). `icon_emoji` використовує синтаксис `:emoji_name:`.
+- `botToken`, `appToken`, `signingSecret` і `userToken` приймають відкриті
+ рядки або об’єкти SecretRef.
+- Токени в конфігурації мають пріоритет над резервними значеннями з env.
+- Резервне значення з env `SLACK_BOT_TOKEN` / `SLACK_APP_TOKEN` застосовується лише до типового акаунта.
+- `userToken` (`xoxp-...`) доступний лише в конфігурації (без резервного значення з env) і за замовчуванням працює лише для читання (`userTokenReadOnly: true`).
+- Необов’язково: додайте `chat:write.customize`, якщо хочете, щоб вихідні повідомлення використовували активну ідентичність агента (власні `username` та іконку). `icon_emoji` використовує синтаксис `:emoji_name:`.
-Поведінка знімка статусу:
+Поведінка знімка стану:
-- Перевірка облікового запису Slack відстежує поля `*Source` і `*Status`
- для кожного облікового запису (`botToken`, `appToken`, `signingSecret`, `userToken`).
-- Статус може бути `available`, `configured_unavailable` або `missing`.
-- `configured_unavailable` означає, що обліковий запис налаштовано через SecretRef
- або інше не-inline джерело секретів, але поточна команда/шлях виконання
- не змогли визначити фактичне значення.
+- Перевірка акаунта Slack відстежує поля `*Source` і `*Status`
+ для кожного облікового даного (`botToken`, `appToken`, `signingSecret`, `userToken`).
+- Стан може бути `available`, `configured_unavailable` або `missing`.
+- `configured_unavailable` означає, що акаунт налаштований через SecretRef
+ або інше не-inline джерело секрету, але поточна команда/шлях виконання
+ не змогли отримати фактичне значення.
- У HTTP-режимі включається `signingSecretStatus`; у Socket Mode
- потрібною парою є `botTokenStatus` + `appTokenStatus`.
+ обов’язковою парою є `botTokenStatus` + `appTokenStatus`.
-Для дій/читання каталогів за наявності конфігурації може віддаватися перевага токену користувача. Для запису пріоритетним залишається токен бота; запис через токен користувача дозволяється лише коли `userTokenReadOnly: false` і токен бота недоступний.
+Для читання дій/каталогів токен користувача може бути пріоритетним, якщо його налаштовано. Для запису пріоритетним залишається токен бота; запис через токен користувача дозволено лише коли `userTokenReadOnly: false` і токен бота недоступний.
## Дії та обмеження
@@ -253,74 +338,74 @@ openclaw gateway
Доступні групи дій у поточному інструментарії Slack:
-| Group | Default |
+| Група | Типово |
| ---------- | ------- |
-| messages | enabled |
-| reactions | enabled |
-| pins | enabled |
-| memberInfo | enabled |
-| emojiList | enabled |
+| messages | увімкнено |
+| reactions | увімкнено |
+| pins | увімкнено |
+| memberInfo | увімкнено |
+| emojiList | увімкнено |
-Поточні дії для повідомлень Slack включають `send`, `upload-file`, `download-file`, `read`, `edit`, `delete`, `pin`, `unpin`, `list-pins`, `member-info` і `emoji-list`.
+Поточні дії з повідомленнями Slack включають `send`, `upload-file`, `download-file`, `read`, `edit`, `delete`, `pin`, `unpin`, `list-pins`, `member-info` і `emoji-list`.
## Керування доступом і маршрутизація
-
- `channels.slack.dmPolicy` керує доступом до приватних повідомлень (застаріле: `channels.slack.dm.policy`):
+
+ `channels.slack.dmPolicy` керує доступом до DM (застаріле: `channels.slack.dm.policy`):
- - `pairing` (за замовчуванням)
+ - `pairing` (типово)
- `allowlist`
- - `open` (потрібно, щоб `channels.slack.allowFrom` містив `"*"`; застаріле: `channels.slack.dm.allowFrom`)
+ - `open` (потребує, щоб `channels.slack.allowFrom` містив `"*"`; застаріле: `channels.slack.dm.allowFrom`)
- `disabled`
- Прапорці приватних повідомлень:
+ Прапорці DM:
- `dm.enabled` (типово true)
- `channels.slack.allowFrom` (рекомендовано)
- `dm.allowFrom` (застаріле)
- - `dm.groupEnabled` (групові приватні повідомлення типово false)
- - `dm.groupChannels` (необов'язковий allowlist MPIM)
+ - `dm.groupEnabled` (для групових DM типово false)
+ - `dm.groupChannels` (необов’язковий allowlist MPIM)
- Пріоритет для кількох облікових записів:
+ Пріоритет для кількох акаунтів:
- - `channels.slack.accounts.default.allowFrom` застосовується лише до облікового запису `default`.
- - Іменовані облікові записи успадковують `channels.slack.allowFrom`, якщо їхній власний `allowFrom` не задано.
- - Іменовані облікові записи не успадковують `channels.slack.accounts.default.allowFrom`.
+ - `channels.slack.accounts.default.allowFrom` застосовується лише до акаунта `default`.
+ - Іменовані акаунти успадковують `channels.slack.allowFrom`, якщо їхній власний `allowFrom` не задано.
+ - Іменовані акаунти не успадковують `channels.slack.accounts.default.allowFrom`.
- Підключення в приватних повідомленнях використовує `openclaw pairing approve slack `.
+ Пейринг у DM використовує `openclaw pairing approve slack `.
-
+
`channels.slack.groupPolicy` керує обробкою каналів:
- `open`
- `allowlist`
- `disabled`
- Allowlist каналів зберігається в `channels.slack.channels` і має використовувати стабільні ID каналів.
+ Allowlist каналів знаходиться в `channels.slack.channels` і має використовувати стабільні ID каналів.
- Примітка щодо роботи: якщо `channels.slack` повністю відсутній (налаштування лише через env), під час роботи використовується резервне значення `groupPolicy="allowlist"` і записується попередження в журнал (навіть якщо встановлено `channels.defaults.groupPolicy`).
+ Примітка щодо виконання: якщо `channels.slack` повністю відсутній (налаштування лише через env), під час виконання використовується резервне значення `groupPolicy="allowlist"` і записується попередження в журнал (навіть якщо задано `channels.defaults.groupPolicy`).
- Визначення імені/ID:
+ Розв’язання імен/ID:
- - записи allowlist каналів і allowlist приватних повідомлень визначаються під час запуску, коли доступ токена це дозволяє
- - записи з невизначеними назвами каналів зберігаються в конфігурації, але типово ігноруються для маршрутизації
- - вхідна авторизація і маршрутизація каналів типово працюють за ID; пряме зіставлення імені користувача/sluга потребує `channels.slack.dangerouslyAllowNameMatching: true`
+ - записи allowlist каналів і DM allowlist розв’язуються під час запуску, якщо доступ токена це дозволяє
+ - нерозв’язані записи імен каналів зберігаються як налаштовані, але типово ігноруються під час маршрутизації
+ - вхідна авторизація та маршрутизація каналів типово працюють за ID; пряме зіставлення за username/slug потребує `channels.slack.dangerouslyAllowNameMatching: true`
- Повідомлення в каналах типово обмежені згадками.
+ Повідомлення каналів типово обмежуються згадками.
Джерела згадок:
- явна згадка застосунку (`<@botId>`)
- шаблони regex для згадок (`agents.list[].groupChat.mentionPatterns`, резервне значення `messages.groupChat.mentionPatterns`)
- - неявна поведінка відповідей у гілці на бота
+ - неявна поведінка відповіді в треді на бота
- Керування для кожного каналу (`channels.slack.channels.`; імена лише через визначення під час запуску або `dangerouslyAllowNameMatching`):
+ Керування для кожного каналу (`channels.slack.channels.`; імена лише через розв’язання під час запуску або `dangerouslyAllowNameMatching`):
- `requireMention`
- `users` (allowlist)
@@ -329,38 +414,38 @@ openclaw gateway
- `systemPrompt`
- `tools`, `toolsBySender`
- формат ключа `toolsBySender`: `id:`, `e164:`, `username:`, `name:` або шаблон `"*"`
- (застарілі ключі без префікса досі зіставляються лише з `id:`)
+ (застарілі ключі без префікса все ще зіставляються лише з `id:`)
-## Гілки, сесії та теги відповідей
+## Треди, сесії та теги відповіді
-- Приватні повідомлення маршрутизуються як `direct`; канали — як `channel`; MPIM — як `group`.
-- Із типовим `session.dmScope=main` приватні повідомлення Slack згортаються в основну сесію агента.
+- DM маршрутизуються як `direct`; канали — як `channel`; MPIM — як `group`.
+- З типовим `session.dmScope=main` Slack DM згортаються в основну сесію агента.
- Сесії каналів: `agent::slack:channel:`.
-- Відповіді в гілках можуть створювати суфікси сесій гілок (`:thread:`), коли це застосовно.
+- Відповіді в треді можуть створювати суфікси сесії треду (`:thread:`), коли це застосовно.
- Типове значення `channels.slack.thread.historyScope` — `thread`; типове значення `thread.inheritParent` — `false`.
-- `channels.slack.thread.initialHistoryLimit` керує тим, скільки наявних повідомлень у гілці буде отримано під час початку нової сесії гілки (типово `20`; установіть `0`, щоб вимкнути).
+- `channels.slack.thread.initialHistoryLimit` керує тим, скільки наявних повідомлень треду отримується під час запуску нової сесії треду (типово `20`; установіть `0`, щоб вимкнути).
-Керування гілками відповідей:
+Елементи керування тредами відповідей:
- `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` надсилає emoji підтвердження, поки OpenClaw обробляє вхідне повідомлення.
-Порядок визначення:
+Порядок розв’язання:
- `channels.slack.accounts..ackReaction`
- `channels.slack.ackReaction`
@@ -369,25 +454,25 @@ openclaw gateway
Примітки:
-- Slack очікує shortcode (наприклад `"eyes"`).
-- Використовуйте `""`, щоб вимкнути реакцію для облікового запису Slack або глобально.
+- Slack очікує shortcodes (наприклад, `"eyes"`).
+- Використовуйте `""`, щоб вимкнути реакцію для акаунта Slack або глобально.
-## Потокове передавання тексту
+## Потокова передача тексту
-`channels.slack.streaming` керує поведінкою попереднього перегляду в реальному часі:
+`channels.slack.streaming` керує поведінкою live preview:
-- `off`: вимкнути потоковий попередній перегляд.
-- `partial` (за замовчуванням): замінювати текст попереднього перегляду останнім частковим виводом.
-- `block`: додавати оновлення попереднього перегляду частинами.
-- `progress`: показувати текст статусу прогресу під час генерації, а потім надсилати фінальний текст.
+- `off`: вимкнути потокове live preview.
+- `partial` (типово): замінювати текст попереднього перегляду останнім частковим виводом.
+- `block`: додавати порційні оновлення попереднього перегляду.
+- `progress`: показувати текст стану прогресу під час генерації, а потім надсилати фінальний текст.
-`channels.slack.nativeStreaming` керує вбудованим потоковим передаванням тексту Slack, коли `streaming` має значення `partial` (типово: `true`).
+`channels.slack.nativeStreaming` керує нативною потоковою передачею тексту Slack, коли `streaming` має значення `partial` (типово: `true`).
-- Щоб з'явилося вбудоване потокове передавання тексту, має бути доступна гілка відповіді. Вибір гілки й надалі визначається `replyToMode`. Без неї використовується звичайний чернетковий попередній перегляд.
-- Медіа та не текстові payload повертаються до звичайної доставки.
-- Якщо потокове передавання зламається посеред відповіді, OpenClaw повернеться до звичайної доставки для решти payload.
+- Щоб з’явилася нативна потокова передача тексту, має бути доступний тред відповіді. Вибір треду все одно підпорядковується `replyToMode`. Без нього використовується звичайний чорновий попередній перегляд.
+- Для медіа та нетекстових корисних навантажень використовується звичайна доставка.
+- Якщо потокова передача зламається посеред відповіді, OpenClaw повернеться до звичайної доставки для решти корисних навантажень.
-Використовуйте чернетковий попередній перегляд замість вбудованого потокового передавання тексту Slack:
+Використовуйте чорновий попередній перегляд замість нативної потокової передачі тексту Slack:
```json5
{
@@ -403,63 +488,63 @@ openclaw gateway
Застарілі ключі:
- `channels.slack.streamMode` (`replace | status_final | append`) автоматично мігрує до `channels.slack.streaming`.
-- булеве значення `channels.slack.streaming` автоматично мігрує до `channels.slack.nativeStreaming`.
+- булеве `channels.slack.streaming` автоматично мігрує до `channels.slack.nativeStreaming`.
-## Резервна реакція набору тексту
+## Резервний варіант реакції друку
-`typingReaction` додає тимчасову реакцію до вхідного повідомлення Slack, поки OpenClaw обробляє відповідь, а потім видаляє її після завершення виконання. Це особливо корисно поза відповідями в гілках, які використовують типовий індикатор статусу "is typing...".
+`typingReaction` додає тимчасову реакцію до вхідного повідомлення Slack, поки OpenClaw обробляє відповідь, а потім видаляє її, коли виконання завершується. Це найкорисніше поза відповідями в треді, де використовується типовий індикатор стану "is typing...".
-Порядок визначення:
+Порядок розв’язання:
- `channels.slack.accounts..typingReaction`
- `channels.slack.typingReaction`
Примітки:
-- Slack очікує shortcode (наприклад `"hourglass_flowing_sand"`).
-- Реакція є best-effort, а очищення намагається виконатися автоматично після завершення відповіді або сценарію помилки.
+- Slack очікує shortcodes (наприклад, `"hourglass_flowing_sand"`).
+- Реакція є best-effort, а очищення автоматично намагається виконатися після завершення відповіді або сценарію помилки.
-## Медіа, поділ на частини та доставка
+## Медіа, розбиття на частини та доставка
- Вкладення файлів Slack завантажуються з приватних URL, розміщених у Slack (потік запитів з автентифікацією токеном), і записуються до сховища медіа, якщо отримання успішне та дозволяють обмеження розміру.
+ Вкладення файлів Slack завантажуються з приватних URL-адрес, розміщених у Slack (потік запитів з автентифікацією токеном), і записуються до сховища медіа, якщо отримання успішне та дозволяють обмеження розміру.
- Типове обмеження розміру вхідних даних під час роботи становить `20MB`, якщо не перевизначено через `channels.slack.mediaMaxMb`.
+ Типове обмеження розміру вхідних даних під час виконання — `20MB`, якщо його не перевизначено через `channels.slack.mediaMaxMb`.
- - частини тексту використовують `channels.slack.textChunkLimit` (типово 4000)
- - `channels.slack.chunkMode="newline"` вмикає поділ спочатку за абзацами
- - надсилання файлів використовує API завантаження Slack і може включати відповіді в гілках (`thread_ts`)
- - обмеження вихідних медіа визначається `channels.slack.mediaMaxMb`, якщо задано; інакше надсилання через канал використовують типові значення MIME-kind з конвеєра медіа
+ - текстові частини використовують `channels.slack.textChunkLimit` (типово 4000)
+ - `channels.slack.chunkMode="newline"` вмикає розбиття спочатку за абзацами
+ - надсилання файлів використовує API завантаження Slack і може включати відповіді в треді (`thread_ts`)
+ - обмеження вихідних медіа підпорядковується `channels.slack.mediaMaxMb`, якщо налаштовано; інакше надсилання каналу використовує типові значення MIME-kind із конвеєра медіа
Бажані явні цілі:
- - `user:` для приватних повідомлень
+ - `user:` для DM
- `channel:` для каналів
- Приватні повідомлення Slack відкриваються через API conversations Slack під час надсилання до цілей користувача.
+ Slack DM відкриваються через API розмов Slack під час надсилання в цілі користувача.
## Команди та поведінка слеш-команд
-- Вбудований автоматичний режим команд **вимкнено** для Slack (`commands.native: "auto"` не вмикає вбудовані команди Slack).
-- Увімкніть вбудовані обробники команд Slack через `channels.slack.commands.native: true` (або глобально `commands.native: true`).
-- Коли вбудовані команди ввімкнено, зареєструйте відповідні слеш-команди в Slack (імена `/`), за одним винятком:
- - зареєструйте `/agentstatus` для команди status (Slack резервує `/status`)
-- Якщо вбудовані команди не ввімкнено, ви можете запускати одну налаштовану слеш-команду через `channels.slack.slashCommand`.
-- Вбудовані меню аргументів тепер адаптують свою стратегію відображення:
+- Автоматичний нативний режим команд для Slack **вимкнений** (`commands.native: "auto"` не вмикає нативні команди Slack).
+- Увімкніть нативні обробники команд Slack через `channels.slack.commands.native: true` (або глобально `commands.native: true`).
+- Коли нативні команди ввімкнені, зареєструйте відповідні слеш-команди в Slack (імена `/`), з одним винятком:
+ - зареєструйте `/agentstatus` для команди стану (Slack резервує `/status`)
+- Якщо нативні команди не ввімкнені, ви можете запускати одну налаштовану слеш-команду через `channels.slack.slashCommand`.
+- Нативні меню аргументів тепер адаптують свою стратегію рендерингу:
- до 5 варіантів: блоки кнопок
- 6-100 варіантів: статичне меню вибору
- - понад 100 варіантів: зовнішній вибір з асинхронною фільтрацією варіантів, коли доступні обробники інтерактивних параметрів
- - якщо закодовані значення варіантів перевищують ліміти Slack, потік повертається до кнопок
-- Для довгих payload параметрів меню аргументів слеш-команд використовують діалог підтвердження перед відправленням вибраного значення.
+ - понад 100 варіантів: зовнішній вибір з асинхронною фільтрацією варіантів, якщо доступні обробники параметрів interactivity
+ - якщо закодовані значення варіантів перевищують ліміти Slack, процес повертається до кнопок
+- Для довгих корисних навантажень варіантів меню аргументів слеш-команд використовують діалог підтвердження перед відправленням вибраного значення.
Типові налаштування слеш-команд:
@@ -472,13 +557,13 @@ openclaw gateway
- `agent::slack:slash:`
-і все одно маршрутизують виконання команди щодо цільової сесії розмови (`CommandTargetSessionKey`).
+і все ще маршрутизують виконання команди до сесії цільової розмови (`CommandTargetSessionKey`).
## Інтерактивні відповіді
-Slack може відображати інтерактивні елементи керування відповідями, створеними агентом, але ця функція за замовчуванням вимкнена.
+Slack може відображати інтерактивні елементи керування відповідями, створеними агентом, але ця функція типово вимкнена.
-Увімкнути глобально:
+Увімкніть її глобально:
```json5
{
@@ -492,7 +577,7 @@ Slack може відображати інтерактивні елементи
}
```
-Або увімкнути лише для одного облікового запису Slack:
+Або увімкніть лише для одного акаунта Slack:
```json5
{
@@ -510,43 +595,44 @@ 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 UI. Інші канали не перетворюють директиви Slack Block Kit у власні системи кнопок.
-- Значення інтерактивних callback — це непрозорі токени, згенеровані OpenClaw, а не вихідні значення, створені агентом.
-- Якщо згенеровані інтерактивні блоки перевищать ліміти Slack Block Kit, OpenClaw повернеться до початкової текстової відповіді замість надсилання недійсного payload blocks.
+- Це UI, специфічний для Slack. Інші канали не перекладають директиви Slack Block Kit у власні системи кнопок.
+- Значення інтерактивного зворотного виклику — це непрозорі токени, згенеровані OpenClaw, а не необроблені значення, створені агентом.
+- Якщо згенеровані інтерактивні блоки перевищують ліміти Slack Block Kit, OpenClaw повертається до початкової текстової відповіді замість надсилання недійсного корисного навантаження blocks.
## Підтвердження exec у Slack
-Slack може працювати як вбудований клієнт підтвердження з інтерактивними кнопками та взаємодіями замість повернення до Web UI або термінала.
+Slack може виступати як нативний клієнт підтвердження з інтерактивними кнопками та взаємодіями замість резервного переходу до Web UI або термінала.
-- Підтвердження exec використовують `channels.slack.execApprovals.*` для вбудованої маршрутизації приватних повідомлень/каналів.
-- Підтвердження plugin також можуть визначатися через ту саму вбудовану поверхню кнопок Slack, коли запит уже потрапляє в Slack і тип id підтвердження — `plugin:`.
-- Авторизація того, хто підтверджує, і далі застосовується: лише користувачі, визначені як approvers, можуть підтверджувати або відхиляти запити через Slack.
+- Підтвердження exec використовують `channels.slack.execApprovals.*` для нативної маршрутизації в DM/канал.
+- Підтвердження плагінів також можуть розв’язуватися через ту саму нативну поверхню кнопок Slack, коли запит уже надходить у Slack, а тип id підтвердження — `plugin:`.
+- Авторизація затверджувачів усе ще застосовується: лише користувачі, визначені як затверджувачі, можуть схвалювати або відхиляти запити через Slack.
-Це використовує ту саму спільну поверхню кнопок підтвердження, що й інші канали. Якщо у налаштуваннях застосунку Slack увімкнено `interactivity`, запити на підтвердження відображаються як кнопки Block Kit безпосередньо в розмові.
+Це використовує ту саму спільну поверхню кнопок підтвердження, що й інші канали. Коли `interactivity` увімкнено в налаштуваннях вашого застосунку Slack, запити на підтвердження відображаються як кнопки Block Kit безпосередньо в розмові.
Коли ці кнопки присутні, вони є основним UX підтвердження; OpenClaw
-має включати ручну команду `/approve` лише тоді, коли результат інструмента вказує, що підтвердження в чаті недоступні або ручне підтвердження є єдиним шляхом.
+має включати ручну команду `/approve` лише тоді, коли результат інструмента каже, що
+підтвердження в чаті недоступні або ручне підтвердження — єдиний шлях.
Шлях конфігурації:
- `channels.slack.execApprovals.enabled`
-- `channels.slack.execApprovals.approvers` (необов'язково; використовує резервне значення `commands.ownerAllowFrom`, коли можливо)
+- `channels.slack.execApprovals.approvers` (необов’язково; за можливості використовує резервне значення `commands.ownerAllowFrom`)
- `channels.slack.execApprovals.target` (`dm` | `channel` | `both`, типово: `dm`)
- `agentFilter`, `sessionFilter`
-Slack автоматично вмикає вбудовані підтвердження exec, коли `enabled` не задано або має значення `"auto"` і визначається принаймні один
-approver. Установіть `enabled: false`, щоб явно вимкнути Slack як вбудований клієнт підтвердження.
-Установіть `enabled: true`, щоб примусово ввімкнути вбудовані підтвердження, коли approvers визначаються.
+Slack автоматично вмикає нативні підтвердження exec, коли `enabled` не задано або має значення `"auto"` і розв’язується принаймні один
+затверджувач. Установіть `enabled: false`, щоб явно вимкнути Slack як нативний клієнт підтвердження.
+Установіть `enabled: true`, щоб примусово ввімкнути нативні підтвердження, коли затверджувачі розв’язуються.
-Типова поведінка без явної конфігурації підтвердження exec для Slack:
+Типова поведінка без явної конфігурації підтверджень exec для Slack:
```json5
{
@@ -556,8 +642,8 @@ approver. Установіть `enabled: false`, щоб явно вимкнут
}
```
-Явна вбудована конфігурація Slack потрібна лише тоді, коли ви хочете перевизначити approvers, додати фільтри або
-увімкнути доставку до початкового чату:
+Явна нативна конфігурація Slack потрібна лише тоді, коли ви хочете перевизначити затверджувачів, додати фільтри або
+увімкнути доставку до чату-джерела:
```json5
{
@@ -574,23 +660,23 @@ approver. Установіть `enabled: false`, щоб явно вимкнут
```
Спільне переспрямування `approvals.exec` є окремим. Використовуйте його лише тоді, коли запити на підтвердження exec також мають
-маршрутизуватися до інших чатів або явно заданих зовнішніх цілей. Спільне переспрямування `approvals.plugin` також є
-окремим; вбудовані кнопки Slack усе одно можуть визначати підтвердження plugin, коли ці запити вже надходять
+маршрутизуватися в інші чати або до явних позасмугових цілей. Спільне переспрямування `approvals.plugin` також є
+окремим; нативні кнопки Slack все одно можуть розв’язувати підтвердження плагінів, коли ці запити вже надходять
у Slack.
-Команда `/approve` у тому ж чаті також працює в каналах і приватних повідомленнях Slack, які вже підтримують команди. Див. [Exec approvals](/uk/tools/exec-approvals), щоб ознайомитися з повною моделлю переспрямування підтверджень.
+`/approve` у тому самому чаті також працює в каналах і DM Slack, які вже підтримують команди. Див. [Підтвердження exec](/uk/tools/exec-approvals) для повної моделі переспрямування підтверджень.
-## Події та поведінка під час роботи
+## Події та операційна поведінка
-- Редагування/видалення повідомлень і трансляції гілок перетворюються на системні події.
-- Події додавання/видалення реакцій перетворюються на системні події.
-- Події входу/виходу учасників, створення/перейменування каналів і додавання/видалення закріплень перетворюються на системні події.
+- Редагування/видалення повідомлень і broadсast тредів зіставляються із системними подіями.
+- Події додавання/видалення реакцій зіставляються із системними подіями.
+- Події входу/виходу учасників, створення/перейменування каналу та додавання/видалення закріплень зіставляються із системними подіями.
- `channel_id_changed` може мігрувати ключі конфігурації каналу, коли ввімкнено `configWrites`.
-- Метадані теми/призначення каналу вважаються ненадійним контекстом і можуть бути вставлені в контекст маршрутизації.
-- Ініціатор гілки та початкове заповнення контексту історії гілки фільтруються за налаштованими allowlist відправників, коли це застосовно.
-- Дії блоків і взаємодії з модальними вікнами породжують структуровані системні події `Slack interaction: ...` з насиченими полями payload:
+- Метадані topic/purpose каналу розглядаються як недовірений контекст і можуть бути впроваджені в контекст маршрутизації.
+- Ініціатор треду та початкове наповнення контексту історії треду фільтруються за налаштованими allowlist відправників, коли це застосовно.
+- Дії блоків і взаємодії з modal створюють структуровані системні події `Slack interaction: ...` з розширеними полями корисного навантаження:
- дії блоків: вибрані значення, мітки, значення picker і метадані `workflow_*`
- - події модальних вікон `view_submission` і `view_closed` з маршрутизованими метаданими каналу та полями форми
+ - події modal `view_submission` і `view_closed` з маршрутизованими метаданими каналу та введенням форми
## Вказівники на довідник конфігурації
@@ -598,20 +684,20 @@ approver. Установіть `enabled: false`, щоб явно вимкнут
- [Довідник конфігурації - Slack](/uk/gateway/configuration-reference#slack)
- Важливі поля Slack:
+ Високосигнальні поля Slack:
- режим/автентифікація: `mode`, `botToken`, `appToken`, `signingSecret`, `webhookPath`, `accounts.*`
- - доступ до приватних повідомлень: `dm.enabled`, `dmPolicy`, `allowFrom` (застаріле: `dm.policy`, `dm.allowFrom`), `dm.groupEnabled`, `dm.groupChannels`
+ - доступ до DM: `dm.enabled`, `dmPolicy`, `allowFrom` (застаріле: `dm.policy`, `dm.allowFrom`), `dm.groupEnabled`, `dm.groupChannels`
- перемикач сумісності: `dangerouslyAllowNameMatching` (аварійний варіант; не вмикайте без потреби)
- доступ до каналів: `groupPolicy`, `channels.*`, `channels.*.users`, `channels.*.requireMention`
- - гілки/історія: `replyToMode`, `replyToModeByChatType`, `thread.*`, `historyLimit`, `dmHistoryLimit`, `dms.*.historyLimit`
+ - треди/історія: `replyToMode`, `replyToModeByChatType`, `thread.*`, `historyLimit`, `dmHistoryLimit`, `dms.*.historyLimit`
- доставка: `textChunkLimit`, `chunkMode`, `mediaMaxMb`, `streaming`, `nativeStreaming`
- - операції/можливості: `configWrites`, `commands.native`, `slashCommand.*`, `actions.*`, `userToken`, `userTokenReadOnly`
+ - операції/функції: `configWrites`, `commands.native`, `slashCommand.*`, `actions.*`, `userToken`, `userTokenReadOnly`
## Усунення несправностей
- Перевірте по черзі:
+ Перевірте в такому порядку:
- `groupPolicy`
- allowlist каналів (`channels.slack.channels`)
@@ -628,12 +714,12 @@ openclaw doctor
-
+
Перевірте:
- `channels.slack.dm.enabled`
- `channels.slack.dmPolicy` (або застаріле `channels.slack.dm.policy`)
- - підтвердження підключення / записи allowlist
+ - підтвердження пейрингу / записи allowlist
```bash
openclaw pairing list slack
@@ -641,34 +727,34 @@ openclaw pairing list slack
-
- Перевірте дійсність токенів бота + застосунку та те, що Socket Mode увімкнено в налаштуваннях застосунку Slack.
+
+ Перевірте токени бота й застосунку та ввімкнення Socket Mode в налаштуваннях застосунку Slack.
Якщо `openclaw channels status --probe --json` показує `botTokenStatus` або
- `appTokenStatus: "configured_unavailable"`, обліковий запис Slack
- налаштовано, але поточне середовище виконання не змогло визначити значення,
- що зберігається через SecretRef.
+ `appTokenStatus: "configured_unavailable"`, акаунт Slack
+ налаштований, але поточне середовище виконання не змогло розв’язати значення,
+ що підтримується SecretRef.
-
+
Перевірте:
- signing secret
- шлях webhook
- - URL-адреси Request URL у Slack (Events + Interactivity + Slash Commands)
- - унікальний `webhookPath` для кожного HTTP-облікового запису
+ - URL-адреси запитів Slack (Events + Interactivity + Slash Commands)
+ - унікальний `webhookPath` для кожного HTTP-акаунта
- Якщо `signingSecretStatus: "configured_unavailable"` з'являється у знімках
- облікових записів, HTTP-обліковий запис налаштовано, але поточне середовище виконання не змогло
- визначити signing secret, що зберігається через SecretRef.
+ Якщо `signingSecretStatus: "configured_unavailable"` з’являється у знімках
+ акаунта, HTTP-акаунт налаштований, але поточне середовище виконання не змогло
+ розв’язати signing secret, що підтримується SecretRef.
-
- Переконайтеся, що ви мали на увазі:
+
+ Перевірте, що саме ви планували:
- - режим вбудованих команд (`channels.slack.commands.native: true`) з відповідними слеш-командами, зареєстрованими в Slack
+ - нативний режим команд (`channels.slack.commands.native: true`) з відповідними слеш-командами, зареєстрованими в Slack
- або режим однієї слеш-команди (`channels.slack.slashCommand.enabled: true`)
Також перевірте `commands.useAccessGroups` і allowlist каналів/користувачів.
@@ -676,9 +762,9 @@ openclaw pairing list slack
-## Пов'язане
+## Пов’язане
-- [Підключення](/uk/channels/pairing)
+- [Пейринг](/uk/channels/pairing)
- [Групи](/uk/channels/groups)
- [Безпека](/uk/gateway/security)
- [Маршрутизація каналів](/uk/channels/channel-routing)