chore(i18n): refresh uk translations

This commit is contained in:
openclaw-docs-i18n[bot] 2026-04-07 00:08:10 +00:00
parent c7cfc51cea
commit f5b7665002

View File

@ -1,29 +1,29 @@
---
read_when:
- Налаштування Slack або налагодження режиму socket/HTTP у Slack
- Налаштування Slack або налагодження режиму Slack socket/HTTP
summary: Налаштування Slack і поведінка під час виконання (Socket Mode + HTTP Request URLs)
title: Slack
x-i18n:
generated_at: "2026-04-06T09:17:31Z"
generated_at: "2026-04-07T00:08:10Z"
model: gpt-5.4
provider: openai
source_hash: 11571e7e10cfbf4de91dc1b1ed6582cd94afdcf6c3356fdd3ccc770096c6dd31
source_hash: 2b8fd2cc6c638ee82069f0af2c2b6f6f49c87da709b941433a0343724a9907ea
source_path: channels/slack.md
workflow: 15
---
# Slack
Статус: готовий до продакшену для особистих повідомлень і каналів через інтеграції застосунку Slack. Типовий режим — Socket Mode; HTTP Request URLs також підтримуються.
Статус: готово до продакшну для приватних повідомлень і каналів через інтеграції застосунку Slack. Типовий режим — Socket Mode; HTTP Request URLs також підтримуються.
<CardGroup cols={3}>
<Card title="Зіставлення" icon="link" href="/uk/channels/pairing">
Особисті повідомлення Slack типово працюють у режимі зіставлення.
<Card title="Сполучення" icon="link" href="/uk/channels/pairing">
Приватні повідомлення Slack типово працюють у режимі сполучення.
</Card>
<Card title="Слеш-команди" icon="terminal" href="/uk/tools/slash-commands">
<Card title="Slash-команди" icon="terminal" href="/uk/tools/slash-commands">
Нативна поведінка команд і каталог команд.
</Card>
<Card title="Усунення несправностей каналів" icon="wrench" href="/uk/channels/troubleshooting">
<Card title="Усунення проблем із каналами" icon="wrench" href="/uk/channels/troubleshooting">
Міжканальна діагностика та сценарії відновлення.
</Card>
</CardGroup>
@ -36,8 +36,8 @@ x-i18n:
<Step title="Створіть новий застосунок Slack">
У налаштуваннях застосунку Slack натисніть кнопку **[Create New App](https://api.slack.com/apps/new)**:
- виберіть **from a manifest** і виберіть робочу область для свого застосунку
- вставте [приклад маніфесту](#manifest-and-scope-checklist) нижче й продовжуйте створення
- виберіть **from a manifest** і виберіть робочий простір для вашого застосунку
- вставте [приклад manifest](#manifest-and-scope-checklist) нижче та продовжте створення
- згенеруйте **App-Level Token** (`xapp-...`) з `connections:write`
- установіть застосунок і скопіюйте показаний **Bot Token** (`xoxb-...`)
</Step>
@ -57,7 +57,7 @@ x-i18n:
}
```
Резервне значення через env (лише для типового облікового запису):
Резервне джерело через env (лише для типового облікового запису):
```bash
SLACK_APP_TOKEN=xapp-...
@ -82,8 +82,8 @@ openclaw gateway
<Step title="Створіть новий застосунок Slack">
У налаштуваннях застосунку Slack натисніть кнопку **[Create New App](https://api.slack.com/apps/new)**:
- виберіть **from a manifest** і виберіть робочу область для свого застосунку
- вставте [приклад маніфесту](#manifest-and-scope-checklist) і оновіть URL-адреси перед створенням
- виберіть **from a manifest** і виберіть робочий простір для вашого застосунку
- вставте [приклад manifest](#manifest-and-scope-checklist) і оновіть URL-адреси перед створенням
- збережіть **Signing Secret** для перевірки запитів
- установіть застосунок і скопіюйте показаний **Bot Token** (`xoxb-...`)
@ -125,7 +125,7 @@ openclaw gateway
</Tab>
</Tabs>
## Контрольний список маніфесту та scope
## Контрольний список manifest і scope
<Tabs>
<Tab title="Socket Mode (типово)">
@ -291,12 +291,12 @@ openclaw gateway
<AccordionGroup>
<Accordion title="Необов’язкові scopes авторства (операції запису)">
Додайте bot scope `chat:write.customize`, якщо хочете, щоб вихідні повідомлення використовували ідентичність активного агента (власне ім’я користувача та піктограму) замість типової ідентичності застосунку Slack.
Додайте bot scope `chat:write.customize`, якщо хочете, щоб вихідні повідомлення використовували ідентичність активного агента (власне ім’я користувача та значок) замість типової ідентичності застосунку Slack.
Якщо ви використовуєте піктограму emoji, Slack очікує синтаксис `:emoji_name:`.
Якщо ви використовуєте значок emoji, Slack очікує синтаксис `:emoji_name:`.
</Accordion>
<Accordion title="Необов’язкові scopes токена користувача (операції читання)">
Якщо ви налаштовуєте `channels.slack.userToken`, типовими scope для читання є:
<Accordion title="Необов’язкові scopes user token (операції читання)">
Якщо ви налаштовуєте `channels.slack.userToken`, типовими scopes для читання є:
- `channels:history`, `groups:history`, `im:history`, `mpim:history`
- `channels:read`, `groups:read`, `im:read`, `mpim:read`
@ -304,7 +304,7 @@ openclaw gateway
- `reactions:read`
- `pins:read`
- `emoji:read`
- `search:read` (якщо ви залежите від читання через пошук Slack)
- `search:read` (якщо ви залежите від читання через Slack search)
</Accordion>
</AccordionGroup>
@ -312,31 +312,31 @@ openclaw gateway
## Модель токенів
- `botToken` + `appToken` обов’язкові для Socket Mode.
- Режим HTTP вимагає `botToken` + `signingSecret`.
- Для режиму HTTP потрібні `botToken` + `signingSecret`.
- `botToken`, `appToken`, `signingSecret` і `userToken` приймають відкриті
рядки або об’єкти SecretRef.
- Токени в конфігурації мають пріоритет над резервними значеннями env.
- Резервні значення env `SLACK_BOT_TOKEN` / `SLACK_APP_TOKEN` застосовуються лише до типового облікового запису.
- `userToken` (`xoxp-...`) задається лише в конфігурації (без резервного значення env) і типово працює в режимі лише для читання (`userTokenReadOnly: true`).
- Токени в конфігурації мають пріоритет над резервним джерелом через env.
- Резервне джерело через env `SLACK_BOT_TOKEN` / `SLACK_APP_TOKEN` застосовується лише до типового облікового запису.
- `userToken` (`xoxp-...`) доступний лише в конфігурації (без резервного джерела через env) і типово працює в режимі лише для читання (`userTokenReadOnly: true`).
Поведінка знімка стану:
Поведінка знімка статусу:
- Перевірка облікового запису Slack відстежує поля `*Source` і `*Status`
для кожних облікових даних (`botToken`, `appToken`, `signingSecret`, `userToken`).
для кожного облікового запису (`botToken`, `appToken`, `signingSecret`, `userToken`).
- Статус може бути `available`, `configured_unavailable` або `missing`.
- `configured_unavailable` означає, що обліковий запис налаштовано через SecretRef
або інше не-inline джерело секретів, але поточний шлях команди/виконання
або інше не вбудоване джерело секрету, але поточна команда/шлях виконання
не зміг визначити фактичне значення.
- У режимі HTTP включається `signingSecretStatus`; у Socket Mode
обов’язковою парою є `botTokenStatus` + `appTokenStatus`.
<Tip>
Для читання дій/каталогів перевага може надаватися токену користувача, якщо його налаштовано. Для запису пріоритет зберігається за bot token; запис через токен користувача дозволено лише коли `userTokenReadOnly: false` і bot token недоступний.
Для дій/читання каталогу user token може мати пріоритет, якщо його налаштовано. Для запису bot token залишається пріоритетним; запис через user token дозволено лише коли `userTokenReadOnly: false` і bot token недоступний.
</Tip>
## Дії та обмеження
Діями Slack керує `channels.slack.actions.*`.
Дії Slack контролюються через `channels.slack.actions.*`.
Доступні групи дій у поточному інструментарії Slack:
@ -348,34 +348,34 @@ openclaw gateway
| 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="Політика особистих повідомлень">
`channels.slack.dmPolicy` керує доступом до особистих повідомлень (застаріле: `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.enabled` (типово true)
- `channels.slack.allowFrom` (рекомендовано)
- `dm.allowFrom` (застаріле)
- `dm.groupEnabled` (групові особисті повідомлення типово 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`.
Зіставлення в особистих повідомленнях використовує `openclaw pairing approve slack <code>`.
Для сполучення в приватних повідомленнях використовується `openclaw pairing approve slack <code>`.
</Tab>
@ -386,15 +386,15 @@ 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 особистих повідомлень визначаються під час запуску, якщо доступ токена це дозволяє
- нерозв’язані записи імен каналів зберігаються як налаштовані, але типово ігноруються для маршрутизації
- авторизація вхідних подій і маршрутизація каналів типово орієнтовані на ID; пряме зіставлення за ім’ям користувача/slug вимагає `channels.slack.dangerouslyAllowNameMatching: true`
- записи allowlist каналів і allowlist приватних повідомлень визначаються під час запуску, якщо доступ токена це дозволяє
- записи з невизначеними іменами каналів зберігаються як налаштовані, але типово ігноруються для маршрутизації
- вхідна авторизація та маршрутизація каналів типово орієнтовані на ID; пряме зіставлення за ім’ям користувача/slug потребує `channels.slack.dangerouslyAllowNameMatching: true`
</Tab>
@ -405,9 +405,9 @@ openclaw gateway
- явна згадка застосунку (`<@botId>`)
- шаблони regex для згадок (`agents.list[].groupChat.mentionPatterns`, резервно `messages.groupChat.mentionPatterns`)
- неявна поведінка відповіді в ланцюжку боту
- неявна поведінка reply-to-bot у тредах (вимикається, коли `thread.requireExplicitMention` має значення `true`)
Керування на рівні каналу (`channels.slack.channels.<id>`; імена лише через визначення під час запуску або `dangerouslyAllowNameMatching`):
Елементи керування для кожного каналу (`channels.slack.channels.<id>`; імена лише через визначення під час запуску або `dangerouslyAllowNameMatching`):
- `requireMention`
- `users` (allowlist)
@ -415,35 +415,36 @@ openclaw gateway
- `skills`
- `systemPrompt`
- `tools`, `toolsBySender`
- формат ключа `toolsBySender`: `id:`, `e164:`, `username:`, `name:` або шаблон `"*"`
(застарілі ключі без префікса, як і раніше, зіставляються лише з `id:`)
- формат ключів `toolsBySender`: `id:`, `e164:`, `username:`, `name:` або шаблон `"*"`
(застарілі ключі без префікса все ще зіставляються лише з `id:`)
</Tab>
</Tabs>
## Ланцюжки, сесії та теги відповіді
## Треди, сесії та теги reply
- Особисті повідомлення маршрутизуються як `direct`; канали — як `channel`; MPIM — як `group`.
- З типовим `session.dmScope=main` особисті повідомлення 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.thread.requireExplicitMention` (типово `false`): коли має значення `true`, пригнічує неявні згадки в тредах, тож бот відповідає лише на явні згадки `@bot` усередині тредів, навіть якщо бот уже брав участь у треді. Без цього відповіді в треді, де брав участь бот, обходять обмеження `requireMention`.
Параметри ланцюжків відповідей:
Елементи керування тредами відповідей:
- `channels.slack.replyToMode`: `off|first|all|batched` (типово `off`)
- `channels.slack.replyToModeByChatType`: для кожного `direct|group|channel`
- застаріле резервне значення для прямих чатів: `channels.slack.dm.replyToMode`
Підтримуються ручні теги відповіді:
Підтримуються ручні теги reply:
- `[[reply_to_current]]`
- `[[reply_to:<id>]]`
Примітка: `replyToMode="off"` вимикає **усі** ланцюжки відповідей у Slack, зокрема явні теги `[[reply_to_*]]`. Це відрізняється від Telegram, де явні теги все одно враховуються в режимі `"off"`. Різниця відображає моделі ланцюжків на платформах: ланцюжки Slack приховують повідомлення з каналу, тоді як відповіді Telegram лишаються видимими в основному потоці чату.
Примітка: `replyToMode="off"` вимикає **усі** треди відповідей у Slack, включно з явними тегами `[[reply_to_*]]`. Це відрізняється від Telegram, де явні теги все одно враховуються в режимі `"off"`. Різниця відображає моделі тредів платформ: у Slack треди приховують повідомлення з каналу, тоді як у Telegram replies залишаються видимими в основному потоці чату.
## Реакції підтвердження
## Ack-реакції
`ackReaction` надсилає emoji-підтвердження, поки OpenClaw обробляє вхідне повідомлення.
@ -452,29 +453,29 @@ openclaw gateway
- `channels.slack.accounts.<accountId>.ackReaction`
- `channels.slack.ackReaction`
- `messages.ackReaction`
- резервне значення emoji ідентичності агента (`agents.list[].identity.emoji`, інакше `"👀"`)
- резервне значення emoji з ідентичності агента (`agents.list[].identity.emoji`, інакше "👀")
Примітки:
- Slack очікує shortcodes (наприклад, `"eyes"`).
- Використовуйте `""`, щоб вимкнути реакцію для облікового запису Slack або глобально.
## Потокове передавання тексту
## Потокова передача тексту
`channels.slack.streaming` керує поведінкою попереднього перегляду в реальному часі:
`channels.slack.streaming` керує поведінкою live preview:
- `off`: вимкнути потоковий попередній перегляд у реальному часі.
- `off`: вимкнути live preview streaming.
- `partial` (типово): замінювати текст попереднього перегляду останнім частковим виводом.
- `block`: додавати порційні оновлення попереднього перегляду.
- `progress`: показувати текст стану прогресу під час генерації, а потім надсилати остаточний текст.
- `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
{
@ -489,12 +490,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`.
## Резервна реакція друку
## Резервний варіант з typing reaction
`typingReaction` додає тимчасову реакцію до вхідного повідомлення Slack, поки OpenClaw обробляє відповідь, а після завершення виконання прибирає її. Це найкорисніше поза відповідями в ланцюжках, де використовується типовий індикатор стану "is typing...".
`typingReaction` додає тимчасову реакцію до вхідного повідомлення Slack, поки OpenClaw обробляє відповідь, а потім видаляє її після завершення виконання. Це найкорисніше поза відповідями в тредах, де використовується типовий індикатор стану "is typing...".
Порядок визначення:
@ -504,66 +505,66 @@ openclaw gateway
Примітки:
- Slack очікує shortcodes (наприклад, `"hourglass_flowing_sand"`).
- Реакція надсилається за принципом best-effort, а очищення автоматично намагається виконатися після завершення відповіді або сценарію помилки.
- Реакція надсилається за принципом best-effort, а очищення автоматично намагається виконатися після відповіді або завершення шляху помилки.
## Медіа, розбиття на частини та доставка
<AccordionGroup>
<Accordion title="Вхідні вкладення">
Вкладення файлів Slack завантажуються з приватних URL-адрес, розміщених у Slack (потік запитів з автентифікацією токеном), і записуються в сховище медіа, якщо отримання успішне та дозволяють обмеження розміру.
Файлові вкладення Slack завантажуються з приватних URL-адрес, розміщених у Slack (потік запитів з автентифікацією токеном), і записуються до сховища медіа, якщо отримання успішне та дозволяють обмеження розміру.
Типове обмеження розміру вхідних даних під час виконання — `20MB`, якщо не перевизначено через `channels.slack.mediaMaxMb`.
</Accordion>
<Accordion title="Вихідний текст і файли">
- текстові частини використовують `channels.slack.textChunkLimit` (типово 4000)
- текстові фрагменти використовують `channels.slack.textChunkLimit` (типово 4000)
- `channels.slack.chunkMode="newline"` вмикає розбиття спочатку за абзацами
- надсилання файлів використовує API завантаження Slack і може включати відповіді в ланцюжках (`thread_ts`)
- обмеження вихідних медіа задається `channels.slack.mediaMaxMb`, якщо налаштовано; інакше надсилання в канал використовує типові значення kind MIME з конвеєра медіа
- надсилання файлів використовує API завантаження Slack і може включати відповіді в тредах (`thread_ts`)
- обмеження вихідних медіа дотримується `channels.slack.mediaMaxMb`, якщо налаштовано; інакше надсилання в канали використовують типові значення MIME-kind із конвеєра медіа
</Accordion>
<Accordion title="Цілі доставки">
Бажані явні цілі:
- `user:<id>` для особистих повідомлень
- `user:<id>` для приватних повідомлень
- `channel:<id>` для каналів
Особисті повідомлення Slack відкриваються через API розмов Slack під час надсилання до цілей користувача.
Приватні повідомлення Slack відкриваються через API бесід Slack під час надсилання до цілей користувача.
</Accordion>
</AccordionGroup>
## Команди та поведінка слеш-команд
## Команди та поведінка slash
- Автоматичний режим нативних команд **вимкнений** для Slack (`commands.native: "auto"` не вмикає нативні команди Slack).
- Нативний автоматичний режим команд для Slack **вимкнено** (`commands.native: "auto"` не вмикає нативні команди Slack).
- Увімкніть нативні обробники команд Slack через `channels.slack.commands.native: true` (або глобально `commands.native: true`).
- Коли нативні команди ввімкнені, зареєструйте відповідні слеш-команди в Slack (імена `/<command>`), з одним винятком:
- Коли нативні команди ввімкнено, зареєструйте відповідні slash-команди у Slack (імена `/<command>`), з одним винятком:
- зареєструйте `/agentstatus` для команди status (Slack резервує `/status`)
- Якщо нативні команди не ввімкнені, ви можете запускати одну налаштовану слеш-команду через `channels.slack.slashCommand`.
- Якщо нативні команди не ввімкнено, можна запускати одну налаштовану slash-команду через `channels.slack.slashCommand`.
- Нативні меню аргументів тепер адаптують свою стратегію відображення:
- до 5 варіантів: блоки кнопок
- 6-100 варіантів: статичне меню вибору
- понад 100 варіантів: зовнішній вибір з асинхронним фільтруванням варіантів, якщо доступні обробники опцій interactivity
- понад 100 варіантів: зовнішній вибір з асинхронною фільтрацією варіантів, якщо доступні обробники параметрів interactivity
- якщо закодовані значення варіантів перевищують обмеження Slack, потік повертається до кнопок
- Для довгих payload варіантів меню аргументів слеш-команд використовують діалог підтвердження перед відправленням вибраного значення.
- Для довгих корисних навантажень варіантів меню аргументів slash-команд використовують діалог підтвердження перед відправленням вибраного значення.
Типові параметри слеш-команд:
Типові параметри slash-команд:
- `enabled: false`
- `name: "openclaw"`
- `sessionPrefix: "slack:slash"`
- `ephemeral: true`
Сесії слеш-команд використовують ізольовані ключі:
Сесії slash використовують ізольовані ключі:
- `agent:<agentId>:slack:slash:<userId>`
і все одно маршрутизують виконання команди до цільової сесії розмови (`CommandTargetSessionKey`).
і все ще маршрутизують виконання команд відносно сесії цільової бесіди (`CommandTargetSessionKey`).
## Інтерактивні відповіді
Slack може відображати інтерактивні елементи керування відповідями, створеними агентом, але ця функція типово вимкнена.
Slack може відображати інтерактивні елементи керування відповідями, створеними агентом, але цю функцію типово вимкнено.
Увімкніть її глобально:
@ -579,7 +580,7 @@ Slack може відображати інтерактивні елементи
}
```
Або увімкніть її лише для одного облікового запису Slack:
Або ввімкніть її лише для одного облікового запису Slack:
```json5
{
@ -597,7 +598,7 @@ Slack може відображати інтерактивні елементи
}
```
Коли це ввімкнено, агенти можуть виводити директиви відповіді лише для Slack:
Коли функцію ввімкнено, агенти можуть надсилати директиви відповідей лише для Slack:
- `[[slack_buttons: Approve:approve, Reject:reject]]`
- `[[slack_select: Choose a target | Canary:canary, Production:production]]`
@ -607,33 +608,34 @@ Slack може відображати інтерактивні елементи
Примітки:
- Це UI, специфічний для Slack. Інші канали не перекладають директиви Slack Block Kit у власні системи кнопок.
- Значення інтерактивних callback — це непрозорі токени, згенеровані OpenClaw, а не сирі значення, створені агентом.
- Якщо згенеровані інтерактивні блоки перевищують обмеження Slack Block Kit, OpenClaw повертається до початкової текстової відповіді замість надсилання недійсного payload blocks.
- Значення інтерактивних callback — це непрозорі токени, згенеровані OpenClaw, а не необроблені значення, створені агентом.
- Якщо згенеровані інтерактивні блоки перевищать обмеження Slack Block Kit, OpenClaw повернеться до початкової текстової відповіді замість надсилання недійсного корисного навантаження blocks.
## Exec approvals у Slack
## Погодження exec у Slack
Slack може працювати як нативний клієнт погодження з інтерактивними кнопками та взаємодіями замість повернення до Web UI або термінала.
Slack може діяти як нативний клієнт погодження з інтерактивними кнопками та взаємодіями замість повернення до Web UI або термінала.
- Для нативної маршрутизації в особисті повідомлення/канали використовуються `channels.slack.execApprovals.*`.
- Погодження plugin також можуть визначатися через ту саму Slack-native поверхню кнопок, коли запит уже потрапляє в Slack і тип id погодження — `plugin:`.
- Авторизація погоджувача все одно застосовується: лише користувачі, визначені як approvers, можуть погоджувати або відхиляти запити через Slack.
- Погодження exec використовують `channels.slack.execApprovals.*` для нативної маршрутизації до приватних повідомлень/каналів.
- Погодження plugin також можуть визначатися через ту саму поверхню нативних кнопок Slack, коли запит уже надходить у Slack, а тип ID погодження — `plugin:`.
- Авторизація того, хто погоджує, як і раніше, примусово застосовується: лише користувачі, визначені як approvers, можуть погоджувати або відхиляти запити через Slack.
Це використовує ту саму спільну поверхню кнопок погодження, що й інші канали. Коли `interactivity` увімкнено в налаштуваннях вашого застосунку Slack, запити на погодження відображаються як кнопки 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 approvals, коли `enabled` не задано або має значення `"auto"` і визначається принаймні один
Slack автоматично вмикає нативні погодження exec, коли `enabled` не задано або має значення `"auto"` і визначається принаймні один
approver. Установіть `enabled: false`, щоб явно вимкнути Slack як нативний клієнт погодження.
Установіть `enabled: true`, щоб примусово ввімкнути нативні погодження, коли approvers визначаються.
Типова поведінка без явної конфігурації Slack exec approval:
Типова поведінка без явної конфігурації погодження exec для Slack:
```json5
{
@ -643,8 +645,8 @@ approver. Установіть `enabled: false`, щоб явно вимкнут
}
```
Явна конфігурація Slack-native потрібна лише тоді, коли ви хочете перевизначити approvers, додати фільтри або
увімкнути доставку до початкового чату:
Явна нативна конфігурація Slack потрібна лише тоді, коли ви хочете перевизначити approvers, додати фільтри або
вибрати доставку в чат походження:
```json5
{
@ -660,41 +662,41 @@ approver. Установіть `enabled: false`, щоб явно вимкнут
}
```
Спільне переспрямування `approvals.exec` — окреме. Використовуйте його лише тоді, коли запити на exec approval також мають
маршрутизуватися до інших чатів або явно позасмугових цілей. Спільне переспрямування `approvals.plugin` також
окреме; Slack-native кнопки все одно можуть визначати plugin approvals, коли ці запити вже потрапляють
до Slack.
Спільне переспрямування `approvals.exec` є окремим. Використовуйте його лише тоді, коли запити на погодження exec також мають
маршрутизуватися до інших чатів або явних цілей поза основним каналом. Спільне переспрямування `approvals.plugin` також є
окремим; нативні кнопки Slack усе ще можуть визначати погодження plugin, коли ці запити вже надходять
у Slack.
`/approve` у тому самому чаті також працює в каналах і особистих повідомленнях Slack, які вже підтримують команди. Повну модель переспрямування погоджень див. у [Exec approvals](/uk/tools/exec-approvals).
Команда `/approve` у тому самому чаті також працює в каналах і приватних повідомленнях Slack, які вже підтримують команди. Див. [Погодження exec](/uk/tools/exec-approvals), щоб ознайомитися з повною моделлю переспрямування погоджень.
## Події та операційна поведінка
- Редагування/видалення повідомлень і thread broadcast зіставляються в системні події.
- Події додавання/видалення реакцій зіставляються в системні події.
- Події входу/виходу учасників, створення/перейменування каналів і додавання/видалення pin зіставляються в системні події.
- `channel_id_changed` може мігрувати ключі конфігурації каналів, коли ввімкнено `configWrites`.
- Метадані topic/purpose каналу вважаються недовіреним контекстом і можуть бути впроваджені в контекст маршрутизації.
- Початкова історія ланцюжка та заповнення контексту історії на початку ланцюжка фільтруються за налаштованими allowlist відправників, де це застосовно.
- Дії блоків і взаємодії modal створюють структуровані системні події `Slack interaction: ...` з насиченими полями payload:
- дії блоків: вибрані значення, мітки, значення picker і метадані `workflow_*`
- події modal `view_submission` і `view_closed` з маршрутизованими метаданими каналу та введеними даними форми
- Редагування/видалення повідомлень і трансляції тредів зіставляються із системними подіями.
- Події додавання/видалення реакцій зіставляються із системними подіями.
- Події входу/виходу учасників, створення/перейменування каналів і додавання/видалення закріплень зіставляються із системними подіями.
- `channel_id_changed` може мігрувати ключі конфігурації каналу, коли ввімкнено `configWrites`.
- Метадані теми/призначення каналу вважаються недовіреним контекстом і можуть бути ін’єктовані в контекст маршрутизації.
- Початкове повідомлення треду та початкове заповнення контексту історії треду фільтруються відповідно до налаштованих allowlist відправників, де це застосовно.
- Дії block і взаємодії modal створюють структуровані системні події `Slack interaction: ...` із насиченими полями корисного навантаження:
- дії block: вибрані значення, мітки, значення picker і метадані `workflow_*`
- події modal `view_submission` і `view_closed` з маршрутизованими метаданими каналу та введеними значеннями форми
## Вказівники на довідник конфігурації
## Вказівники на довідкову конфігурацію
Основний довідник:
Основне посилання:
- [Довідник конфігурації - Slack](/uk/gateway/configuration-reference#slack)
Високосигнальні поля Slack:
- mode/auth: `mode`, `botToken`, `appToken`, `signingSecret`, `webhookPath`, `accounts.*`
- доступ до особистих повідомлень: `dm.enabled`, `dmPolicy`, `allowFrom` (застаріле: `dm.policy`, `dm.allowFrom`), `dm.groupEnabled`, `dm.groupChannels`
- перемикач сумісності: `dangerouslyAllowNameMatching` (аварійний режим; тримайте вимкненим, якщо немає потреби)
- доступ до приватних повідомлень: `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`
## Усунення несправностей
## Усунення проблем
<AccordionGroup>
<Accordion title="Немає відповідей у каналах">
@ -715,12 +717,12 @@ openclaw doctor
</Accordion>
<Accordion title="Повідомлення в особистих повідомленнях ігноруються">
<Accordion title="Повідомлення в приватних повідомленнях ігноруються">
Перевірте:
- `channels.slack.dm.enabled`
- `channels.slack.dmPolicy` (або застаріле `channels.slack.dm.policy`)
- погодження зіставлення / записи allowlist
- дозволи сполучення / записи allowlist
```bash
openclaw pairing list slack
@ -728,17 +730,17 @@ openclaw pairing list slack
</Accordion>
<Accordion title="Socket mode не підключається">
<Accordion title="Режим socket не підключається">
Перевірте bot token + app token і ввімкнення Socket Mode в налаштуваннях застосунку Slack.
Якщо `openclaw channels status --probe --json` показує `botTokenStatus` або
`appTokenStatus: "configured_unavailable"`, обліковий запис Slack
налаштовано, але поточне середовище виконання не змогло визначити значення,
яке зберігається через SecretRef.
що підтримується SecretRef.
</Accordion>
<Accordion title="HTTP mode не отримує події">
<Accordion title="Режим HTTP не отримує події">
Перевірте:
- signing secret
@ -748,27 +750,27 @@ openclaw pairing list slack
Якщо `signingSecretStatus: "configured_unavailable"` з’являється у знімках
облікового запису, HTTP-обліковий запис налаштовано, але поточне середовище виконання не змогло
визначити signing secret, який зберігається через SecretRef.
визначити signing secret, що підтримується SecretRef.
</Accordion>
<Accordion title="Нативні/слеш-команди не спрацьовують">
Перевірте, що саме ви мали на увазі:
<Accordion title="Нативні/slash-команди не спрацьовують">
Перевірте, чи ви справді мали на увазі:
- режим нативних команд (`channels.slack.commands.native: true`) з реєстрацією відповідних слеш-команд у Slack
- або режим однієї слеш-команди (`channels.slack.slashCommand.enabled: true`)
- режим нативних команд (`channels.slack.commands.native: true`) з відповідними slash-командами, зареєстрованими у Slack
- або режим однієї slash-команди (`channels.slack.slashCommand.enabled: true`)
Також перевірте `commands.useAccessGroups` і allowlist каналів/користувачів.
</Accordion>
</AccordionGroup>
## Пов’язані матеріали
## Пов’язані розділи
- [Зіставлення](/uk/channels/pairing)
- [Сполучення](/uk/channels/pairing)
- [Групи](/uk/channels/groups)
- [Безпека](/uk/gateway/security)
- [Маршрутизація каналів](/uk/channels/channel-routing)
- [Усунення несправностей](/uk/channels/troubleshooting)
- [Усунення проблем](/uk/channels/troubleshooting)
- [Конфігурація](/uk/gateway/configuration)
- [Слеш-команди](/uk/tools/slash-commands)
- [Slash-команди](/uk/tools/slash-commands)