diff --git a/docs/uk/channels/slack.md b/docs/uk/channels/slack.md index ef79a4e98..7bb6e222a 100644 --- a/docs/uk/channels/slack.md +++ b/docs/uk/channels/slack.md @@ -1,29 +1,29 @@ --- read_when: - Налаштування Slack або налагодження режиму socket/HTTP у Slack -summary: Налаштування Slack і поведінка під час роботи (Socket Mode + HTTP Events API) +summary: Налаштування Slack і поведінка під час роботи (Socket Mode + URL-адреси HTTP Request) title: Slack x-i18n: - generated_at: "2026-04-05T20:43:34Z" + generated_at: "2026-04-06T06:59:24Z" model: gpt-5.4 provider: openai - source_hash: 7e4ff2ce7d92276d62f4f3d3693ddb56ca163d5fdc2f1082ff7ba3421fada69c + source_hash: 471421a34e5ff20dfc46dab85422d2e814524068c8466d0738448cd5d64d415b source_path: channels/slack.md workflow: 15 --- # Slack -Статус: готовий до використання у production для особистих повідомлень і каналів через інтеграції застосунку Slack. Типовий режим — Socket Mode; режим HTTP Events API також підтримується. +Статус: готово до використання в production для приватних повідомлень + каналів через інтеграції застосунку Slack. Режим за замовчуванням — Socket Mode; URL-адреси HTTP Request також підтримуються. - - Особисті повідомлення Slack типово використовують режим сполучення. + + Приватні повідомлення Slack за замовчуванням використовують режим підключення. - + Вбудована поведінка команд і каталог команд. - + Міжканальна діагностика та сценарії відновлення. @@ -31,14 +31,14 @@ x-i18n: ## Швидке налаштування - + У налаштуваннях застосунку Slack: - увімкніть **Socket Mode** - створіть **App Token** (`xapp-...`) з `connections:write` - - установіть застосунок і скопіюйте **Bot Token** (`xoxb-...`) + - встановіть застосунок і скопіюйте **Bot Token** (`xoxb-...`) @@ -75,7 +75,7 @@ SLACK_BOT_TOKEN=xoxb-... - `channel_rename` - `pin_added`, `pin_removed` - Також увімкніть **Messages Tab** у App Home для особистих повідомлень. + Також увімкніть **Messages Tab** у App Home для приватних повідомлень. @@ -89,13 +89,13 @@ openclaw gateway - + - - установіть режим HTTP (`channels.slack.mode="http"`) + - встановіть режим 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`) @@ -118,9 +118,9 @@ openclaw gateway - Режим HTTP для кількох облікових записів підтримується. + Підтримується HTTP-режим для кожного облікового запису окремо. - Надайте кожному обліковому запису окремий `webhookPath`, щоб реєстрації не конфліктували. + Призначте кожному обліковому запису окремий `webhookPath`, щоб реєстрації не конфліктували. @@ -216,7 +216,7 @@ openclaw gateway - `reactions:read` - `pins:read` - `emoji:read` - - `search:read` (якщо ви залежите від читання пошуку Slack) + - `search:read` (якщо ви покладаєтеся на читання пошуку Slack) @@ -224,62 +224,62 @@ openclaw gateway ## Модель токенів - `botToken` + `appToken` обов'язкові для Socket Mode. -- HTTP-режим потребує `botToken` + `signingSecret`. -- `botToken`, `appToken`, `signingSecret` і `userToken` приймають звичайні рядки - або об'єкти SecretRef. -- Токени з конфігурації мають пріоритет над резервними значеннями з env. -- Резервні значення з env `SLACK_BOT_TOKEN` / `SLACK_APP_TOKEN` застосовуються лише до облікового запису за замовчуванням. -- `userToken` (`xoxp-...`) доступний лише в конфігурації (без резервного значення з env) і типово працює в режимі лише для читання (`userTokenReadOnly: true`). -- Необов'язково: додайте `chat:write.customize`, якщо хочете, щоб вихідні повідомлення використовували ідентичність активного агента (власні `username` та icon). Для `icon_emoji` використовується синтаксис `:emoji_name:`. +- Для 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 джерело секретів, але поточний шлях команди/виконання - не зміг визначити фактичне значення. + або інше не-inline джерело секретів, але поточна команда/шлях виконання + не змогли визначити фактичне значення. - У HTTP-режимі включається `signingSecretStatus`; у Socket Mode - обов'язковою парою є `botTokenStatus` + `appTokenStatus`. + потрібною парою є `botTokenStatus` + `appTokenStatus`. -Для дій/читання каталогів за наявності налаштування може надаватися перевага токену користувача. Для запису пріоритетним лишається токен бота; запис через токен користувача дозволено лише коли `userTokenReadOnly: false` і токен бота недоступний. +Для дій/читання каталогів за наявності конфігурації може віддаватися перевага токену користувача. Для запису пріоритетним залишається токен бота; запис через токен користувача дозволяється лише коли `userTokenReadOnly: false` і токен бота недоступний. ## Дії та обмеження -Дії Slack контролюються через `channels.slack.actions.*`. +Дії Slack керуються через `channels.slack.actions.*`. Доступні групи дій у поточному інструментарії Slack: -| Група | Типово | +| Group | Default | | ---------- | ------- | -| messages | увімкнено | -| reactions | увімкнено | -| pins | увімкнено | -| memberInfo | увімкнено | -| emojiList | увімкнено | +| messages | enabled | +| reactions | enabled | +| pins | enabled | +| memberInfo | enabled | +| emojiList | enabled | -Поточні дії з повідомленнями 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`. -## Контроль доступу та маршрутизація +## Керування доступом і маршрутизація - - `channels.slack.dmPolicy` контролює доступ до особистих повідомлень (застаріле: `channels.slack.dm.policy`): + + `channels.slack.dmPolicy` керує доступом до приватних повідомлень (застаріле: `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.enabled` (типово true) - `channels.slack.allowFrom` (рекомендовано) - `dm.allowFrom` (застаріле) - - `dm.groupEnabled` (групові особисті повідомлення типово false) + - `dm.groupEnabled` (групові приватні повідомлення типово false) - `dm.groupChannels` (необов'язковий allowlist MPIM) Пріоритет для кількох облікових записів: @@ -288,37 +288,37 @@ openclaw gateway - Іменовані облікові записи успадковують `channels.slack.allowFrom`, якщо їхній власний `allowFrom` не задано. - Іменовані облікові записи не успадковують `channels.slack.accounts.default.allowFrom`. - Сполучення в особистих повідомленнях використовує `openclaw pairing approve slack `. + Підключення в приватних повідомленнях використовує `openclaw pairing approve slack `. - `channels.slack.groupPolicy` контролює обробку каналів: + `channels.slack.groupPolicy` керує обробкою каналів: - `open` - `allowlist` - `disabled` - Allowlist каналів міститься в `channels.slack.channels` і має використовувати стабільні ідентифікатори каналів. + Allowlist каналів зберігається в `channels.slack.channels` і має використовувати стабільні ID каналів. - Примітка щодо виконання: якщо `channels.slack` повністю відсутній (налаштування лише через env), під час виконання використовується `groupPolicy="allowlist"` і записується попередження в журнал (навіть якщо задано `channels.defaults.groupPolicy`). + Примітка щодо роботи: якщо `channels.slack` повністю відсутній (налаштування лише через env), під час роботи використовується резервне значення `groupPolicy="allowlist"` і записується попередження в журнал (навіть якщо встановлено `channels.defaults.groupPolicy`). - Визначення імен/ідентифікаторів: + Визначення імені/ID: - - записи allowlist каналів і записи allowlist особистих повідомлень визначаються під час запуску, якщо доступ токена це дозволяє - - нерозв'язані записи з іменами каналів зберігаються як налаштовані, але типово ігноруються для маршрутизації - - вхідна авторизація та маршрутизація каналів типово працюють за ідентифікаторами; пряме зіставлення за username/slug потребує `channels.slack.dangerouslyAllowNameMatching: true` + - записи allowlist каналів і allowlist приватних повідомлень визначаються під час запуску, коли доступ токена це дозволяє + - записи з невизначеними назвами каналів зберігаються в конфігурації, але типово ігноруються для маршрутизації + - вхідна авторизація і маршрутизація каналів типово працюють за ID; пряме зіставлення імені користувача/sluга потребує `channels.slack.dangerouslyAllowNameMatching: true` - Повідомлення в каналах типово обмежуються згадками. + Повідомлення в каналах типово обмежені згадками. Джерела згадок: - явна згадка застосунку (`<@botId>`) - шаблони regex для згадок (`agents.list[].groupChat.mentionPatterns`, резервне значення `messages.groupChat.mentionPatterns`) - - неявна поведінка reply-to-bot у треді + - неявна поведінка відповідей у гілці на бота Керування для кожного каналу (`channels.slack.channels.`; імена лише через визначення під час запуску або `dangerouslyAllowNameMatching`): @@ -328,22 +328,22 @@ openclaw gateway - `skills` - `systemPrompt` - `tools`, `toolsBySender` - - формат ключів `toolsBySender`: `id:`, `e164:`, `username:`, `name:` або підстановочний знак `"*"` - (застарілі ключі без префікса все ще зіставляються лише з `id:`) + - формат ключа `toolsBySender`: `id:`, `e164:`, `username:`, `name:` або шаблон `"*"` + (застарілі ключі без префікса досі зіставляються лише з `id:`) -## Треди, сесії та теги відповідей +## Гілки, сесії та теги відповідей -- Особисті повідомлення маршрутизуються як `direct`; канали — як `channel`; MPIM — як `group`. -- Із типовим `session.dmScope=main` особисті повідомлення Slack згортаються до основної сесії агента. +- Приватні повідомлення маршрутизуються як `direct`; канали — як `channel`; MPIM — як `group`. +- Із типовим `session.dmScope=main` приватні повідомлення Slack згортаються в основну сесію агента. - Сесії каналів: `agent::slack:channel:`. -- Відповіді в треді можуть створювати суфікси сесій тредів (`:thread:`), якщо це застосовно. +- Відповіді в гілках можуть створювати суфікси сесій гілок (`:thread:`), коли це застосовно. - Типове значення `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` @@ -354,9 +354,9 @@ openclaw gateway - `[[reply_to_current]]` - `[[reply_to:]]` -Примітка: `replyToMode="off"` вимикає **усі** треди відповідей у Slack, включно з явними тегами `[[reply_to_*]]`. Це відрізняється від Telegram, де явні теги все ще враховуються в режимі `"off"`. Різниця відображає моделі тредів на цих платформах: у Slack треди приховують повідомлення з каналу, тоді як у Telegram відповіді лишаються видимими в основному потоці чату. +Примітка: `replyToMode="off"` вимикає **усі** гілки відповідей у Slack, включно з явними тегами `[[reply_to_*]]`. Це відрізняється від Telegram, де явні теги все ще враховуються в режимі `"off"`. Відмінність відображає моделі гілок на платформах: у Slack гілки приховують повідомлення з каналу, тоді як у Telegram відповіді залишаються видимими в основному потоці чату. -## Реакції-підтвердження +## Реакції підтвердження `ackReaction` надсилає emoji-підтвердження, поки OpenClaw обробляє вхідне повідомлення. @@ -369,25 +369,25 @@ openclaw gateway Примітки: -- Slack очікує короткі коди (наприклад, `"eyes"`). +- Slack очікує shortcode (наприклад `"eyes"`). - Використовуйте `""`, щоб вимкнути реакцію для облікового запису Slack або глобально. -## Потокова передача тексту +## Потокове передавання тексту -`channels.slack.streaming` контролює поведінку попереднього перегляду в реальному часі: +`channels.slack.streaming` керує поведінкою попереднього перегляду в реальному часі: -- `off`: вимкнути потоковий попередній перегляд у реальному часі. -- `partial` (типово): замінювати текст попереднього перегляду останнім частковим результатом. -- `block`: додавати фрагментовані оновлення попереднього перегляду. -- `progress`: показувати текст стану прогресу під час генерації, а потім надсилати фінальний текст. +- `off`: вимкнути потоковий попередній перегляд. +- `partial` (за замовчуванням): замінювати текст попереднього перегляду останнім частковим виводом. +- `block`: додавати оновлення попереднього перегляду частинами. +- `progress`: показувати текст статусу прогресу під час генерації, а потім надсилати фінальний текст. -`channels.slack.nativeStreaming` контролює вбудовану потокову передачу тексту Slack, коли `streaming` має значення `partial` (типово: `true`). +`channels.slack.nativeStreaming` керує вбудованим потоковим передаванням тексту Slack, коли `streaming` має значення `partial` (типово: `true`). -- Щоб з'явилася вбудована потокова передача тексту, має бути доступний тред відповіді. Вибір треду й далі визначається `replyToMode`. Без нього використовується звичайний чернетковий попередній перегляд. -- Для медіа та нетекстових payload використовується звичайна доставка. -- Якщо потокова передача переривається посеред відповіді, OpenClaw повертається до звичайної доставки для решти payload. +- Щоб з'явилося вбудоване потокове передавання тексту, має бути доступна гілка відповіді. Вибір гілки й надалі визначається `replyToMode`. Без неї використовується звичайний чернетковий попередній перегляд. +- Медіа та не текстові payload повертаються до звичайної доставки. +- Якщо потокове передавання зламається посеред відповіді, OpenClaw повернеться до звичайної доставки для решти payload. -Використовуйте чернетковий попередній перегляд замість вбудованої потокової передачі тексту Slack: +Використовуйте чернетковий попередній перегляд замість вбудованого потокового передавання тексту Slack: ```json5 { @@ -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 обробляє відповідь, а потім видаляє її після завершення виконання. Це особливо корисно поза відповідями в тредах, де використовується типовий індикатор стану "друкує...". +`typingReaction` додає тимчасову реакцію до вхідного повідомлення Slack, поки OpenClaw обробляє відповідь, а потім видаляє її після завершення виконання. Це особливо корисно поза відповідями в гілках, які використовують типовий індикатор статусу "is typing...". Порядок визначення: @@ -416,69 +416,69 @@ openclaw gateway Примітки: -- Slack очікує короткі коди (наприклад, `"hourglass_flowing_sand"`). -- Реакція виконується за принципом best-effort, а очищення автоматично намагається завершитися після відповіді або завершення шляху помилки. +- Slack очікує shortcode (наприклад `"hourglass_flowing_sand"`). +- Реакція є best-effort, а очищення намагається виконатися автоматично після завершення відповіді або сценарію помилки. -## Медіа, розбиття на частини та доставка +## Медіа, поділ на частини та доставка - Вкладення файлів Slack завантажуються з приватних URL, розміщених у Slack (потік запитів з автентифікацією токеном), і записуються до сховища медіа, якщо отримання успішне та дозволяють обмеження за розміром. + Вкладення файлів Slack завантажуються з приватних URL, розміщених у Slack (потік запитів з автентифікацією токеном), і записуються до сховища медіа, якщо отримання успішне та дозволяють обмеження розміру. - Типове обмеження розміру вхідних даних під час виконання — `20MB`, якщо його не перевизначено через `channels.slack.mediaMaxMb`. + Типове обмеження розміру вхідних даних під час роботи становить `20MB`, якщо не перевизначено через `channels.slack.mediaMaxMb`. - - текстові частини використовують `channels.slack.textChunkLimit` (типово 4000) - - `channels.slack.chunkMode="newline"` вмикає розбиття спершу за абзацами - - надсилання файлів використовує API завантаження Slack і може включати відповіді в тредах (`thread_ts`) - - обмеження вихідних медіа визначається через `channels.slack.mediaMaxMb`, якщо налаштовано; інакше надсилання в канали використовує типові MIME-обмеження з медіаконвеєра + - частини тексту використовують `channels.slack.textChunkLimit` (типово 4000) + - `channels.slack.chunkMode="newline"` вмикає поділ спочатку за абзацами + - надсилання файлів використовує API завантаження Slack і може включати відповіді в гілках (`thread_ts`) + - обмеження вихідних медіа визначається `channels.slack.mediaMaxMb`, якщо задано; інакше надсилання через канал використовують типові значення MIME-kind з конвеєра медіа - Рекомендовані явні цілі: + Бажані явні цілі: - - `user:` для особистих повідомлень + - `user:` для приватних повідомлень - `channel:` для каналів - Особисті повідомлення Slack відкриваються через API розмов Slack під час надсилання до цілей користувача. + Приватні повідомлення Slack відкриваються через API conversations Slack під час надсилання до цілей користувача. -## Команди та поведінка slash-команд +## Команди та поведінка слеш-команд -- Вбудований автоматичний режим команд для Slack **вимкнено** (`commands.native: "auto"` не вмикає вбудовані команди Slack). +- Вбудований автоматичний режим команд **вимкнено** для Slack (`commands.native: "auto"` не вмикає вбудовані команди Slack). - Увімкніть вбудовані обробники команд Slack через `channels.slack.commands.native: true` (або глобально `commands.native: true`). -- Коли вбудовані команди ввімкнено, зареєструйте відповідні slash-команди в Slack (імена `/`), з одним винятком: - - зареєструйте `/agentstatus` для команди стану (Slack резервує `/status`) -- Якщо вбудовані команди не ввімкнено, ви можете виконувати одну налаштовану slash-команду через `channels.slack.slashCommand`. +- Коли вбудовані команди ввімкнено, зареєструйте відповідні слеш-команди в Slack (імена `/`), за одним винятком: + - зареєструйте `/agentstatus` для команди status (Slack резервує `/status`) +- Якщо вбудовані команди не ввімкнено, ви можете запускати одну налаштовану слеш-команду через `channels.slack.slashCommand`. - Вбудовані меню аргументів тепер адаптують свою стратегію відображення: - до 5 варіантів: блоки кнопок - 6-100 варіантів: статичне меню вибору - - більше 100 варіантів: зовнішній вибір з асинхронною фільтрацією варіантів, якщо доступні обробники параметрів interactivity + - понад 100 варіантів: зовнішній вибір з асинхронною фільтрацією варіантів, коли доступні обробники інтерактивних параметрів - якщо закодовані значення варіантів перевищують ліміти Slack, потік повертається до кнопок -- Для довгих payload варіантів меню аргументів slash-команд використовують діалог підтвердження перед передачею вибраного значення. +- Для довгих payload параметрів меню аргументів слеш-команд використовують діалог підтвердження перед відправленням вибраного значення. -Типові параметри slash-команд: +Типові налаштування слеш-команд: - `enabled: false` - `name: "openclaw"` - `sessionPrefix: "slack:slash"` - `ephemeral: true` -Сесії slash-команд використовують ізольовані ключі: +Сесії слеш-команд використовують ізольовані ключі: - `agent::slack:slash:` -і все одно спрямовують виконання команд до сесії цільової розмови (`CommandTargetSessionKey`). +і все одно маршрутизують виконання команди щодо цільової сесії розмови (`CommandTargetSessionKey`). ## Інтерактивні відповіді -Slack може відображати інтерактивні елементи відповідей, створених агентом, але ця функція типово вимкнена. +Slack може відображати інтерактивні елементи керування відповідями, створеними агентом, але ця функція за замовчуванням вимкнена. -Увімкніть її глобально: +Увімкнути глобально: ```json5 { @@ -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 повертається до початкової текстової відповіді замість надсилання невалідного payload blocks. +- Це специфічний для Slack UI. Інші канали не перетворюють директиви Slack Block Kit у власні системи кнопок. +- Значення інтерактивних callback — це непрозорі токени, згенеровані OpenClaw, а не вихідні значення, створені агентом. +- Якщо згенеровані інтерактивні блоки перевищать ліміти Slack Block Kit, OpenClaw повернеться до початкової текстової відповіді замість надсилання недійсного payload blocks. ## Підтвердження exec у Slack -Slack може виступати як вбудований клієнт підтвердження з інтерактивними кнопками та взаємодіями замість повернення до Web UI або термінала. +Slack може працювати як вбудований клієнт підтвердження з інтерактивними кнопками та взаємодіями замість повернення до Web UI або термінала. -- Підтвердження exec використовують `channels.slack.execApprovals.*` для вбудованої маршрутизації в особисті повідомлення/канали. -- Підтвердження plugin також можуть визначатися через ту саму вбудовану поверхню кнопок Slack, коли запит уже надходить у Slack, а тип ідентифікатора підтвердження — `plugin:`. -- Авторизація затверджувачів і далі примусово застосовується: лише користувачі, визначені як затверджувачі, можуть схвалювати або відхиляти запити через Slack. +- Підтвердження exec використовують `channels.slack.execApprovals.*` для вбудованої маршрутизації приватних повідомлень/каналів. +- Підтвердження plugin також можуть визначатися через ту саму вбудовану поверхню кнопок Slack, коли запит уже потрапляє в Slack і тип id підтвердження — `plugin:`. +- Авторизація того, хто підтверджує, і далі застосовується: лише користувачі, визначені як approvers, можуть підтверджувати або відхиляти запити через Slack. -Для цього використовується та сама спільна поверхня кнопок підтвердження, що й для інших каналів. Коли у налаштуваннях застосунку Slack увімкнено `interactivity`, запити на підтвердження відображаються як кнопки Block Kit безпосередньо в розмові. +Це використовує ту саму спільну поверхню кнопок підтвердження, що й інші канали. Якщо у налаштуваннях застосунку Slack увімкнено `interactivity`, запити на підтвердження відображаються як кнопки Block Kit безпосередньо в розмові. Коли ці кнопки присутні, вони є основним UX підтвердження; OpenClaw має включати ручну команду `/approve` лише тоді, коли результат інструмента вказує, що підтвердження в чаті недоступні або ручне підтвердження є єдиним шляхом. Шлях конфігурації: - `channels.slack.execApprovals.enabled` -- `channels.slack.execApprovals.approvers` (необов'язково; за можливості використовується резервне значення `commands.ownerAllowFrom`) +- `channels.slack.execApprovals.approvers` (необов'язково; використовує резервне значення `commands.ownerAllowFrom`, коли можливо) - `channels.slack.execApprovals.target` (`dm` | `channel` | `both`, типово: `dm`) - `agentFilter`, `sessionFilter` Slack автоматично вмикає вбудовані підтвердження exec, коли `enabled` не задано або має значення `"auto"` і визначається принаймні один -затверджувач. Установіть `enabled: false`, щоб явно вимкнути Slack як вбудований клієнт підтвердження. -Установіть `enabled: true`, щоб примусово ввімкнути вбудовані підтвердження, коли затверджувачі визначаються. +approver. Установіть `enabled: false`, щоб явно вимкнути Slack як вбудований клієнт підтвердження. +Установіть `enabled: true`, щоб примусово ввімкнути вбудовані підтвердження, коли approvers визначаються. -Типова поведінка без явної конфігурації підтверджень exec для Slack: +Типова поведінка без явної конфігурації підтвердження exec для Slack: ```json5 { @@ -556,8 +556,8 @@ Slack автоматично вмикає вбудовані підтвердж } ``` -Явна вбудована конфігурація Slack потрібна лише тоді, коли ви хочете перевизначити затверджувачів, додати фільтри або -використовувати доставку в початковий чат: +Явна вбудована конфігурація Slack потрібна лише тоді, коли ви хочете перевизначити approvers, додати фільтри або +увімкнути доставку до початкового чату: ```json5 { @@ -574,23 +574,23 @@ Slack автоматично вмикає вбудовані підтвердж ``` Спільне переспрямування `approvals.exec` є окремим. Використовуйте його лише тоді, коли запити на підтвердження exec також мають -маршрутизуватися до інших чатів або явно позасмугових цілей. Спільне переспрямування `approvals.plugin` також є -окремим; вбудовані кнопки Slack все одно можуть визначати підтвердження plugin, коли ці запити вже надходять +маршрутизуватися до інших чатів або явно заданих зовнішніх цілей. Спільне переспрямування `approvals.plugin` також є +окремим; вбудовані кнопки Slack усе одно можуть визначати підтвердження plugin, коли ці запити вже надходять у Slack. -У Slack-каналах і особистих повідомленнях, які вже підтримують команди, також працює `/approve` у тому самому чаті. Повну модель переспрямування підтверджень див. у [Підтвердження exec](/uk/tools/exec-approvals). +Команда `/approve` у тому ж чаті також працює в каналах і приватних повідомленнях Slack, які вже підтримують команди. Див. [Exec approvals](/uk/tools/exec-approvals), щоб ознайомитися з повною моделлю переспрямування підтверджень. ## Події та поведінка під час роботи -- Редагування/видалення повідомлень і thread broadcast відображаються в системні події. -- Події додавання/видалення реакцій відображаються в системні події. -- Події входу/виходу учасників, створення/перейменування каналу та додавання/видалення закріплень відображаються в системні події. -- `channel_id_changed` може мігрувати ключі конфігурації каналу, якщо ввімкнено `configWrites`. -- Метадані topic/purpose каналу вважаються недовіреним контекстом і можуть бути впроваджені в контекст маршрутизації. -- Початкове повідомлення треду та початкове заповнення контексту історії треду фільтруються за налаштованими allowlist відправників, якщо це застосовно. -- Дії блоків і взаємодії модальних вікон створюють структуровані системні події `Slack interaction: ...` із розширеними полями payload: +- Редагування/видалення повідомлень і трансляції гілок перетворюються на системні події. +- Події додавання/видалення реакцій перетворюються на системні події. +- Події входу/виходу учасників, створення/перейменування каналів і додавання/видалення закріплень перетворюються на системні події. +- `channel_id_changed` може мігрувати ключі конфігурації каналу, коли ввімкнено `configWrites`. +- Метадані теми/призначення каналу вважаються ненадійним контекстом і можуть бути вставлені в контекст маршрутизації. +- Ініціатор гілки та початкове заповнення контексту історії гілки фільтруються за налаштованими allowlist відправників, коли це застосовно. +- Дії блоків і взаємодії з модальними вікнами породжують структуровані системні події `Slack interaction: ...` з насиченими полями payload: - дії блоків: вибрані значення, мітки, значення picker і метадані `workflow_*` - - події модальних вікон `view_submission` і `view_closed` з маршрутованими метаданими каналу та полями форм + - події модальних вікон `view_submission` і `view_closed` з маршрутизованими метаданими каналу та полями форми ## Вказівники на довідник конфігурації @@ -598,25 +598,25 @@ Slack автоматично вмикає вбудовані підтвердж - [Довідник конфігурації - 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` (аварійний режим; тримайте вимкненим, якщо не потрібно) + Важливі поля Slack: + - режим/автентифікація: `mode`, `botToken`, `appToken`, `signingSecret`, `webhookPath`, `accounts.*` + - доступ до приватних повідомлень: `dm.enabled`, `dmPolicy`, `allowFrom` (застаріле: `dm.policy`, `dm.allowFrom`), `dm.groupEnabled`, `dm.groupChannels` + - перемикач сумісності: `dangerouslyAllowNameMatching` (аварійний варіант; не вмикайте без потреби) - доступ до каналів: `groupPolicy`, `channels.*`, `channels.*.users`, `channels.*.requireMention` - - треди/історія: `replyToMode`, `replyToModeByChatType`, `thread.*`, `historyLimit`, `dmHistoryLimit`, `dms.*.historyLimit` + - гілки/історія: `replyToMode`, `replyToModeByChatType`, `thread.*`, `historyLimit`, `dmHistoryLimit`, `dms.*.historyLimit` - доставка: `textChunkLimit`, `chunkMode`, `mediaMaxMb`, `streaming`, `nativeStreaming` - операції/можливості: `configWrites`, `commands.native`, `slashCommand.*`, `actions.*`, `userToken`, `userTokenReadOnly` -## Усунення проблем +## Усунення несправностей - Перевірте в такому порядку: + Перевірте по черзі: - `groupPolicy` - allowlist каналів (`channels.slack.channels`) - `requireMention` - - allowlist `users` для конкретного каналу + - allowlist `users` для кожного каналу Корисні команди: @@ -628,12 +628,12 @@ openclaw doctor - + Перевірте: - `channels.slack.dm.enabled` - `channels.slack.dmPolicy` (або застаріле `channels.slack.dm.policy`) - - підтвердження сполучення / записи allowlist + - підтвердження підключення / записи allowlist ```bash openclaw pairing list slack @@ -642,7 +642,7 @@ openclaw pairing list slack - Перевірте токени бота й застосунку та увімкнення Socket Mode в налаштуваннях застосунку Slack. + Перевірте дійсність токенів бота + застосунку та те, що Socket Mode увімкнено в налаштуваннях застосунку Slack. Якщо `openclaw channels status --probe --json` показує `botTokenStatus` або `appTokenStatus: "configured_unavailable"`, обліковий запис Slack @@ -656,20 +656,20 @@ openclaw pairing list slack - signing secret - шлях webhook - - Slack Request URL (Events + Interactivity + Slash Commands) + - URL-адреси Request URL у Slack (Events + Interactivity + Slash Commands) - унікальний `webhookPath` для кожного HTTP-облікового запису Якщо `signingSecretStatus: "configured_unavailable"` з'являється у знімках - облікового запису, HTTP-обліковий запис налаштовано, але поточне середовище виконання не змогло + облікових записів, HTTP-обліковий запис налаштовано, але поточне середовище виконання не змогло визначити signing secret, що зберігається через SecretRef. - - Перевірте, що саме ви мали на увазі: + + Переконайтеся, що ви мали на увазі: - - режим вбудованих команд (`channels.slack.commands.native: true`) з відповідними зареєстрованими в Slack slash-командами - - або режим однієї slash-команди (`channels.slack.slashCommand.enabled: true`) + - режим вбудованих команд (`channels.slack.commands.native: true`) з відповідними слеш-командами, зареєстрованими в Slack + - або режим однієї слеш-команди (`channels.slack.slashCommand.enabled: true`) Також перевірте `commands.useAccessGroups` і allowlist каналів/користувачів. @@ -678,10 +678,10 @@ openclaw pairing list slack ## Пов'язане -- [Сполучення](/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) -- [Slash-команди](/uk/tools/slash-commands) +- [Слеш-команди](/uk/tools/slash-commands)