chore(i18n): refresh uk translations

This commit is contained in:
openclaw-docs-i18n[bot] 2026-04-05 20:48:22 +00:00
parent eb8babb460
commit 265134ef86
2 changed files with 855 additions and 767 deletions

View File

@ -1,29 +1,29 @@
---
read_when:
- Налаштування Slack або налагодження режиму socket/HTTP у Slack
summary: Налаштування Slack і поведінка під час виконання (Socket Mode + HTTP Events API)
summary: Налаштування Slack і поведінка під час роботи (Socket Mode + HTTP Events API)
title: Slack
x-i18n:
generated_at: "2026-04-05T17:59:56Z"
generated_at: "2026-04-05T20:43:34Z"
model: gpt-5.4
provider: openai
source_hash: efb37e1f04e1ac8ac3786c36ffc20013dacdc654bfa61e7f6e8df89c4902d2ab
source_hash: 7e4ff2ce7d92276d62f4f3d3693ddb56ca163d5fdc2f1082ff7ba3421fada69c
source_path: channels/slack.md
workflow: 15
---
# Slack
Статус: готово до використання у виробничому середовищі для DM і каналів через інтеграції застосунку Slack. Типовий режим — Socket Mode; також підтримується режим HTTP Events API.
Статус: готовий до використання у production для особистих повідомлень і каналів через інтеграції застосунку Slack. Типовий режим — Socket Mode; режим HTTP Events API також підтримується.
<CardGroup cols={3}>
<Card title="Pairing" icon="link" href="/channels/pairing">
Для DM у Slack типовим є режим pairing.
<Card title="Сполучення" icon="link" href="/uk/channels/pairing">
Особисті повідомлення Slack типово використовують режим сполучення.
</Card>
<Card title="Slash commands" icon="terminal" href="/tools/slash-commands">
Нативна поведінка команд і каталог команд.
<Card title="Slash-команди" icon="terminal" href="/uk/tools/slash-commands">
Вбудована поведінка команд і каталог команд.
</Card>
<Card title="Channel troubleshooting" icon="wrench" href="/channels/troubleshooting">
<Card title="Усунення проблем із каналами" icon="wrench" href="/uk/channels/troubleshooting">
Міжканальна діагностика та сценарії відновлення.
</Card>
</CardGroup>
@ -56,7 +56,7 @@ x-i18n:
}
```
Резервний варіант через змінні середовища (лише для типового облікового запису):
Резервне значення з env (лише для облікового запису за замовчуванням):
```bash
SLACK_APP_TOKEN=xapp-...
@ -65,7 +65,7 @@ SLACK_BOT_TOKEN=xoxb-...
</Step>
<Step title="Підпишіть застосунок на події">
<Step title="Підпишіть події застосунку">
Підпишіть події бота для:
- `app_mention`
@ -75,10 +75,10 @@ SLACK_BOT_TOKEN=xoxb-...
- `channel_rename`
- `pin_added`, `pin_removed`
Також увімкніть вкладку App Home **Messages Tab** для DM.
Також увімкніть **Messages Tab** у App Home для особистих повідомлень.
</Step>
<Step title="Запустіть шлюз">
<Step title="Запустіть gateway">
```bash
openclaw gateway
@ -95,11 +95,11 @@ openclaw gateway
- установіть режим HTTP (`channels.slack.mode="http"`)
- скопіюйте **Signing Secret** Slack
- установіть Request URL для Event Subscriptions + Interactivity + Slash command на той самий шлях webhook (типово `/slack/events`)
- установіть однаковий Request URL для Event Subscriptions, Interactivity і Slash command на той самий шлях webhook (типово `/slack/events`)
</Step>
<Step title="Налаштуйте режим HTTP в OpenClaw">
<Step title="Налаштуйте HTTP-режим OpenClaw">
```json5
{
@ -118,16 +118,16 @@ openclaw gateway
</Step>
<Step title="Використовуйте унікальні шляхи webhook для HTTP з кількома обліковими записами">
Підтримується режим HTTP для окремих облікових записів.
Режим HTTP для кількох облікових записів підтримується.
Призначте кожному обліковому запису окремий `webhookPath`, щоб реєстрації не конфліктували.
Надайте кожному обліковому запису окремий `webhookPath`, щоб реєстрації не конфліктували.
</Step>
</Steps>
</Tab>
</Tabs>
## Контрольний список маніфесту і scopes
## Контрольний список маніфесту та scope
<AccordionGroup>
<Accordion title="Приклад маніфесту застосунку Slack" defaultOpen>
@ -207,8 +207,8 @@ openclaw gateway
</Accordion>
<Accordion title="Необов’язкові scopes токена користувача (операції читання)">
Якщо ви налаштовуєте `channels.slack.userToken`, типовими scopes читання є:
<Accordion title="Необов'язкові scope токена користувача (операції читання)">
Якщо ви налаштовуєте `channels.slack.userToken`, типовими scope для читання є:
- `channels:history`, `groups:history`, `im:history`, `mpim:history`
- `channels:read`, `groups:read`, `im:read`, `mpim:read`
@ -216,178 +216,178 @@ openclaw gateway
- `reactions:read`
- `pins:read`
- `emoji:read`
- `search:read` (якщо ви покладаєтеся на читання пошуку Slack)
- `search:read` (якщо ви залежите від читання пошуку Slack)
</Accordion>
</AccordionGroup>
## Модель токенів
- Для Socket Mode потрібні `botToken` + `appToken`.
- Для режиму HTTP потрібні `botToken` + `signingSecret`.
- `botToken`, `appToken`, `signingSecret` і `userToken` приймають текстові
рядки або обєкти SecretRef.
- Токени з конфігурації мають пріоритет над резервним варіантом із середовища.
- Резервний варіант через змінні середовища `SLACK_BOT_TOKEN` / `SLACK_APP_TOKEN` застосовується лише до типового облікового запису.
- `userToken` (`xoxp-...`) задається лише в конфігурації (без резервного варіанта через середовище) і типово працює в режимі лише для читання (`userTokenReadOnly: true`).
- Необовязково: додайте `chat:write.customize`, якщо хочете, щоб вихідні повідомлення використовували активну ідентичність агента (власні `username` та іконку). `icon_emoji` використовує синтаксис `:emoji_name:`.
- `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:`.
Поведінка знімка статусу:
Поведінка знімка стану:
- Перевірка облікового запису Slack відстежує поля `*Source` і `*Status`
для кожного облікового запису (`botToken`, `appToken`, `signingSecret`, `userToken`).
для кожних облікових даних (`botToken`, `appToken`, `signingSecret`, `userToken`).
- Статус може бути `available`, `configured_unavailable` або `missing`.
- `configured_unavailable` означає, що обліковий запис налаштовано через SecretRef
або інше неінлайнове джерело секретів, але поточний шлях команди/виконання
або інше не-inline джерело секретів, але поточний шлях команди/виконання
не зміг визначити фактичне значення.
- У режимі HTTP включається `signingSecretStatus`; у Socket Mode
потрібною парою є `botTokenStatus` + `appTokenStatus`.
- У HTTP-режимі включається `signingSecretStatus`; у Socket Mode
обов'язковою парою є `botTokenStatus` + `appTokenStatus`.
<Tip>
Для дій/читання каталогу за наявності налаштування може надаватися перевага токену користувача. Для запису пріоритетним залишається токен бота; запис через токен користувача дозволено лише коли `userTokenReadOnly: false` і токен бота недоступний.
Для дій/читання каталогів за наявності налаштування може надаватися перевага токену користувача. Для запису пріоритетним лишається токен бота; запис через токен користувача дозволено лише коли `userTokenReadOnly: false` і токен бота недоступний.
</Tip>
## Дії та обмеження
Дії Slack керуються через `channels.slack.actions.*`.
Дії Slack контролюються через `channels.slack.actions.*`.
Доступні групи дій у поточному наборі інструментів Slack:
Доступні групи дій у поточному інструментарії Slack:
| Група | Типово |
| ---------- | -------- |
| Група | Типово |
| ---------- | ------- |
| messages | увімкнено |
| reactions | увімкнено |
| pins | увімкнено |
| memberInfo | увімкнено |
| emojiList | увімкнено |
Поточні дії для повідомлень Slack включають `send`, `upload-file`, `download-file`, `read`, `edit`, `delete`, `pin`, `unpin`, `list-pins`, `member-info` і `emoji-list`.
Поточні дії з повідомленнями 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.groupChannels` (необов’язковий список дозволу MPIM)
- `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`.
Pairing у DM використовує `openclaw pairing approve slack <code>`.
Сполучення в особистих повідомленнях використовує `openclaw pairing approve slack <code>`.
</Tab>
<Tab title="Політика каналів">
`channels.slack.groupPolicy` керує обробкою каналів:
`channels.slack.groupPolicy` контролює обробку каналів:
- `open`
- `allowlist`
- `disabled`
Список дозволу каналів розміщується в `channels.slack.channels` і має використовувати стабільні ID каналів.
Allowlist каналів міститься в `channels.slack.channels` і має використовувати стабільні ідентифікатори каналів.
Примітка під час виконання: якщо `channels.slack` повністю відсутній (налаштування лише через середовище), під час виконання використовується резервне значення `groupPolicy="allowlist"` і записується попередження в журнал (навіть якщо задано `channels.defaults.groupPolicy`).
Примітка щодо виконання: якщо `channels.slack` повністю відсутній (налаштування лише через env), під час виконання використовується `groupPolicy="allowlist"` і записується попередження в журнал (навіть якщо задано `channels.defaults.groupPolicy`).
Визначення імен/ID:
Визначення імен/ідентифікаторів:
- записи списку дозволу каналів і списку дозволу DM визначаються під час запуску, якщо доступ токена це дозволяє
- нерозпізнані записи з іменами каналів зберігаються як налаштовані, але типово ігноруються під час маршрутизації
- авторизація вхідних повідомлень і маршрутизація каналів типово виконуються за ID; пряме зіставлення за username/slug потребує `channels.slack.dangerouslyAllowNameMatching: true`
- записи allowlist каналів і записи allowlist особистих повідомлень визначаються під час запуску, якщо доступ токена це дозволяє
- нерозв'язані записи з іменами каналів зберігаються як налаштовані, але типово ігноруються для маршрутизації
- вхідна авторизація та маршрутизація каналів типово працюють за ідентифікаторами; пряме зіставлення за username/slug потребує `channels.slack.dangerouslyAllowNameMatching: true`
</Tab>
<Tab title="Згадування і користувачі каналів">
Повідомлення в каналах типово вимагають згадування.
<Tab title="Згадки та користувачі каналів">
Повідомлення в каналах типово обмежуються згадками.
Джерела згадувань:
Джерела згадок:
- явне згадування застосунку (`<@botId>`)
- regex-шаблони згадувань (`agents.list[].groupChat.mentionPatterns`, резервно `messages.groupChat.mentionPatterns`)
- неявна поведінка відповіді в треді на повідомлення бота
- явна згадка застосунку (`<@botId>`)
- шаблони regex для згадок (`agents.list[].groupChat.mentionPatterns`, резервне значення `messages.groupChat.mentionPatterns`)
- неявна поведінка reply-to-bot у треді
Керування для окремого каналу (`channels.slack.channels.<id>`; імена лише через визначення під час запуску або `dangerouslyAllowNameMatching`):
Керування для кожного каналу (`channels.slack.channels.<id>`; імена лише через визначення під час запуску або `dangerouslyAllowNameMatching`):
- `requireMention`
- `users` (список дозволу)
- `users` (allowlist)
- `allowBots`
- `skills`
- `systemPrompt`
- `tools`, `toolsBySender`
- формат ключів `toolsBySender`: `id:`, `e164:`, `username:`, `name:` або wildcard `"*"`
(застарілі ключі без префікса все ще зіставляються лише як `id:`)
- формат ключів `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` (типово `off`)
- `channels.slack.replyToMode`: `off|first|all|batched` (типово `off`)
- `channels.slack.replyToModeByChatType`: для `direct|group|channel`
- застарілий резервний варіант для прямих чатів: `channels.slack.dm.replyToMode`
- застаріле резервне значення для прямих чатів: `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 відповіді лишаються видимими в основному потоці чату.
## Реакції підтвердження
## Реакції-підтвердження
`ackReaction` надсилає емодзі-підтвердження, поки OpenClaw обробляє вхідне повідомлення.
`ackReaction` надсилає emoji-підтвердження, поки OpenClaw обробляє вхідне повідомлення.
Порядок визначення:
- `channels.slack.accounts.<accountId>.ackReaction`
- `channels.slack.ackReaction`
- `messages.ackReaction`
- резервний emoji з ідентичності агента (`agents.list[].identity.emoji`, інакше `"👀"`)
- резервне значення emoji ідентичності агента (`agents.list[].identity.emoji`, інакше "👀")
Примітки:
- Slack очікує shortcodes (наприклад, `"eyes"`).
- Slack очікує короткі коди (наприклад, `"eyes"`).
- Використовуйте `""`, щоб вимкнути реакцію для облікового запису Slack або глобально.
## Потокова передача тексту
`channels.slack.streaming` керує поведінкою live preview:
`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`. Без нього використовується звичайний чернетковий попередній перегляд.
- Медіа й нетекстові пейлоади переходять на звичайну доставку.
- Якщо потокова передача перерветься посеред відповіді, OpenClaw перейде на звичайну доставку для решти пейлоадів.
- Щоб з'явилася вбудована потокова передача тексту, має бути доступний тред відповіді. Вибір треду й далі визначається `replyToMode`. Без нього використовується звичайний чернетковий попередній перегляд.
- Для медіа та нетекстових payload використовується звичайна доставка.
- Якщо потокова передача переривається посеред відповіді, OpenClaw повертається до звичайної доставки для решти payload.
Використовуйте чернетковий попередній перегляд замість нативної потокової передачі тексту Slack:
Використовуйте чернетковий попередній перегляд замість вбудованої потокової передачі тексту Slack:
```json5
{
@ -402,12 +402,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 обробляє відповідь, а потім видаляє її після завершення виконання. Це особливо корисно поза відповідями в тредах, де використовується типовий індикатор стану "друкує...".
Порядок визначення:
@ -416,14 +416,14 @@ openclaw gateway
Примітки:
- Slack очікує shortcodes (наприклад, `"hourglass_flowing_sand"`).
- Реакція застосовується за принципом best-effort, а очищення автоматично намагається виконатися після відповіді або завершення шляху помилки.
- Slack очікує короткі коди (наприклад, `"hourglass_flowing_sand"`).
- Реакція виконується за принципом best-effort, а очищення автоматично намагається завершитися після відповіді або завершення шляху помилки.
## Медіа, розбиття на частини і доставка
## Медіа, розбиття на частини та доставка
<AccordionGroup>
<Accordion title="Вхідні вкладення">
Вкладення файлів Slack завантажуються з приватних URL, розміщених у Slack (потік запитів з автентифікацією токеном), і записуються до сховища медіа, якщо отримання успішне й обмеження розміру це дозволяють.
Вкладення файлів Slack завантажуються з приватних URL, розміщених у Slack (потік запитів з автентифікацією токеном), і записуються до сховища медіа, якщо отримання успішне та дозволяють обмеження за розміром.
Типове обмеження розміру вхідних даних під час виконання — `20MB`, якщо його не перевизначено через `channels.slack.mediaMaxMb`.
@ -431,35 +431,35 @@ openclaw gateway
<Accordion title="Вихідний текст і файли">
- текстові частини використовують `channels.slack.textChunkLimit` (типово 4000)
- `channels.slack.chunkMode="newline"` вмикає розбиття спочатку за абзацами
- `channels.slack.chunkMode="newline"` вмикає розбиття спершу за абзацами
- надсилання файлів використовує API завантаження Slack і може включати відповіді в тредах (`thread_ts`)
- обмеження вихідних медіа визначається `channels.slack.mediaMaxMb`, якщо задано; інакше надсилання в каналі використовує типові значення MIME-kind з медіаконвеєра
- обмеження вихідних медіа визначається через `channels.slack.mediaMaxMb`, якщо налаштовано; інакше надсилання в канали використовує типові MIME-обмеження з медіаконвеєра
</Accordion>
<Accordion title="Цілі доставки">
Рекомендовані явні цілі:
- `user:<id>` для DM
- `user:<id>` для особистих повідомлень
- `channel:<id>` для каналів
DM у Slack відкриваються через API розмов Slack під час надсилання до цілей користувачів.
Особисті повідомлення Slack відкриваються через API розмов Slack під час надсилання до цілей користувача.
</Accordion>
</AccordionGroup>
## Команди і поведінка slash
## Команди та поведінка slash-команд
- Нативний автоматичний режим команд у Slack **вимкнено** (`commands.native: "auto"` не вмикає нативні команди Slack).
- Увімкніть нативні обробники команд Slack через `channels.slack.commands.native: true` (або глобально `commands.native: true`).
- Коли нативні команди ввімкнено, зареєструйте відповідні slash-команди в Slack (імена `/<command>`), з одним винятком:
- зареєструйте `/agentstatus` для команди status (Slack резервує `/status`)
- Якщо нативні команди не ввімкнено, ви можете запускати одну налаштовану slash-команду через `channels.slack.slashCommand`.
- Меню нативних аргументів тепер адаптують свою стратегію відображення:
- до 5 варіантів: кнопкові блоки
- Вбудований автоматичний режим команд для Slack **вимкнено** (`commands.native: "auto"` не вмикає вбудовані команди Slack).
- Увімкніть вбудовані обробники команд Slack через `channels.slack.commands.native: true` (або глобально `commands.native: true`).
- Коли вбудовані команди ввімкнено, зареєструйте відповідні slash-команди в Slack (імена `/<command>`), з одним винятком:
- зареєструйте `/agentstatus` для команди стану (Slack резервує `/status`)
- Якщо вбудовані команди не ввімкнено, ви можете виконувати одну налаштовану slash-команду через `channels.slack.slashCommand`.
- Вбудовані меню аргументів тепер адаптують свою стратегію відображення:
- до 5 варіантів: блоки кнопок
- 6-100 варіантів: статичне меню вибору
- понад 100 варіантів: зовнішній вибір з асинхронною фільтрацією варіантів, якщо доступні обробники параметрів interactivity
- якщо закодовані значення варіантів перевищують обмеження Slack, потік переходить на кнопки
- Для довгих пейлоадів варіантів меню аргументів slash-команд використовують діалог підтвердження перед надсиланням вибраного значення.
- більше 100 варіантів: зовнішній вибір з асинхронною фільтрацією варіантів, якщо доступні обробники параметрів interactivity
- якщо закодовані значення варіантів перевищують ліміти Slack, потік повертається до кнопок
- Для довгих payload варіантів меню аргументів slash-команд використовують діалог підтвердження перед передачею вибраного значення.
Типові параметри slash-команд:
@ -468,15 +468,15 @@ openclaw gateway
- `sessionPrefix: "slack:slash"`
- `ephemeral: true`
Для slash-сесій використовуються ізольовані ключі:
Сесії slash-команд використовують ізольовані ключі:
- `agent:<agentId>:slack:slash:<userId>`
і виконання команд усе одно маршрутизується щодо сесії цільової розмови (`CommandTargetSessionKey`).
і все одно спрямовують виконання команд до сесії цільової розмови (`CommandTargetSessionKey`).
## Інтерактивні відповіді
Slack може відображати інтерактивні елементи керування відповідями, створеними агентом, але цю можливість типово вимкнено.
Slack може відображати інтерактивні елементи відповідей, створених агентом, але ця функція типово вимкнена.
Увімкніть її глобально:
@ -492,7 +492,7 @@ Slack може відображати інтерактивні елементи
}
```
Або ввімкніть лише для одного облікового запису Slack:
Або увімкніть лише для одного облікового запису Slack:
```json5
{
@ -510,43 +510,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 у власні системи кнопок.
- Значення інтерактивних callback — це непрозорі токени, згенеровані OpenClaw, а не необроблені значення, створені агентом.
- Якщо згенеровані інтерактивні блоки перевищать обмеження Slack Block Kit, OpenClaw повернеться до початкової текстової відповіді замість надсилання недійсного пейлоада blocks.
- Значення інтерактивних callback — це непрозорі токени, згенеровані OpenClaw, а не сирі значення, створені агентом.
- Якщо згенеровані інтерактивні блоки перевищують обмеження Slack Block Kit, OpenClaw повертається до початкової текстової відповіді замість надсилання невалідного payload blocks.
## Підтвердження exec у Slack
Slack може виступати як нативний клієнт підтвердження з інтерактивними кнопками і взаємодіями замість резервного переходу до Web UI або термінала.
Slack може виступати як вбудований клієнт підтвердження з інтерактивними кнопками та взаємодіями замість повернення до Web UI або термінала.
- Підтвердження exec використовують `channels.slack.execApprovals.*` для нативної маршрутизації DM/каналу.
- Підтвердження плагінів усе ще можуть визначатися через ту саму нативну поверхню кнопок Slack, коли запит уже надходить у Slack, а тип ідентифікатора підтвердження — `plugin:`.
- Авторизація тих, хто підтверджує, як і раніше, примусово застосовується: лише користувачі, визначені як approvers, можуть схвалювати або відхиляти запити через Slack.
- Підтвердження exec використовують `channels.slack.execApprovals.*` для вбудованої маршрутизації в особисті повідомлення/канали.
- Підтвердження plugin також можуть визначатися через ту саму вбудовану поверхню кнопок Slack, коли запит уже надходить у Slack, а тип ідентифікатора підтвердження — `plugin:`.
- Авторизація затверджувачів і далі примусово застосовується: лише користувачі, визначені як затверджувачі, можуть схвалювати або відхиляти запити через Slack.
Для цього використовується та сама спільна поверхня кнопок підтвердження, що й для інших каналів. Якщо у ваших налаштуваннях застосунку Slack увімкнено `interactivity`, запити на підтвердження відображаються як кнопки Block Kit безпосередньо в розмові.
Для цього використовується та сама спільна поверхня кнопок підтвердження, що й для інших каналів. Коли у налаштуваннях застосунку Slack увімкнено `interactivity`, запити на підтвердження відображаються як кнопки 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 +556,8 @@ approver. Установіть `enabled: false`, щоб явно вимкнут
}
```
Явна нативна конфігурація Slack потрібна лише тоді, коли ви хочете перевизначити approvers, додати фільтри або
вибрати доставку в чат походження:
Явна вбудована конфігурація Slack потрібна лише тоді, коли ви хочете перевизначити затверджувачів, додати фільтри або
використовувати доставку в початковий чат:
```json5
{
@ -573,50 +573,50 @@ approver. Установіть `enabled: false`, щоб явно вимкнут
}
```
Спільне переспрямування `approvals.exec` налаштовується окремо. Використовуйте його лише тоді, коли запити на підтвердження exec також мають
маршрутизуватися до інших чатів або явних позасмугових цілей. Спільне переспрямування `approvals.plugin` також
налаштовується окремо; нативні кнопки Slack все одно можуть визначати підтвердження плагінів, коли ці запити вже надходять
Спільне переспрямування `approvals.exec` є окремим. Використовуйте його лише тоді, коли запити на підтвердження exec також мають
маршрутизуватися до інших чатів або явно позасмугових цілей. Спільне переспрямування `approvals.plugin` також є
окремим; вбудовані кнопки Slack все одно можуть визначати підтвердження plugin, коли ці запити вже надходять
у Slack.
Команда `/approve` у тому самому чаті також працює в каналах і DM Slack, які вже підтримують команди. Повну модель переспрямування підтверджень див. в [Підтвердження exec](/tools/exec-approvals).
У Slack-каналах і особистих повідомленнях, які вже підтримують команди, також працює `/approve` у тому самому чаті. Повну модель переспрямування підтверджень див. у [Підтвердження exec](/uk/tools/exec-approvals).
## Події та робоча поведінка
## Події та поведінка під час роботи
- Редагування/видалення повідомлень/розсилання тредів зіставляються із системними подіями.
- Події додавання/видалення реакцій зіставляються із системними подіями.
- Події приєднання/виходу учасників, створення/перейменування каналу та додавання/видалення pin зіставляються із системними подіями.
- `channel_id_changed` може мігрувати ключі конфігурації каналу, коли ввімкнено `configWrites`.
- Метадані теми/призначення каналу вважаються недовіреним контекстом і можуть додаватися до контексту маршрутизації.
- Початкове повідомлення треду та початкове заповнення контексту історії треду фільтруються за налаштованими списками дозволу відправників там, де це застосовно.
- Дії блоків і взаємодії з modal створюють структуровані системні події `Slack interaction: ...` з розширеними полями пейлоада:
- дії блоків: вибрані значення, мітки, значення вибору та метадані `workflow_*`
- події modal `view_submission` і `view_closed` з маршрутизованими метаданими каналу та введеними даними форми
- Редагування/видалення повідомлень і thread broadcast відображаються в системні події.
- Події додавання/видалення реакцій відображаються в системні події.
- Події входу/виходу учасників, створення/перейменування каналу та додавання/видалення закріплень відображаються в системні події.
- `channel_id_changed` може мігрувати ключі конфігурації каналу, якщо ввімкнено `configWrites`.
- Метадані topic/purpose каналу вважаються недовіреним контекстом і можуть бути впроваджені в контекст маршрутизації.
- Початкове повідомлення треду та початкове заповнення контексту історії треду фільтруються за налаштованими allowlist відправників, якщо це застосовно.
- Дії блоків і взаємодії модальних вікон створюють структуровані системні події `Slack interaction: ...` із розширеними полями payload:
- дії блоків: вибрані значення, мітки, значення picker і метадані `workflow_*`
- події модальних вікон `view_submission` і `view_closed` з маршрутованими метаданими каналу та полями форм
## Вказівники на довідник конфігурації
Основний довідник:
- [Довідник конфігурації - Slack](/gateway/configuration-reference#slack)
- [Довідник конфігурації - 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` (аварійний варіант; залишайте вимкненим, якщо немає потреби)
Найважливіші поля Slack:
- 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`
- доставка: `textChunkLimit`, `chunkMode`, `mediaMaxMb`, `streaming`, `nativeStreaming`
- операції/можливості: `configWrites`, `commands.native`, `slashCommand.*`, `actions.*`, `userToken`, `userTokenReadOnly`
## Усунення несправностей
## Усунення проблем
<AccordionGroup>
<Accordion title="Немає відповідей у каналах">
Перевірте в такому порядку:
- `groupPolicy`
- список дозволу каналів (`channels.slack.channels`)
- allowlist каналів (`channels.slack.channels`)
- `requireMention`
- список дозволу `users` для окремого каналу
- allowlist `users` для конкретного каналу
Корисні команди:
@ -628,12 +628,12 @@ openclaw doctor
</Accordion>
<Accordion title="Повідомлення DM ігноруються">
<Accordion title="Повідомлення в особистих повідомленнях ігноруються">
Перевірте:
- `channels.slack.dm.enabled`
- `channels.slack.dmPolicy` (або застаріле `channels.slack.dm.policy`)
- схвалення pairing / записи списку дозволу
- підтвердження сполучення / записи allowlist
```bash
openclaw pairing list slack
@ -642,46 +642,46 @@ openclaw pairing list slack
</Accordion>
<Accordion title="Режим Socket не підключається">
Перевірте токени бота й застосунку та ввімкнення Socket Mode в налаштуваннях застосунку Slack.
Перевірте токени бота й застосунку та увімкнення Socket Mode в налаштуваннях застосунку Slack.
Якщо `openclaw channels status --probe --json` показує `botTokenStatus` або
`appTokenStatus: "configured_unavailable"`, обліковий запис Slack
налаштовано, але поточне виконання не змогло визначити значення,
що підтримується SecretRef.
налаштовано, але поточне середовище виконання не змогло визначити значення,
що зберігається через SecretRef.
</Accordion>
<Accordion title="Режим HTTP не отримує події">
<Accordion title="HTTP-режим не отримує події">
Перевірте:
- signing secret
- шлях webhook
- Request URL Slack (Events + Interactivity + Slash Commands)
- Slack Request URL (Events + Interactivity + Slash Commands)
- унікальний `webhookPath` для кожного HTTP-облікового запису
Якщо `signingSecretStatus: "configured_unavailable"` з’являється в знімках
облікового запису, обліковий запис HTTP налаштовано, але поточне виконання не змогло
визначити signing secret, що підтримується SecretRef.
Якщо `signingSecretStatus: "configured_unavailable"` з'являється у знімках
облікового запису, HTTP-обліковий запис налаштовано, але поточне середовище виконання не змогло
визначити signing secret, що зберігається через SecretRef.
</Accordion>
<Accordion title="Нативні/slash-команди не спрацьовують">
Перевірте, чи ви мали на увазі:
<Accordion title="Вбудовані/slash-команди не спрацьовують">
Перевірте, що саме ви мали на увазі:
- режим нативних команд (`channels.slack.commands.native: true`) із відповідними slash-командами, зареєстрованими в Slack
- режим вбудованих команд (`channels.slack.commands.native: true`) з відповідними зареєстрованими в Slack slash-командами
- або режим однієї slash-команди (`channels.slack.slashCommand.enabled: true`)
Також перевірте `commands.useAccessGroups` і списки дозволу каналу/користувачів.
Також перевірте `commands.useAccessGroups` і allowlist каналів/користувачів.
</Accordion>
</AccordionGroup>
## Повязане
## Пов'язане
- [Pairing](/channels/pairing)
- [Групи](/channels/groups)
- [Безпека](/gateway/security)
- [Маршрутизація каналів](/channels/channel-routing)
- [Усунення несправностей](/channels/troubleshooting)
- [Конфігурація](/gateway/configuration)
- [Slash commands](/tools/slash-commands)
- [Сполучення](/uk/channels/pairing)
- [Групи](/uk/channels/groups)
- [Безпека](/uk/gateway/security)
- [Маршрутизація каналів](/uk/channels/channel-routing)
- [Усунення проблем](/uk/channels/troubleshooting)
- [Конфігурація](/uk/gateway/configuration)
- [Slash-команди](/uk/tools/slash-commands)

File diff suppressed because it is too large Load Diff