chore(i18n): refresh uk translations

This commit is contained in:
openclaw-docs-i18n[bot] 2026-04-06 09:17:32 +00:00
parent 5bd5bb5da0
commit 5c84c4bc6d

View File

@ -1,24 +1,24 @@
---
read_when:
- Налаштування Slack або налагодження режиму Slack socket/HTTP
- Налаштування Slack або налагодження режиму socket/HTTP у Slack
summary: Налаштування Slack і поведінка під час виконання (Socket Mode + HTTP Request URLs)
title: Slack
x-i18n:
generated_at: "2026-04-06T08:00:48Z"
generated_at: "2026-04-06T09:17:31Z"
model: gpt-5.4
provider: openai
source_hash: 897001c13d400cc8387a27000b82dd4c0512b2b88e2fe47785634aed8b7ab7af
source_hash: 11571e7e10cfbf4de91dc1b1ed6582cd94afdcf6c3356fdd3ccc770096c6dd31
source_path: channels/slack.md
workflow: 15
---
# Slack
Статус: готовий до production для DM + каналів через інтеграції застосунків Slack. Типовий режим — Socket Mode; HTTP Request URLs також підтримуються.
Статус: готовий до продакшену для особистих повідомлень і каналів через інтеграції застосунку Slack. Типовий режим — Socket Mode; HTTP Request URLs також підтримуються.
<CardGroup cols={3}>
<Card title="Пейринг" icon="link" href="/uk/channels/pairing">
Slack DM за замовчуванням працюють у режимі пейрингу.
<Card title="Зіставлення" icon="link" href="/uk/channels/pairing">
Особисті повідомлення Slack типово працюють у режимі зіставлення.
</Card>
<Card title="Слеш-команди" icon="terminal" href="/uk/tools/slash-commands">
Нативна поведінка команд і каталог команд.
@ -33,12 +33,13 @@ x-i18n:
<Tabs>
<Tab title="Socket Mode (типово)">
<Steps>
<Step title="Створіть застосунок Slack і токени">
У налаштуваннях застосунку Slack:
<Step title="Створіть новий застосунок Slack">
У налаштуваннях застосунку Slack натисніть кнопку **[Create New App](https://api.slack.com/apps/new)**:
- увімкніть **Socket Mode**
- створіть **App Token** (`xapp-...`) з `connections:write`
- встановіть застосунок і скопіюйте **Bot Token** (`xoxb-...`)
- виберіть **from a manifest** і виберіть робочу область для свого застосунку
- вставте [приклад маніфесту](#manifest-and-scope-checklist) нижче й продовжуйте створення
- згенеруйте **App-Level Token** (`xapp-...`) з `connections:write`
- установіть застосунок і скопіюйте показаний **Bot Token** (`xoxb-...`)
</Step>
<Step title="Налаштуйте OpenClaw">
@ -56,7 +57,7 @@ x-i18n:
}
```
Резервне значення з env (лише для облікового запису за замовчуванням):
Резервне значення через env (лише для типового облікового запису):
```bash
SLACK_APP_TOKEN=xapp-...
@ -65,19 +66,6 @@ SLACK_BOT_TOKEN=xoxb-...
</Step>
<Step title="Підпишіть події застосунку">
Підпишіть бот-події для:
- `app_mention`
- `message.channels`, `message.groups`, `message.im`, `message.mpim`
- `reaction_added`, `reaction_removed`
- `member_joined_channel`, `member_left_channel`
- `channel_rename`
- `pin_added`, `pin_removed`
Також увімкніть вкладку App Home **Messages Tab** для DM.
</Step>
<Step title="Запустіть gateway">
```bash
@ -91,15 +79,17 @@ openclaw gateway
<Tab title="HTTP Request URLs">
<Steps>
<Step title="Налаштуйте застосунок Slack для HTTP">
<Step title="Створіть новий застосунок Slack">
У налаштуваннях застосунку Slack натисніть кнопку **[Create New App](https://api.slack.com/apps/new)**:
- встановіть режим HTTP (`channels.slack.mode="http"`)
- скопіюйте **Signing Secret** Slack
- встановіть Request URL для Event Subscriptions + Interactivity + Slash command на той самий шлях webhook (типово `/slack/events`)
- виберіть **from a manifest** і виберіть робочу область для свого застосунку
- вставте [приклад маніфесту](#manifest-and-scope-checklist) і оновіть URL-адреси перед створенням
- збережіть **Signing Secret** для перевірки запитів
- установіть застосунок і скопіюйте показаний **Bot Token** (`xoxb-...`)
</Step>
<Step title="Налаштуйте HTTP-режим OpenClaw">
<Step title="Налаштуйте OpenClaw">
```json5
{
@ -115,12 +105,20 @@ openclaw gateway
}
```
<Note>
Використовуйте унікальні шляхи webhook для багатьох HTTP-облікових записів
Надайте кожному обліковому запису окремий `webhookPath` (типово `/slack/events`), щоб реєстрації не конфліктували.
</Note>
</Step>
<Step title="Використовуйте унікальні шляхи webhook для багатьох HTTP-облікових записів">
Режим HTTP для кількох облікових записів підтримується.
<Step title="Запустіть gateway">
```bash
openclaw gateway
```
Призначте кожному обліковому запису окремий `webhookPath`, щоб реєстрації не конфліктували.
</Step>
</Steps>
@ -292,13 +290,13 @@ openclaw gateway
</Tabs>
<AccordionGroup>
<Accordion title="Необов’язкові scope авторства (операції запису)">
Додайте bot scope `chat:write.customize`, якщо хочете, щоб вихідні повідомлення використовували активну ідентичність агента (власне ім’я користувача й іконку) замість типової ідентичності застосунку Slack.
<Accordion title="Необов’язкові scopes авторства (операції запису)">
Додайте bot scope `chat:write.customize`, якщо хочете, щоб вихідні повідомлення використовували ідентичність активного агента (власне ім’я користувача та піктограму) замість типової ідентичності застосунку Slack.
Якщо ви використовуєте emoji-іконку, Slack очікує синтаксис `:emoji_name:`.
Якщо ви використовуєте піктограму emoji, Slack очікує синтаксис `:emoji_name:`.
</Accordion>
<Accordion title="Необов’язкові scope токена користувача (операції читання)">
Якщо ви налаштовуєте `channels.slack.userToken`, типовими scope читання є:
<Accordion title="Необов’язкові scopes токена користувача (операції читання)">
Якщо ви налаштовуєте `channels.slack.userToken`, типовими scope для читання є:
- `channels:history`, `groups:history`, `im:history`, `mpim:history`
- `channels:read`, `groups:read`, `im:read`, `mpim:read`
@ -313,32 +311,32 @@ openclaw gateway
## Модель токенів
- `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`).
- `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`).
Поведінка знімка статусу:
Поведінка знімка стану:
- Перевірка облікового запису Slack відстежує поля `*Source` і `*Status`
для кожного облікового запису (`botToken`, `appToken`, `signingSecret`, `userToken`).
- Статус має значення `available`, `configured_unavailable` або `missing`.
- `configured_unavailable` означає, що обліковий запис налаштований через SecretRef
для кожних облікових даних (`botToken`, `appToken`, `signingSecret`, `userToken`).
- Статус може бути `available`, `configured_unavailable` або `missing`.
- `configured_unavailable` означає, що обліковий запис налаштовано через SecretRef
або інше не-inline джерело секретів, але поточний шлях команди/виконання
не зміг визначити фактичне значення.
- У режимі HTTP включається `signingSecretStatus`; у Socket Mode
потрібною парою є `botTokenStatus` + `appTokenStatus`.
обов’язковою парою є `botTokenStatus` + `appTokenStatus`.
<Tip>
Для дій/читання директорій за наявності налаштування може використовуватися токен користувача. Для запису пріоритетним лишається токен бота; запис через токен користувача дозволяється лише коли `userTokenReadOnly: false` і токен бота недоступний.
Для читання дій/каталогів перевага може надаватися токену користувача, якщо його налаштовано. Для запису пріоритет зберігається за bot token; запис через токен користувача дозволено лише коли `userTokenReadOnly: false` і bot token недоступний.
</Tip>
## Дії та обмеження
Дії Slack керуються через `channels.slack.actions.*`.
Діями Slack керує `channels.slack.actions.*`.
Доступні групи дій у поточному інструментарії Slack:
@ -352,32 +350,32 @@ openclaw gateway
Поточні дії для повідомлень Slack включають `send`, `upload-file`, `download-file`, `read`, `edit`, `delete`, `pin`, `unpin`, `list-pins`, `member-info` і `emoji-list`.
## Контроль доступу та маршрутизація
## Керування доступом і маршрутизація
<Tabs>
<Tab title="Політика DM">
`channels.slack.dmPolicy` керує доступом до DM (застаріле: `channels.slack.dm.policy`):
<Tab title="Політика особистих повідомлень">
`channels.slack.dmPolicy` керує доступом до особистих повідомлень (застаріле: `channels.slack.dm.policy`):
- `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` (групові DM типово false)
- `dm.groupEnabled` (групові особисті повідомлення типово false)
- `dm.groupChannels` (необов’язковий allowlist MPIM)
Пріоритет для кількох облікових записів:
Пріоритет для багатьох облікових записів:
- `channels.slack.accounts.default.allowFrom` застосовується лише до облікового запису `default`.
- Іменовані облікові записи успадковують `channels.slack.allowFrom`, якщо їхній власний `allowFrom` не задано.
- Іменовані облікові записи успадковують `channels.slack.allowFrom`, якщо їхній власний `allowFrom` не заданий.
- Іменовані облікові записи не успадковують `channels.slack.accounts.default.allowFrom`.
Пейринг у DM використовує `openclaw pairing approve slack <code>`.
Зіставлення в особистих повідомленнях використовує `openclaw pairing approve slack <code>`.
</Tab>
@ -388,28 +386,28 @@ openclaw gateway
- `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 DM визначаються під час запуску, якщо доступ токена це дозволяє
- невизначені записи імен каналів зберігаються як налаштовано, але типово ігноруються для маршрутизації
- вхідна авторизація та маршрутизація каналів типово працюють за принципом ID-first; пряме зіставлення імен користувачів/slugs потребує `channels.slack.dangerouslyAllowNameMatching: true`
- записи allowlist каналів і allowlist особистих повідомлень визначаються під час запуску, якщо доступ токена це дозволяє
- нерозв’язані записи імен каналів зберігаються як налаштовані, але типово ігноруються для маршрутизації
- авторизація вхідних подій і маршрутизація каналів типово орієнтовані на ID; пряме зіставлення за ім’ям користувача/slug вимагає `channels.slack.dangerouslyAllowNameMatching: true`
</Tab>
<Tab title="Згадки та користувачі каналів">
Повідомлення каналів типово обмежуються згадками.
Повідомлення в каналах типово обмежуються згадками.
Джерела згадок:
- явна згадка застосунку (`<@botId>`)
- шаблони regex для згадок (`agents.list[].groupChat.mentionPatterns`, резервне значення `messages.groupChat.mentionPatterns`)
- неявна поведінка reply-to-bot у треді
- шаблони regex для згадок (`agents.list[].groupChat.mentionPatterns`, резервно `messages.groupChat.mentionPatterns`)
- неявна поведінка відповіді в ланцюжку боту
Керування для окремого каналу (`channels.slack.channels.<id>`; імена лише через визначення під час запуску або `dangerouslyAllowNameMatching`):
Керування на рівні каналу (`channels.slack.channels.<id>`; імена лише через визначення під час запуску або `dangerouslyAllowNameMatching`):
- `requireMention`
- `users` (allowlist)
@ -417,33 +415,33 @@ openclaw gateway
- `skills`
- `systemPrompt`
- `tools`, `toolsBySender`
- формат ключа `toolsBySender`: `id:`, `e164:`, `username:`, `name:` або wildcard `"*"`
- формат ключа `toolsBySender`: `id:`, `e164:`, `username:`, `name:` або шаблон `"*"`
(застарілі ключі без префікса, як і раніше, зіставляються лише з `id:`)
</Tab>
</Tabs>
## Треди, сесії та теги відповідей
## Ланцюжки, сесії та теги відповіді
- DM маршрутизуються як `direct`; канали — як `channel`; MPIM — як `group`.
- За типового `session.dmScope=main` DM у Slack зводяться до основної сесії агента.
- Особисті повідомлення маршрутизуються як `direct`; канали — як `channel`; MPIM — як `group`.
- З типовим `session.dmScope=main` особисті повідомлення Slack згортаються в основну сесію агента.
- Сесії каналів: `agent:<agentId>:slack:channel:<channelId>`.
- Відповіді в тредах можуть створювати суфікси сесій тредів (`:thread:<threadTs>`) за потреби.
- Відповіді в ланцюжках можуть створювати суфікси сесій ланцюжків (`:thread:<threadTs>`), де це застосовно.
- Типове значення `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.dm.replyToMode`
Підтримуються ручні теги відповідей:
Підтримуються ручні теги відповіді:
- `[[reply_to_current]]`
- `[[reply_to:<id>]]`
Примітка: `replyToMode="off"` вимикає **усі** треди відповідей у Slack, включно з явними тегами `[[reply_to_*]]`. Це відрізняється від Telegram, де явні теги все одно враховуються в режимі `"off"`. Різниця відображає моделі тредів платформ: у Slack треди приховують повідомлення з каналу, тоді як у Telegram відповіді лишаються видимими в основному потоці чату.
Примітка: `replyToMode="off"` вимикає **усі** ланцюжки відповідей у Slack, зокрема явні теги `[[reply_to_*]]`. Це відрізняється від Telegram, де явні теги все одно враховуються в режимі `"off"`. Різниця відображає моделі ланцюжків на платформах: ланцюжки Slack приховують повідомлення з каналу, тоді як відповіді Telegram лишаються видимими в основному потоці чату.
## Реакції підтвердження
@ -458,25 +456,25 @@ openclaw gateway
Примітки:
- Slack очікує shortcodes (наприклад `"eyes"`).
- Slack очікує shortcodes (наприклад, `"eyes"`).
- Використовуйте `""`, щоб вимкнути реакцію для облікового запису Slack або глобально.
## Потокова передача тексту
## Потокове передавання тексту
`channels.slack.streaming` керує поведінкою живого попереднього перегляду:
`channels.slack.streaming` керує поведінкою попереднього перегляду в реальному часі:
- `off`: вимкнути потоковий живий попередній перегляд.
- `partial` (типово): замінювати текст попереднього перегляду найновішим частковим виводом.
- `block`: додавати шматки оновлень попереднього перегляду.
- `progress`: показувати текст статусу прогресу під час генерації, а потім надсилати фінальний текст.
- `off`: вимкнути потоковий попередній перегляд у реальному часі.
- `partial` (типово): замінювати текст попереднього перегляду останнім частковим виводом.
- `block`: додавати порційні оновлення попереднього перегляду.
- `progress`: показувати текст стану прогресу під час генерації, а потім надсилати остаточний текст.
`channels.slack.nativeStreaming` керує нативною потоковою передачею тексту Slack, коли `streaming` має значення `partial` (типово: `true`).
`channels.slack.nativeStreaming` керує нативним потоковим передаванням тексту Slack, коли `streaming` має значення `partial` (типово: `true`).
- Щоб з’явилася нативна потокова передача тексту, має бути доступний тред відповіді. Вибір треду й надалі визначається `replyToMode`. Без нього використовується звичайний чернетковий попередній перегляд.
- Медіа та нетекстові payload повертаються до звичайної доставки.
- Якщо потокова передача зламається посеред відповіді, OpenClaw повернеться до звичайної доставки для решти payload.
- Щоб відображалося нативне потокове передавання тексту, має бути доступний ланцюжок відповіді. Вибір ланцюжка все одно підпорядковується `replyToMode`. Без нього використовується звичайний чорновий попередній перегляд.
- Для медіа та нетекстових payload використовується звичайна доставка.
- Якщо потокове передавання переривається посеред відповіді, OpenClaw повертається до звичайної доставки для решти payload.
Використовуйте чернетковий попередній перегляд замість нативної потокової передачі тексту Slack:
Використовуйте чорновий попередній перегляд замість нативного потокового передавання тексту Slack:
```json5
{
@ -491,12 +489,12 @@ openclaw gateway
Застарілі ключі:
- `channels.slack.streamMode` (`replace | status_final | append`) автоматично мігрує до `channels.slack.streaming`.
- булеве `channels.slack.streaming` автоматично мігрує до `channels.slack.nativeStreaming`.
- `channels.slack.streamMode` (`replace | status_final | append`) автоматично мігрується в `channels.slack.streaming`.
- булеве `channels.slack.streaming` автоматично мігрується в `channels.slack.nativeStreaming`.
## Резервна реакція введення
## Резервна реакція друку
`typingReaction` додає тимчасову реакцію до вхідного повідомлення Slack, поки OpenClaw обробляє відповідь, а потім видаляє її після завершення виконання. Це найкорисніше поза відповідями в треді, де використовується типовий індикатор статусу "is typing...".
`typingReaction` додає тимчасову реакцію до вхідного повідомлення Slack, поки OpenClaw обробляє відповідь, а після завершення виконання прибирає її. Це найкорисніше поза відповідями в ланцюжках, де використовується типовий індикатор стану "is typing...".
Порядок визначення:
@ -505,52 +503,52 @@ openclaw gateway
Примітки:
- Slack очікує shortcodes (наприклад `"hourglass_flowing_sand"`).
- Реакція виконується за принципом best-effort, і після завершення відповіді або сценарію помилки автоматично робиться спроба очищення.
- Slack очікує shortcodes (наприклад, `"hourglass_flowing_sand"`).
- Реакція надсилається за принципом best-effort, а очищення автоматично намагається виконатися після завершення відповіді або сценарію помилки.
## Медіа, чанкування та доставка
## Медіа, розбиття на частини та доставка
<AccordionGroup>
<Accordion title="Вхідні вкладення">
Вкладені файли Slack завантажуються з приватних URL, розміщених у Slack (потік запитів з автентифікацією токеном), і записуються до сховища медіа, якщо отримання успішне й дозволяють обмеження розміру.
Вкладення файлів Slack завантажуються з приватних URL-адрес, розміщених у Slack (потік запитів з автентифікацією токеном), і записуються в сховище медіа, якщо отримання успішне та дозволяють обмеження розміру.
Типове обмеження розміру вхідних даних під час виконання — `20MB`, якщо його не перевизначено через `channels.slack.mediaMaxMb`.
Типове обмеження розміру вхідних даних під час виконання — `20MB`, якщо не перевизначено через `channels.slack.mediaMaxMb`.
</Accordion>
<Accordion title="Вихідний текст і файли">
- текстові чанки використовують `channels.slack.textChunkLimit` (типово 4000)
- `channels.slack.chunkMode="newline"` вмикає розбиття з пріоритетом абзаців
- надсилання файлів використовує API завантаження Slack і може включати відповіді в тредах (`thread_ts`)
- обмеження вихідних медіа дотримується `channels.slack.mediaMaxMb`, якщо налаштовано; інакше для надсилання в канали використовуються типові MIME-kind значення з медіапайплайна
- текстові частини використовують `channels.slack.textChunkLimit` (типово 4000)
- `channels.slack.chunkMode="newline"` вмикає розбиття спочатку за абзацами
- надсилання файлів використовує API завантаження Slack і може включати відповіді в ланцюжках (`thread_ts`)
- обмеження вихідних медіа задається `channels.slack.mediaMaxMb`, якщо налаштовано; інакше надсилання в канал використовує типові значення kind MIME з конвеєра медіа
</Accordion>
<Accordion title="Цілі доставки">
Бажані явні цілі:
- `user:<id>` для DM
- `user:<id>` для особистих повідомлень
- `channel:<id>` для каналів
DM у Slack відкриваються через API розмов Slack при надсиланні до цілей користувача.
Особисті повідомлення Slack відкриваються через API розмов Slack під час надсилання до цілей користувача.
</Accordion>
</AccordionGroup>
## Команди та поведінка слеш-команд
- Нативний автоматичний режим команд для Slack **вимкнено** (`commands.native: "auto"` не вмикає нативні команди Slack).
- Автоматичний режим нативних команд **вимкнений** для Slack (`commands.native: "auto"` не вмикає нативні команди Slack).
- Увімкніть нативні обробники команд Slack через `channels.slack.commands.native: true` (або глобально `commands.native: true`).
- Коли нативні команди увімкнені, зареєструйте відповідні слеш-команди у Slack (імена `/<command>`), з одним винятком:
- Коли нативні команди ввімкнені, зареєструйте відповідні слеш-команди в Slack (імена `/<command>`), з одним винятком:
- зареєструйте `/agentstatus` для команди status (Slack резервує `/status`)
- Якщо нативні команди не увімкнені, можна виконувати одну налаштовану слеш-команду через `channels.slack.slashCommand`.
- Нативні меню аргументів тепер адаптують стратегію рендерингу:
- Якщо нативні команди не ввімкнені, ви можете запускати одну налаштовану слеш-команду через `channels.slack.slashCommand`.
- Нативні меню аргументів тепер адаптують свою стратегію відображення:
- до 5 варіантів: блоки кнопок
- 6-100 варіантів: статичне меню вибору
- понад 100 варіантів: зовнішній вибір з асинхронною фільтрацією варіантів, якщо доступні обробники параметрів interactivity
- понад 100 варіантів: зовнішній вибір з асинхронним фільтруванням варіантів, якщо доступні обробники опцій interactivity
- якщо закодовані значення варіантів перевищують обмеження Slack, потік повертається до кнопок
- Для довгих payload варіантів меню аргументів слеш-команд використовують діалог підтвердження перед передаванням вибраного значення.
- Для довгих payload варіантів меню аргументів слеш-команд використовують діалог підтвердження перед відправленням вибраного значення.
Типові налаштування слеш-команд:
Типові параметри слеш-команд:
- `enabled: false`
- `name: "openclaw"`
@ -561,13 +559,13 @@ openclaw gateway
- `agent:<agentId>:slack:slash:<userId>`
і, як і раніше, маршрутизують виконання команди до цільової сесії розмови (`CommandTargetSessionKey`).
і все одно маршрутизують виконання команди до цільової сесії розмови (`CommandTargetSessionKey`).
## Інтерактивні відповіді
Slack може відображати інтерактивні елементи відповіді, створені агентом, але цю функцію типово вимкнено.
Slack може відображати інтерактивні елементи керування відповідями, створеними агентом, але ця функція типово вимкнена.
Увімкнути глобально:
Увімкніть її глобально:
```json5
{
@ -581,7 +579,7 @@ Slack може відображати інтерактивні елементи
}
```
Або ввімкнути лише для одного облікового запису Slack:
Або увімкніть її лише для одного облікового запису Slack:
```json5
{
@ -599,44 +597,43 @@ 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.
Примітки:
- Це UI, специфічний для Slack. Інші канали не перетворюють директиви Slack Block Kit на власні системи кнопок.
- Це UI, специфічний для Slack. Інші канали не перекладають директиви Slack Block Kit у власні системи кнопок.
- Значення інтерактивних callback — це непрозорі токени, згенеровані OpenClaw, а не сирі значення, створені агентом.
- Якщо згенеровані інтерактивні блоки перевищують ліміти Slack Block Kit, OpenClaw повертається до початкової текстової відповіді замість надсилання невалідного payload блоків.
- Якщо згенеровані інтерактивні блоки перевищують обмеження Slack Block Kit, OpenClaw повертається до початкової текстової відповіді замість надсилання недійсного payload blocks.
## Погодження exec у Slack
## Exec approvals у Slack
Slack може виступати нативним клієнтом погодження з інтерактивними кнопками та взаємодіями, замість повернення до Web UI або термінала.
Slack може працювати як нативний клієнт погодження з інтерактивними кнопками та взаємодіями замість повернення до Web UI або термінала.
- Погодження exec використовують `channels.slack.execApprovals.*` для нативної маршрутизації DM/каналів.
- Погодження plugin також можуть визначатися через ту саму нативну поверхню кнопок Slack, коли запит уже надходить у Slack і тип id погодження — `plugin:`.
- Авторизація того, хто погоджує, як і раніше, примусово перевіряється: лише користувачі, визначені як ті, хто погоджує, можуть схвалювати або відхиляти запити через Slack.
- Для нативної маршрутизації в особисті повідомлення/канали використовуються `channels.slack.execApprovals.*`.
- Погодження plugin також можуть визначатися через ту саму Slack-native поверхню кнопок, коли запит уже потрапляє в Slack і тип id погодження — `plugin:`.
- Авторизація погоджувача все одно застосовується: лише користувачі, визначені як approvers, можуть погоджувати або відхиляти запити через 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"` і визначається принаймні один
користувач, що погоджує. Установіть `enabled: false`, щоб явно вимкнути Slack як нативний клієнт погодження.
Установіть `enabled: true`, щоб примусово ввімкнути нативні погодження, коли користувачі, що погоджують, визначені.
Slack автоматично вмикає нативні exec approvals, коли `enabled` не задано або має значення `"auto"` і визначається принаймні один
approver. Установіть `enabled: false`, щоб явно вимкнути Slack як нативний клієнт погодження.
Установіть `enabled: true`, щоб примусово ввімкнути нативні погодження, коли approvers визначаються.
Типова поведінка без явної конфігурації погодження exec для Slack:
Типова поведінка без явної конфігурації Slack exec approval:
```json5
{
@ -646,8 +643,8 @@ Slack автоматично вмикає нативні погодження ex
}
```
Явна нативна конфігурація Slack потрібна лише тоді, коли ви хочете перевизначити список користувачів, що погоджують, додати фільтри або
вибрати доставку до чату-джерела:
Явна конфігурація Slack-native потрібна лише тоді, коли ви хочете перевизначити approvers, додати фільтри або
увімкнути доставку до початкового чату:
```json5
{
@ -663,24 +660,24 @@ Slack автоматично вмикає нативні погодження ex
}
```
Спільне переспрямування `approvals.exec` налаштовується окремо. Використовуйте його лише тоді, коли запити на погодження exec також мають
маршрутизуватися до інших чатів або явно заданих позасмугових цілей. Спільне переспрямування `approvals.plugin` також
налаштовується окремо; нативні кнопки Slack все одно можуть обробляти погодження plugin, коли такі запити вже надходять
у Slack.
Спільне переспрямування `approvals.exec` — окреме. Використовуйте його лише тоді, коли запити на exec approval також мають
маршрутизуватися до інших чатів або явно позасмугових цілей. Спільне переспрямування `approvals.plugin` також
окреме; Slack-native кнопки все одно можуть визначати plugin approvals, коли ці запити вже потрапляють
до Slack.
Команда `/approve` у тому самому чаті також працює в каналах і DM Slack, які вже підтримують команди. Повну модель переспрямування погоджень див. у [Погодження exec](/uk/tools/exec-approvals).
`/approve` у тому самому чаті також працює в каналах і особистих повідомленнях Slack, які вже підтримують команди. Повну модель переспрямування погоджень див. у [Exec approvals](/uk/tools/exec-approvals).
## Події та операційна поведінка
- Редагування/видалення повідомлень/розсилання тредів зіставляються із системними подіями.
- Події додавання/видалення реакцій зіставляються із системними подіями.
- Події входу/виходу учасників, створення/перейменування каналів і додавання/видалення закріплень зіставляються із системними подіями.
- Редагування/видалення повідомлень і thread broadcast зіставляються в системні події.
- Події додавання/видалення реакцій зіставляються в системні події.
- Події входу/виходу учасників, створення/перейменування каналів і додавання/видалення pin зіставляються в системні події.
- `channel_id_changed` може мігрувати ключі конфігурації каналів, коли ввімкнено `configWrites`.
- Метадані теми/призначення каналу вважаються недовіреним контекстом і можуть бути інжектовані в контекст маршрутизації.
- Ініціатор треду та початкове заповнення контексту історії треду фільтруються за налаштованими allowlist відправників, коли це застосовно.
- Дії блоків і взаємодії modal генерують структуровані системні події `Slack interaction: ...` із багатими полями payload:
- Метадані topic/purpose каналу вважаються недовіреним контекстом і можуть бути впроваджені в контекст маршрутизації.
- Початкова історія ланцюжка та заповнення контексту історії на початку ланцюжка фільтруються за налаштованими allowlist відправників, де це застосовно.
- Дії блоків і взаємодії modal створюють структуровані системні події `Slack interaction: ...` з насиченими полями payload:
- дії блоків: вибрані значення, мітки, значення picker і метадані `workflow_*`
- події modal `view_submission` і `view_closed` із маршрутними метаданими каналу та введеннями форми
- події modal `view_submission` і `view_closed` з маршрутизованими метаданими каналу та введеними даними форми
## Вказівники на довідник конфігурації
@ -689,11 +686,11 @@ Slack автоматично вмикає нативні погодження ex
- [Довідник конфігурації - Slack](/uk/gateway/configuration-reference#slack)
Високосигнальні поля Slack:
- режим/автентифікація: `mode`, `botToken`, `appToken`, `signingSecret`, `webhookPath`, `accounts.*`
- доступ до DM: `dm.enabled`, `dmPolicy`, `allowFrom` (застаріле: `dm.policy`, `dm.allowFrom`), `dm.groupEnabled`, `dm.groupChannels`
- перемикач сумісності: `dangerouslyAllowNameMatching` (аварійний варіант; залишайте вимкненим, якщо немає потреби)
- mode/auth: `mode`, `botToken`, `appToken`, `signingSecret`, `webhookPath`, `accounts.*`
- доступ до особистих повідомлень: `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`
@ -706,7 +703,7 @@ Slack автоматично вмикає нативні погодження ex
- `groupPolicy`
- allowlist каналів (`channels.slack.channels`)
- `requireMention`
- allowlist `users` для окремого каналу
- allowlist `users` для конкретного каналу
Корисні команди:
@ -718,12 +715,12 @@ openclaw doctor
</Accordion>
<Accordion title="Повідомлення DM ігноруються">
<Accordion title="Повідомлення в особистих повідомленнях ігноруються">
Перевірте:
- `channels.slack.dm.enabled`
- `channels.slack.dmPolicy` (або застаріле `channels.slack.dm.policy`)
- погодження пейрингу / записи allowlist
- погодження зіставлення / записи allowlist
```bash
openclaw pairing list slack
@ -732,12 +729,12 @@ openclaw pairing list slack
</Accordion>
<Accordion title="Socket mode не підключається">
Перевірте bot + app tokens і увімкнення Socket Mode в налаштуваннях застосунку Slack.
Перевірте bot token + app token і ввімкнення Socket Mode в налаштуваннях застосунку Slack.
Якщо `openclaw channels status --probe --json` показує `botTokenStatus` або
`appTokenStatus: "configured_unavailable"`, обліковий запис Slack
налаштовано, але поточне середовище виконання не змогло визначити значення,
яке використовує SecretRef.
яке зберігається через SecretRef.
</Accordion>
@ -749,26 +746,26 @@ openclaw pairing list slack
- Slack Request URLs (Events + Interactivity + Slash Commands)
- унікальний `webhookPath` для кожного HTTP-облікового запису
Якщо `signingSecretStatus: "configured_unavailable"` з’являється в знімках
Якщо `signingSecretStatus: "configured_unavailable"` з’являється у знімках
облікового запису, HTTP-обліковий запис налаштовано, але поточне середовище виконання не змогло
визначити signing secret, який використовує SecretRef.
визначити signing secret, який зберігається через SecretRef.
</Accordion>
<Accordion title="Нативні/slash-команди не спрацьовують">
<Accordion title="Нативні/слеш-команди не спрацьовують">
Перевірте, що саме ви мали на увазі:
- режим нативних команд (`channels.slack.commands.native: true`) з відповідними слеш-командами, зареєстрованими у Slack
- режим нативних команд (`channels.slack.commands.native: true`) з реєстрацією відповідних слеш-команд у Slack
- або режим однієї слеш-команди (`channels.slack.slashCommand.enabled: true`)
Також перевірте `commands.useAccessGroups` та allowlist каналів/користувачів.
Також перевірте `commands.useAccessGroups` і allowlist каналів/користувачів.
</Accordion>
</AccordionGroup>
## Пов’язане
## Пов’язані матеріали
- [Пейринг](/uk/channels/pairing)
- [Зіставлення](/uk/channels/pairing)
- [Групи](/uk/channels/groups)
- [Безпека](/uk/gateway/security)
- [Маршрутизація каналів](/uk/channels/channel-routing)