chore(i18n): refresh uk translations

This commit is contained in:
openclaw-docs-i18n[bot] 2026-04-06 07:21:13 +00:00
parent 5060dafe96
commit 06bec5e850

View File

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