chore(i18n): refresh uk translations
This commit is contained in:
parent
eb8babb460
commit
265134ef86
@ -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
Loading…
Reference in New Issue
Block a user