chore(i18n): refresh uk translations
This commit is contained in:
parent
93d7fdaac0
commit
c8be6d9023
@ -1,38 +1,60 @@
|
||||
---
|
||||
read_when:
|
||||
- Налаштування Slack або налагодження режиму сокета/HTTP для Slack
|
||||
- Налаштування Slack або налагодження режиму socket/HTTP у Slack
|
||||
summary: Налаштування Slack і поведінка під час виконання (режим Socket + URL-адреси HTTP-запитів)
|
||||
title: Slack
|
||||
x-i18n:
|
||||
generated_at: "2026-05-05T01:21:09Z"
|
||||
generated_at: "2026-05-05T01:44:06Z"
|
||||
model: gpt-5.5
|
||||
provider: openai
|
||||
source_hash: 7334027c606ff6465190433d2159c3f9cfbcf1e8a3a1e826682423f71700a064
|
||||
source_hash: 9a8e1cbfd3d99bfc24d79b56ee762d1ab399402391b241ff40698249b0828008
|
||||
source_path: channels/slack.md
|
||||
workflow: 16
|
||||
---
|
||||
|
||||
Готово до продакшену для DM і каналів через інтеграції Slack app. Режим за замовчуванням — Socket Mode; HTTP Request URLs також підтримуються.
|
||||
Готово до продакшену для DM і каналів через інтеграції застосунку Slack. Типовий режим — Socket Mode; HTTP Request URLs також підтримуються.
|
||||
|
||||
<CardGroup cols={3}>
|
||||
<Card title="Сполучення" icon="link" href="/uk/channels/pairing">
|
||||
DM у 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>
|
||||
|
||||
## Вибір між Socket Mode і HTTP Request URLs
|
||||
|
||||
Обидва транспорти готові до продакшену та мають паритет функцій для обміну повідомленнями, слеш-команд, App Home та інтерактивності. Обирайте за формою розгортання, а не за функціями.
|
||||
|
||||
| Аспект | Socket Mode (типово) | HTTP Request URLs |
|
||||
| ---------------------------- | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Публічна URL-адреса Gateway | Не потрібна | Потрібна (DNS, TLS, зворотний проксі або тунель) |
|
||||
| Вихідна мережа | Вихідний WSS до `wss-primary.slack.com` має бути доступний | Без вихідного WS; лише вхідний HTTPS |
|
||||
| Потрібні токени | Bot token (`xoxb-...`) + App-Level Token (`xapp-...`) з `connections:write` | Bot token (`xoxb-...`) + Signing Secret |
|
||||
| Ноутбук розробника / за firewall | Працює без додаткових налаштувань | Потрібен публічний тунель (ngrok, Cloudflare Tunnel, Tailscale Funnel) або staging Gateway |
|
||||
| Горизонтальне масштабування | Один сеанс Socket Mode на застосунок на хост; для кількох Gateway потрібні окремі застосунки Slack | Stateless POST-обробник; кілька реплік Gateway можуть спільно використовувати один застосунок за балансувальником навантаження |
|
||||
| Кілька облікових записів на одному Gateway | Підтримується; кожен обліковий запис відкриває власний WS | Підтримується; кожному обліковому запису потрібен унікальний `webhookPath` (типово `/slack/events`), щоб реєстрації не конфліктували |
|
||||
| Транспорт слеш-команд | Доставляються через WS-з’єднання; `slash_commands[].url` ігнорується | Slack надсилає POST до `slash_commands[].url`; поле потрібне для dispatch команди |
|
||||
| Підписування запитів | Не використовується (автентифікація — це App-Level Token) | Slack підписує кожен запит; OpenClaw перевіряє через `signingSecret` |
|
||||
| Відновлення після розриву з’єднання | Slack SDK автоматично перепідключається; застосовується налаштування pong-timeout транспорту Gateway | Немає постійного з’єднання, яке може розірватися; повторні спроби виконуються для кожного запиту від Slack |
|
||||
|
||||
<Note>
|
||||
**Обирайте Socket Mode** для хостів з одним Gateway, ноутбуків розробників і on-prem мереж, які можуть виходити до `*.slack.com`, але не можуть приймати вхідний HTTPS.
|
||||
|
||||
**Обирайте HTTP Request URLs**, коли запускаєте кілька реплік Gateway за балансувальником навантаження, коли вихідний WSS заблокований, але вхідний HTTPS дозволений, або коли ви вже завершуєте Slack webhooks на зворотному проксі.
|
||||
</Note>
|
||||
|
||||
## Швидке налаштування
|
||||
|
||||
<Tabs>
|
||||
<Tab title="Socket Mode (за замовчуванням)">
|
||||
<Tab title="Socket Mode (типово)">
|
||||
<Steps>
|
||||
<Step title="Створіть новий Slack app">
|
||||
Відкрийте [api.slack.com/apps](https://api.slack.com/apps/new) → **Create New App** → **From a manifest** → виберіть свій робочий простір → вставте один із наведених нижче маніфестів → **Next** → **Create**.
|
||||
<Step title="Створіть новий застосунок Slack">
|
||||
Відкрийте [api.slack.com/apps](https://api.slack.com/apps/new) → **Create New App** → **From a manifest** → виберіть свій workspace → вставте один із маніфестів нижче → **Next** → **Create**.
|
||||
|
||||
<CodeGroup>
|
||||
|
||||
@ -166,10 +188,10 @@ x-i18n:
|
||||
</CodeGroup>
|
||||
|
||||
<Note>
|
||||
**Recommended** відповідає повному набору можливостей вбудованого Slack plugin: App Home, слеш-команди, файли, реакції, закріплення, групові DM і читання емодзі/груп користувачів. Виберіть **Minimal**, коли політика робочого простору обмежує scopes — він охоплює DM, історію каналів/груп, згадки та слеш-команди, але вилучає файли, реакції, закріплення, групові DM (`mpim:*`), `emoji:read` і `usergroups:read`. Див. [Контрольний список маніфесту та scopes](#manifest-and-scope-checklist), щоб дізнатися обґрунтування для кожного scope і додаткові параметри, як-от додаткові слеш-команди.
|
||||
**Recommended** відповідає повному набору функцій вбудованого Slack plugin: App Home, слеш-команди, файли, реакції, закріплення, групові DM та читання emoji/usergroup. Обирайте **Minimal**, коли політика workspace обмежує scopes — він покриває DM, історію каналів/груп, згадки та слеш-команди, але прибирає файли, реакції, закріплення, групові DM (`mpim:*`), `emoji:read` і `usergroups:read`. Див. [Чекліст маніфесту та scopes](#manifest-and-scope-checklist) для обґрунтування кожного scope й додаткових опцій, як-от додаткові слеш-команди.
|
||||
</Note>
|
||||
|
||||
Після того як Slack створить app:
|
||||
Після того як Slack створить застосунок:
|
||||
|
||||
- **Basic Information → App-Level Tokens → Generate Token and Scopes**: додайте `connections:write`, збережіть, скопіюйте значення `xapp-...`.
|
||||
- **Install App → Install to Workspace**: скопіюйте `xoxb-...` Bot User OAuth Token.
|
||||
@ -199,7 +221,7 @@ openclaw config patch --file ./slack.socket.patch.json5 --dry-run
|
||||
openclaw config patch --file ./slack.socket.patch.json5
|
||||
```
|
||||
|
||||
Резервний варіант через env (лише обліковий запис за замовчуванням):
|
||||
Резервний варіант через env (лише типовий обліковий запис):
|
||||
|
||||
```bash
|
||||
SLACK_APP_TOKEN=xapp-...
|
||||
@ -208,7 +230,7 @@ SLACK_BOT_TOKEN=xoxb-...
|
||||
|
||||
</Step>
|
||||
|
||||
<Step title="Запустіть gateway">
|
||||
<Step title="Запустіть Gateway">
|
||||
|
||||
```bash
|
||||
openclaw gateway
|
||||
@ -221,8 +243,8 @@ openclaw gateway
|
||||
|
||||
<Tab title="HTTP Request URLs">
|
||||
<Steps>
|
||||
<Step title="Створіть новий Slack app">
|
||||
Відкрийте [api.slack.com/apps](https://api.slack.com/apps/new) → **Create New App** → **From a manifest** → виберіть свій робочий простір → вставте один із наведених нижче маніфестів → замініть `https://gateway-host.example.com/slack/events` на публічну URL-адресу вашого Gateway → **Next** → **Create**.
|
||||
<Step title="Створіть новий застосунок Slack">
|
||||
Відкрийте [api.slack.com/apps](https://api.slack.com/apps/new) → **Create New App** → **From a manifest** → виберіть свій workspace → вставте один із маніфестів нижче → замініть `https://gateway-host.example.com/slack/events` на публічну URL-адресу Gateway → **Next** → **Create**.
|
||||
|
||||
<CodeGroup>
|
||||
|
||||
@ -305,7 +327,7 @@ openclaw gateway
|
||||
}
|
||||
```
|
||||
|
||||
```json Minimal
|
||||
```json Мінімальний
|
||||
{
|
||||
"display_information": {
|
||||
"name": "OpenClaw",
|
||||
@ -368,9 +390,13 @@ openclaw gateway
|
||||
</CodeGroup>
|
||||
|
||||
<Note>
|
||||
**Recommended** відповідає повному набору можливостей вбудованого Slack plugin; **Minimal** вилучає файли, реакції, закріплення, групові DM (`mpim:*`), `emoji:read` і `usergroups:read` для робочих просторів із суворими обмеженнями. Див. [Контрольний список маніфесту та scopes](#manifest-and-scope-checklist), щоб дізнатися обґрунтування для кожного scope.
|
||||
**Рекомендований** відповідає повному набору функцій вбудованого Slack plugin; **Мінімальний** вилучає файли, реакції, закріплення, групові DM (`mpim:*`), `emoji:read` і `usergroups:read` для робочих просторів із суворими обмеженнями. Див. [контрольний список маніфеста й scope](#manifest-and-scope-checklist), щоб отримати обґрунтування для кожного scope.
|
||||
</Note>
|
||||
|
||||
<Info>
|
||||
Усі три поля URL (`slash_commands[].url`, `event_subscriptions.request_url` і `interactivity.request_url` / `message_menu_options_url`) вказують на той самий endpoint OpenClaw. Схема маніфеста Slack вимагає, щоб вони називалися окремо, але OpenClaw маршрутизує за типом payload, тож достатньо одного `webhookPath` (типово `/slack/events`). Slash-команди без `slash_commands[].url` у режимі HTTP непомітно не виконуватимуть жодної дії.
|
||||
</Info>
|
||||
|
||||
Після того як Slack створить app:
|
||||
|
||||
- **Basic Information → App Credentials**: скопіюйте **Signing Secret** для перевірки запитів.
|
||||
@ -405,7 +431,7 @@ openclaw config patch --file ./slack.http.patch.json5
|
||||
<Note>
|
||||
Використовуйте унікальні шляхи Webhook для HTTP із кількома обліковими записами
|
||||
|
||||
Надайте кожному обліковому запису окремий `webhookPath` (за замовчуванням `/slack/events`), щоб реєстрації не конфліктували.
|
||||
Надайте кожному обліковому запису окремий `webhookPath` (типово `/slack/events`), щоб реєстрації не конфліктували.
|
||||
</Note>
|
||||
|
||||
</Step>
|
||||
@ -424,7 +450,7 @@ openclaw gateway
|
||||
|
||||
## Налаштування транспорту Socket Mode
|
||||
|
||||
OpenClaw за замовчуванням встановлює для клієнта Slack SDK тайм-аут pong у 15 секунд для Socket Mode. Перевизначайте параметри транспорту лише тоді, коли потрібне налаштування під конкретний робочий простір або хост:
|
||||
OpenClaw типово встановлює для клієнта Slack SDK тайм-аут pong у 15 секунд для Socket Mode. Перевизначайте налаштування транспорту лише тоді, коли потрібне налаштування під конкретний робочий простір або хост:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -441,13 +467,13 @@ OpenClaw за замовчуванням встановлює для клієн
|
||||
}
|
||||
```
|
||||
|
||||
Використовуйте це лише для робочих просторів Socket Mode, які журналюють тайм-аути pong/server-ping вебсокета Slack, або працюють на хостах із відомим блокуванням event loop. `clientPingTimeout` — це очікування pong після того, як SDK надсилає client ping; `serverPingTimeout` — це очікування server pings від Slack. Повідомлення й події app залишаються станом застосунку, а не сигналами живучості транспорту.
|
||||
Використовуйте це лише для робочих просторів Socket Mode, які журналюють тайм-аути Slack websocket pong/server-ping, або працюють на хостах із відомим голодуванням event loop. `clientPingTimeout` — це очікування pong після того, як SDK надсилає client ping; `serverPingTimeout` — це очікування ping від сервера Slack. Повідомлення й події app залишаються станом застосунку, а не сигналами живучості транспорту.
|
||||
|
||||
## Контрольний список маніфесту та scopes
|
||||
## Контрольний список маніфеста й scope
|
||||
|
||||
Базовий маніфест Slack app однаковий для Socket Mode і HTTP Request URLs. Відрізняється лише блок `settings` (і `url` слеш-команди).
|
||||
Базовий маніфест Slack app однаковий для Socket Mode і HTTP Request URLs. Відрізняється лише блок `settings` (і `url` slash-команди).
|
||||
|
||||
Базовий маніфест (Socket Mode за замовчуванням):
|
||||
Базовий маніфест (типово Socket Mode):
|
||||
|
||||
```json
|
||||
{
|
||||
@ -564,19 +590,19 @@ OpenClaw за замовчуванням встановлює для клієн
|
||||
}
|
||||
```
|
||||
|
||||
### Додаткові налаштування маніфесту
|
||||
### Додаткові налаштування маніфеста
|
||||
|
||||
Відкрийте різні функції, які розширюють наведені вище типові значення.
|
||||
Відкрийте різні функції, що розширюють наведені вище типові значення.
|
||||
|
||||
Типовий маніфест вмикає вкладку **Home** для Slack App Home і підписується на `app_home_opened`. Коли учасник робочого простору відкриває вкладку Home, OpenClaw публікує безпечний типовий вигляд Home за допомогою `views.publish`; корисне навантаження розмови або приватна конфігурація не включаються. Вкладка **Messages** залишається ввімкненою для приватних повідомлень Slack.
|
||||
Типовий маніфест вмикає вкладку Slack App Home **Home** і підписується на `app_home_opened`. Коли учасник робочого простору відкриває вкладку Home, OpenClaw публікує безпечний типовий Home view за допомогою `views.publish`; payload розмови або приватна конфігурація не включаються. Вкладка **Messages** залишається ввімкненою для Slack DM.
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Необов’язкові нативні slash-команди">
|
||||
|
||||
Замість однієї налаштованої команди можна використовувати кілька [нативних slash-команд](#commands-and-slash-behavior) з урахуванням нюансів:
|
||||
Можна використовувати кілька [нативних slash-команд](#commands-and-slash-behavior) замість однієї налаштованої команди, з певними нюансами:
|
||||
|
||||
- Використовуйте `/agentstatus` замість `/status`, оскільки команда `/status` зарезервована.
|
||||
- Одночасно можна зробити доступними не більше ніж 25 slash-команд.
|
||||
- Одночасно можна зробити доступними не більше 25 slash-команд.
|
||||
|
||||
Замініть наявний розділ `features.slash_commands` підмножиною [доступних команд](/uk/tools/slash-commands#command-list):
|
||||
|
||||
@ -705,7 +731,7 @@ OpenClaw за замовчуванням встановлює для клієн
|
||||
|
||||
</Tab>
|
||||
<Tab title="HTTP Request URLs">
|
||||
Використовуйте той самий список `slash_commands`, що й у Socket Mode вище, і додайте `"url": "https://gateway-host.example.com/slack/events"` до кожного запису. Приклад:
|
||||
Використовуйте той самий список `slash_commands`, що й вище для Socket Mode, і додайте `"url": "https://gateway-host.example.com/slack/events"` до кожного запису. Приклад:
|
||||
|
||||
```json
|
||||
{
|
||||
@ -731,13 +757,13 @@ OpenClaw за замовчуванням встановлює для клієн
|
||||
</Tabs>
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Необов’язкові області авторства (операції запису)">
|
||||
Додайте область бота `chat:write.customize`, якщо хочете, щоб вихідні повідомлення використовували ідентичність активного агента (власне ім’я користувача та піктограму) замість типової ідентичності застосунку Slack.
|
||||
<Accordion title="Додаткові області авторства (операції запису)">
|
||||
Додайте область бота `chat:write.customize`, якщо хочете, щоб вихідні повідомлення використовували активну ідентичність агента (користувацьке ім'я та піктограму) замість стандартної ідентичності застосунку Slack.
|
||||
|
||||
Якщо ви використовуєте піктограму emoji, Slack очікує синтаксис `:emoji_name:`.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Необов’язкові області токена користувача (операції читання)">
|
||||
<Accordion title="Додаткові області user-token (операції читання)">
|
||||
Якщо ви налаштовуєте `channels.slack.userToken`, типовими областями читання є:
|
||||
|
||||
- `channels:history`, `groups:history`, `im:history`, `mpim:history`
|
||||
@ -754,35 +780,35 @@ OpenClaw за замовчуванням встановлює для клієн
|
||||
## Модель токенів
|
||||
|
||||
- `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`).
|
||||
- HTTP-режим потребує `botToken` + `signingSecret`.
|
||||
- `botToken`, `appToken`, `signingSecret` і `userToken` приймають відкриті
|
||||
рядки або об'єкти SecretRef.
|
||||
- Токени конфігурації перевизначають резервне значення env.
|
||||
- Резервне значення env `SLACK_BOT_TOKEN` / `SLACK_APP_TOKEN` застосовується лише до стандартного облікового запису.
|
||||
- `userToken` (`xoxp-...`) доступний лише в конфігурації (без резервного значення env) і за замовчуванням має поведінку лише для читання (`userTokenReadOnly: true`).
|
||||
|
||||
Поведінка знімка стану:
|
||||
|
||||
- Перевірка облікового запису Slack відстежує поля `*Source` і `*Status`
|
||||
для кожних облікових даних (`botToken`, `appToken`, `signingSecret`, `userToken`).
|
||||
- Стан може бути `available`, `configured_unavailable` або `missing`.
|
||||
- Стан: `available`, `configured_unavailable` або `missing`.
|
||||
- `configured_unavailable` означає, що обліковий запис налаштовано через SecretRef
|
||||
або інше неінлайнове джерело секретів, але поточний шлях команди/середовища виконання
|
||||
не зміг отримати фактичне значення.
|
||||
- У режимі HTTP включено `signingSecretStatus`; у Socket Mode
|
||||
потрібна пара — `botTokenStatus` + `appTokenStatus`.
|
||||
або інше неінлайнове джерело секрету, але поточна команда/шлях виконання
|
||||
не змогли визначити фактичне значення.
|
||||
- У HTTP-режимі включено `signingSecretStatus`; у Socket Mode
|
||||
обов'язкова пара — це `botTokenStatus` + `appTokenStatus`.
|
||||
|
||||
<Tip>
|
||||
Для дій/читання каталогу токен користувача може мати перевагу, коли його налаштовано. Для записів перевага залишається за токеном бота; записи з токеном користувача дозволені лише коли `userTokenReadOnly: false` і токен бота недоступний.
|
||||
Для дій/читання каталогу user token може мати перевагу, коли його налаштовано. Для записів bot token залишається пріоритетним; записи через user-token дозволені лише коли `userTokenReadOnly: false` і bot token недоступний.
|
||||
</Tip>
|
||||
|
||||
## Дії та шлюзи
|
||||
|
||||
Дії Slack контролюються через `channels.slack.actions.*`.
|
||||
Дії Slack керуються `channels.slack.actions.*`.
|
||||
|
||||
Доступні групи дій у поточних інструментах Slack:
|
||||
Доступні групи дій у поточному інструментарії Slack:
|
||||
|
||||
| Група | Типово |
|
||||
| Група | За замовчуванням |
|
||||
| ---------- | ------- |
|
||||
| messages | увімкнено |
|
||||
| reactions | увімкнено |
|
||||
@ -790,26 +816,26 @@ OpenClaw за замовчуванням встановлює для клієн
|
||||
| memberInfo | увімкнено |
|
||||
| emojiList | увімкнено |
|
||||
|
||||
Поточні дії повідомлень Slack включають `send`, `upload-file`, `download-file`, `read`, `edit`, `delete`, `pin`, `unpin`, `list-pins`, `member-info` і `emoji-list`. `download-file` приймає ідентифікатори файлів Slack, показані у вхідних плейсхолдерах файлів, і повертає попередні перегляди зображень для зображень або метадані локального файлу для інших типів файлів.
|
||||
Поточні дії повідомлень Slack включають `send`, `upload-file`, `download-file`, `read`, `edit`, `delete`, `pin`, `unpin`, `list-pins`, `member-info` і `emoji-list`. `download-file` приймає ID файлів Slack, показані у вхідних заповнювачах файлів, і повертає попередні перегляди зображень для зображень або метадані локального файла для інших типів файлів.
|
||||
|
||||
## Контроль доступу та маршрутизація
|
||||
## Керування доступом і маршрутизація
|
||||
|
||||
<Tabs>
|
||||
<Tab title="Політика DM">
|
||||
`channels.slack.dmPolicy` контролює доступ DM. `channels.slack.allowFrom` — канонічний allowlist для DM.
|
||||
`channels.slack.dmPolicy` керує доступом до DM. `channels.slack.allowFrom` — канонічний список дозволів DM.
|
||||
|
||||
- `pairing` (типово)
|
||||
- `pairing` (за замовчуванням)
|
||||
- `allowlist`
|
||||
- `open` (потребує, щоб `channels.slack.allowFrom` містив `"*"`)
|
||||
- `disabled`
|
||||
|
||||
Прапорці DM:
|
||||
|
||||
- `dm.enabled` (типово true)
|
||||
- `dm.enabled` (за замовчуванням true)
|
||||
- `channels.slack.allowFrom`
|
||||
- `dm.allowFrom` (застаріле)
|
||||
- `dm.groupEnabled` (групові DM типово false)
|
||||
- `dm.groupChannels` (необов’язковий allowlist MPIM)
|
||||
- `dm.groupEnabled` (групові DM за замовчуванням false)
|
||||
- `dm.groupChannels` (необов'язковий список дозволів MPIM)
|
||||
|
||||
Пріоритет для кількох облікових записів:
|
||||
|
||||
@ -823,27 +849,27 @@ OpenClaw за замовчуванням встановлює для клієн
|
||||
|
||||
</Tab>
|
||||
|
||||
<Tab title="Політика каналів">
|
||||
`channels.slack.groupPolicy` контролює обробку каналів:
|
||||
<Tab title="Політика каналу">
|
||||
`channels.slack.groupPolicy` керує обробкою каналів:
|
||||
|
||||
- `open`
|
||||
- `allowlist`
|
||||
- `disabled`
|
||||
|
||||
Allowlist каналів розміщується в `channels.slack.channels` і **має використовувати стабільні ідентифікатори каналів Slack** (наприклад `C12345678`) як ключі конфігурації.
|
||||
Список дозволів каналів міститься в `channels.slack.channels` і **має використовувати стабільні ID каналів Slack** (наприклад, `C12345678`) як ключі конфігурації.
|
||||
|
||||
Примітка щодо середовища виконання: якщо `channels.slack` повністю відсутній (налаштування лише через env), середовище виконання повертається до `groupPolicy="allowlist"` і записує попередження в журнал (навіть якщо `channels.defaults.groupPolicy` задано).
|
||||
Примітка щодо виконання: якщо `channels.slack` повністю відсутній (налаштування лише через env), середовище виконання повертається до `groupPolicy="allowlist"` і записує попередження в журнал (навіть якщо `channels.defaults.groupPolicy` задано).
|
||||
|
||||
Розпізнавання назви/ідентифікатора:
|
||||
Розпізнавання імені/ID:
|
||||
|
||||
- записи списку дозволених каналів і записи списку дозволених DM розпізнаються під час запуску, коли доступ до токена це дозволяє
|
||||
- нерозпізнані записи з назвами каналів зберігаються як налаштовано, але типово ігноруються для маршрутизації
|
||||
- вхідна авторизація та маршрутизація каналів типово спершу використовують ID; пряме зіставлення за іменем користувача/slug потребує `channels.slack.dangerouslyAllowNameMatching: true`
|
||||
- записи списку дозволів каналів і записи списку дозволів DM розпізнаються під час запуску, коли доступ токена це дозволяє
|
||||
- нерозпізнані записи з іменами каналів зберігаються як налаштовані, але за замовчуванням ігноруються для маршрутизації
|
||||
- вхідна авторизація та маршрутизація каналів за замовчуванням спершу використовують ID; пряме зіставлення імені користувача/slug потребує `channels.slack.dangerouslyAllowNameMatching: true`
|
||||
|
||||
<Warning>
|
||||
Ключі на основі назв (`#channel-name` або `channel-name`) **не** збігаються за `groupPolicy: "allowlist"`. Пошук каналу типово спершу використовує ID, тому ключ на основі назви ніколи не маршрутизуватиметься успішно, а всі повідомлення в цьому каналі буде мовчки заблоковано. Це відрізняється від `groupPolicy: "open"`, де ключ каналу не потрібен для маршрутизації, а ключ на основі назви здається робочим.
|
||||
Ключі на основі імен (`#channel-name` або `channel-name`) **не** збігаються за `groupPolicy: "allowlist"`. Пошук каналу за замовчуванням спершу використовує ID, тому ключ на основі імені ніколи не маршрутизуватиметься успішно, а всі повідомлення в цьому каналі буде тихо заблоковано. Це відрізняється від `groupPolicy: "open"`, де ключ каналу не потрібен для маршрутизації, і здається, що ключ на основі імені працює.
|
||||
|
||||
Завжди використовуйте ID каналу Slack як ключ. Щоб знайти його: клацніть канал у Slack правою кнопкою миші → **Copy link** — ID (`C...`) зʼявиться в кінці URL.
|
||||
Завжди використовуйте ID каналу Slack як ключ. Щоб знайти його: клацніть канал у Slack правою кнопкою миші → **Copy link** — ID (`C...`) з'являється наприкінці URL.
|
||||
|
||||
Правильно:
|
||||
|
||||
@ -860,7 +886,7 @@ OpenClaw за замовчуванням встановлює для клієн
|
||||
}
|
||||
```
|
||||
|
||||
Неправильно (мовчки блокується за `groupPolicy: "allowlist"`):
|
||||
Неправильно (тихо блокується за `groupPolicy: "allowlist"`):
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -879,85 +905,85 @@ OpenClaw за замовчуванням встановлює для клієн
|
||||
</Tab>
|
||||
|
||||
<Tab title="Mentions and channel users">
|
||||
Повідомлення в каналах типово пропускаються лише за наявності згадки.
|
||||
Повідомлення каналів за замовчуванням обмежені згадками.
|
||||
|
||||
Джерела згадок:
|
||||
|
||||
- явна згадка застосунку (`<@botId>`)
|
||||
- згадка групи користувачів Slack (`<!subteam^S...>`), коли користувач бота є учасником цієї групи користувачів; потребує `usergroups:read`
|
||||
- regex-шаблони згадок (`agents.list[].groupChat.mentionPatterns`, резервний варіант `messages.groupChat.mentionPatterns`)
|
||||
- неявна поведінка гілки з відповіддю боту (вимкнено, коли `thread.requireExplicitMention` має значення `true`)
|
||||
- шаблони регулярних виразів для згадок (`agents.list[].groupChat.mentionPatterns`, резервно `messages.groupChat.mentionPatterns`)
|
||||
- неявна поведінка відповіді на потік із ботом (вимкнено, коли `thread.requireExplicitMention` має значення `true`)
|
||||
|
||||
Поканальні елементи керування (`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:`)
|
||||
|
||||
`allowBots` є консервативним для каналів і приватних каналів: повідомлення кімнати, написані ботом, приймаються лише тоді, коли бот-відправник явно вказаний у списку дозволених `users` цієї кімнати, або коли принаймні один явний ID власника Slack із `channels.slack.allowFrom` наразі є учасником кімнати. Wildcard і записи власників за відображуваним іменем не задовольняють умову присутності власника. Присутність власника використовує Slack `conversations.members`; переконайтеся, що застосунок має відповідний read-scope для типу кімнати (`channels:read` для публічних каналів, `groups:read` для приватних каналів). Якщо пошук учасників не вдається, OpenClaw відкидає повідомлення кімнати, написане ботом.
|
||||
`allowBots` є консервативним для каналів і приватних каналів: повідомлення кімнати, створені ботом, приймаються лише тоді, коли бот-відправник явно вказаний в allowlist `users` цієї кімнати, або коли принаймні один явний ID власника Slack із `channels.slack.allowFrom` зараз є учасником кімнати. Символи узагальнення та записи власників за відображуваним іменем не задовольняють наявність власника. Наявність власника використовує `conversations.members` Slack; переконайтеся, що застосунок має відповідну область читання для типу кімнати (`channels:read` для публічних каналів, `groups:read` для приватних каналів). Якщо пошук учасників завершується невдало, OpenClaw відкидає повідомлення кімнати, створене ботом.
|
||||
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
## Гілки, сеанси та теги відповіді
|
||||
## Потоки, сеанси та теги відповідей
|
||||
|
||||
- DM маршрутизуються як `direct`; канали як `channel`; MPIM як `group`.
|
||||
- Привʼязки маршрутів Slack приймають необроблені ID учасників, а також цільові форми Slack, як-от `channel:C12345678`, `user:U12345678` і `<@U12345678>`.
|
||||
- За типового `session.dmScope=main` DM Slack згортаються в головний сеанс агента.
|
||||
- Прив'язки маршрутів Slack приймають сирі ID співрозмовників, а також форми цілей Slack, як-от `channel:C12345678`, `user:U12345678` і `<@U12345678>`.
|
||||
- З типовим `session.dmScope=main` DM 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.requireExplicitMention` (типово `false`): коли `true`, пригнічує неявні згадки в гілці, щоб бот відповідав лише на явні згадки `@bot` у гілках, навіть якщо бот уже брав участь у гілці. Без цього відповіді в гілці за участі бота обходять фільтр `requireMention`.
|
||||
- `channels.slack.thread.initialHistoryLimit` керує кількістю наявних повідомлень потоку, які отримуються під час запуску нового сеансу потоку (типово `20`; установіть `0`, щоб вимкнути).
|
||||
- `channels.slack.thread.requireExplicitMention` (типово `false`): коли `true`, пригнічує неявні згадки в потоках, щоб бот відповідав лише на явні згадки `@bot` усередині потоків, навіть якщо бот уже брав участь у потоці. Без цього відповіді в потоці, де брав участь бот, обходять обмеження `requireMention`.
|
||||
|
||||
Елементи керування гілками відповідей:
|
||||
Елементи керування потоками відповідей:
|
||||
|
||||
- `channels.slack.replyToMode`: `off|first|all|batched` (типово `off`)
|
||||
- `channels.slack.replyToModeByChatType`: для кожного `direct|group|channel`
|
||||
- `channels.slack.replyToModeByChatType`: окремо для `direct|group|channel`
|
||||
- застарілий резервний варіант для прямих чатів: `channels.slack.dm.replyToMode`
|
||||
|
||||
Підтримуються ручні теги відповіді:
|
||||
Підтримуються ручні теги відповідей:
|
||||
|
||||
- `[[reply_to_current]]`
|
||||
- `[[reply_to:<id>]]`
|
||||
|
||||
<Note>
|
||||
`replyToMode="off"` вимикає **всі** гілки відповідей у Slack, включно з явними тегами `[[reply_to_*]]`. Це відрізняється від Telegram, де явні теги досі враховуються в режимі `"off"`. Гілки Slack приховують повідомлення з каналу, тоді як відповіді Telegram залишаються видимими в рядку.
|
||||
`replyToMode="off"` вимикає **всі** потоки відповідей у Slack, включно з явними тегами `[[reply_to_*]]`. Це відрізняється від Telegram, де явні теги й надалі враховуються в режимі `"off"`. Потоки Slack приховують повідомлення з каналу, тоді як відповіді Telegram залишаються видимими в рядку.
|
||||
</Note>
|
||||
|
||||
## Реакції підтвердження
|
||||
|
||||
`ackReaction` надсилає emoji підтвердження, поки OpenClaw обробляє вхідне повідомлення.
|
||||
`ackReaction` надсилає емодзі підтвердження, поки OpenClaw обробляє вхідне повідомлення.
|
||||
|
||||
Порядок розпізнавання:
|
||||
Порядок розв'язання:
|
||||
|
||||
- `channels.slack.accounts.<accountId>.ackReaction`
|
||||
- `channels.slack.ackReaction`
|
||||
- `messages.ackReaction`
|
||||
- резервний emoji ідентичності агента (`agents.list[].identity.emoji`, інакше "👀")
|
||||
- резервний емодзі ідентичності агента (`agents.list[].identity.emoji`, інакше "👀")
|
||||
|
||||
Примітки:
|
||||
|
||||
- Slack очікує shortcodes (наприклад, `"eyes"`).
|
||||
- Slack очікує короткі коди (наприклад, `"eyes"`).
|
||||
- Використовуйте `""`, щоб вимкнути реакцію для облікового запису Slack або глобально.
|
||||
|
||||
## Потокове передавання тексту
|
||||
## Текстове потокове передавання
|
||||
|
||||
`channels.slack.streaming` керує поведінкою живого попереднього перегляду:
|
||||
|
||||
- `off`: вимкнути потокове передавання живого попереднього перегляду.
|
||||
- `partial` (типово): замінювати текст попереднього перегляду найновішим частковим виводом.
|
||||
- `block`: додавати фрагментовані оновлення попереднього перегляду.
|
||||
- `progress`: показувати текст стану прогресу під час генерації, потім надсилати фінальний текст.
|
||||
- `streaming.preview.toolProgress`: коли активний чернетковий попередній перегляд, спрямовувати оновлення інструментів/прогресу в те саме редаговане повідомлення попереднього перегляду (типово: `true`). Задайте `false`, щоб зберігати окремі повідомлення інструментів/прогресу.
|
||||
- `streaming.preview.commandText` / `streaming.progress.commandText`: задайте `status`, щоб зберігати компактні рядки прогресу інструментів, приховуючи необроблений текст команд/exec (типово: `raw`).
|
||||
- `progress`: показувати текст стану поступу під час генерації, а потім надсилати фінальний текст.
|
||||
- `streaming.preview.toolProgress`: коли чернетковий попередній перегляд активний, спрямовувати оновлення інструментів/поступу в те саме редаговане повідомлення попереднього перегляду (типово: `true`). Установіть `false`, щоб зберігати окремі повідомлення інструментів/поступу.
|
||||
- `streaming.preview.commandText` / `streaming.progress.commandText`: установіть `status`, щоб зберігати компактні рядки поступу інструментів, приховуючи сирий текст команд/виконання (типово: `raw`).
|
||||
|
||||
Приховати необроблений текст команд/exec, зберігаючи компактні рядки прогресу:
|
||||
Приховати сирий текст команд/виконання, зберігаючи компактні рядки поступу:
|
||||
|
||||
```json
|
||||
{
|
||||
@ -975,16 +1001,16 @@ OpenClaw за замовчуванням встановлює для клієн
|
||||
}
|
||||
```
|
||||
|
||||
`channels.slack.streaming.nativeTransport` керує нативним потоковим передаванням тексту Slack, коли `channels.slack.streaming.mode` має значення `partial` (типово: `true`).
|
||||
`channels.slack.streaming.nativeTransport` керує нативним текстовим потоковим передаванням Slack, коли `channels.slack.streaming.mode` має значення `partial` (типово: `true`).
|
||||
|
||||
- Для появи нативного потокового передавання тексту та стану гілки помічника Slack має бути доступна гілка відповіді. Вибір гілки досі відповідає `replyToMode`.
|
||||
- Канали, групові чати та кореневі повідомлення DM верхнього рівня досі можуть використовувати звичайний чернетковий попередній перегляд, коли нативне потокове передавання недоступне або гілки відповіді немає.
|
||||
- DM Slack верхнього рівня типово залишаються поза гілками, тому вони не показують нативний потоковий/статусний попередній перегляд Slack у стилі гілки; натомість OpenClaw публікує й редагує чернетковий попередній перегляд у DM.
|
||||
- Медіа та нетекстові payloads повертаються до звичайної доставки.
|
||||
- Фінальні медіа/помилки скасовують очікувані редагування попереднього перегляду; придатні фінальні текстові/блокові повідомлення скидаються лише тоді, коли вони можуть редагувати попередній перегляд на місці.
|
||||
- Якщо потокове передавання зазнає збою посеред відповіді, OpenClaw повертається до звичайної доставки для решти payloads.
|
||||
- Для появи нативного текстового потокового передавання та стану потоку асистента Slack має бути доступний потік відповіді. Вибір потоку й надалі дотримується `replyToMode`.
|
||||
- Канали, групові чати та кореневі повідомлення DM верхнього рівня й надалі можуть використовувати звичайний чернетковий попередній перегляд, коли нативне потокове передавання недоступне або немає потоку відповіді.
|
||||
- DM Slack верхнього рівня за замовчуванням залишаються поза потоками, тому вони не показують нативний попередній перегляд потоку/стану Slack у стилі потоку; натомість OpenClaw публікує та редагує чернетковий попередній перегляд у DM.
|
||||
- Медіа та нетекстові корисні навантаження повертаються до звичайної доставки.
|
||||
- Фінальні медіа/помилки скасовують очікувані редагування попереднього перегляду; придатні текстові/блокові фінальні повідомлення скидаються лише тоді, коли вони можуть редагувати попередній перегляд на місці.
|
||||
- Якщо потокове передавання завершується невдало посеред відповіді, OpenClaw повертається до звичайної доставки для решти корисних навантажень.
|
||||
|
||||
Використати чернетковий попередній перегляд замість нативного потокового передавання тексту Slack:
|
||||
Використовуйте чернетковий попередній перегляд замість нативного текстового потокового передавання Slack:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -1001,41 +1027,41 @@ OpenClaw за замовчуванням встановлює для клієн
|
||||
|
||||
Застарілі ключі:
|
||||
|
||||
- `channels.slack.streamMode` (`replace | status_final | append`) автоматично мігрує до `channels.slack.streaming.mode`.
|
||||
- boolean `channels.slack.streaming` автоматично мігрує до `channels.slack.streaming.mode` і `channels.slack.streaming.nativeTransport`.
|
||||
- застарілий `channels.slack.nativeStreaming` автоматично мігрує до `channels.slack.streaming.nativeTransport`.
|
||||
- `channels.slack.streamMode` (`replace | status_final | append`) автоматично мігрується до `channels.slack.streaming.mode`.
|
||||
- булевий `channels.slack.streaming` автоматично мігрується до `channels.slack.streaming.mode` і `channels.slack.streaming.nativeTransport`.
|
||||
- застарілий `channels.slack.nativeStreaming` автоматично мігрується до `channels.slack.streaming.nativeTransport`.
|
||||
|
||||
## Резервна реакція введення
|
||||
## Резервна реакція набору тексту
|
||||
|
||||
`typingReaction` додає тимчасову реакцію до вхідного повідомлення Slack, поки OpenClaw обробляє відповідь, а потім видаляє її, коли виконання завершується. Це найкорисніше поза відповідями в гілках, які використовують типовий індикатор стану "is typing...".
|
||||
`typingReaction` додає тимчасову реакцію до вхідного повідомлення Slack, поки OpenClaw обробляє відповідь, а потім видаляє її після завершення запуску. Це найкорисніше поза відповідями в гілках, які використовують типовий індикатор стану "is typing...".
|
||||
|
||||
Порядок розпізнавання:
|
||||
Порядок розв’язання:
|
||||
|
||||
- `channels.slack.accounts.<accountId>.typingReaction`
|
||||
- `channels.slack.typingReaction`
|
||||
|
||||
Примітки:
|
||||
|
||||
- Slack очікує shortcodes (наприклад, `"hourglass_flowing_sand"`).
|
||||
- Реакція виконується за принципом best-effort, а очищення автоматично виконується після завершення відповіді або шляху помилки.
|
||||
- Slack очікує короткі коди (наприклад `"hourglass_flowing_sand"`).
|
||||
- Реакція виконується за принципом best-effort, а очищення автоматично пробується після завершення відповіді або шляху помилки.
|
||||
|
||||
## Медіа, фрагментація та доставка
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Inbound attachments">
|
||||
Файлові вкладення Slack завантажуються з приватних URL, розміщених Slack (потік запиту з автентифікацією токеном), і записуються до сховища медіа, коли отримання успішне й обмеження розміру це дозволяють. Заповнювачі файлів включають Slack `fileId`, щоб агенти могли отримати оригінальний файл через `download-file`.
|
||||
Файлові вкладення Slack завантажуються з приватних URL, розміщених у Slack (потік запиту з автентифікацією токеном), і записуються до сховища медіа, коли отримання успішне та обмеження розміру це дозволяють. Заповнювачі файлів містять Slack `fileId`, щоб агенти могли отримати оригінальний файл через `download-file`.
|
||||
|
||||
Завантаження використовують обмежені тайм-аути простою та загального часу. Якщо отримання файлу Slack зависає або завершується з помилкою, OpenClaw продовжує обробляти повідомлення й повертається до заповнювача файлу.
|
||||
Завантаження використовують обмежені тайм-аути простою та загального часу. Якщо отримання файлу Slack зависає або завершується помилкою, OpenClaw продовжує обробляти повідомлення й повертається до заповнювача файлу.
|
||||
|
||||
Типове runtime-обмеження розміру вхідних даних — `20MB`, якщо його не перевизначено через `channels.slack.mediaMaxMb`.
|
||||
Стандартне обмеження розміру вхідних даних під час виконання становить `20MB`, якщо його не перевизначено через `channels.slack.mediaMaxMb`.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Outbound text and files">
|
||||
- текстові фрагменти використовують `channels.slack.textChunkLimit` (типово 4000)
|
||||
- `channels.slack.chunkMode="newline"` вмикає розбиття зі пріоритетом абзаців
|
||||
- надсилання файлів використовують API завантаження Slack і можуть включати відповіді в гілках (`thread_ts`)
|
||||
- обмеження вихідних медіа відповідає `channels.slack.mediaMaxMb`, коли налаштовано; інакше надсилання в канал використовує типові значення за MIME-типом із media pipeline
|
||||
- `channels.slack.chunkMode="newline"` вмикає поділ із пріоритетом абзаців
|
||||
- надсилання файлів використовує API завантаження Slack і може включати відповіді в гілках (`thread_ts`)
|
||||
- обмеження вихідних медіа бере `channels.slack.mediaMaxMb`, коли його налаштовано; інакше надсилання в канали використовує типові значення MIME-виду з конвеєра медіа
|
||||
|
||||
</Accordion>
|
||||
|
||||
@ -1045,14 +1071,14 @@ OpenClaw за замовчуванням встановлює для клієн
|
||||
- `user:<id>` для DM
|
||||
- `channel:<id>` для каналів
|
||||
|
||||
DM Slack лише з текстом/блоками можуть публікуватися безпосередньо в ID користувачів; завантаження файлів і надсилання в гілках спершу відкривають DM через API розмов Slack, оскільки ці шляхи потребують конкретного ID розмови.
|
||||
Текстові або лише блокові DM Slack можуть публікуватися безпосередньо за ID користувачів; завантаження файлів і надсилання в гілках спочатку відкривають DM через API розмов Slack, бо ці шляхи потребують конкретного ID розмови.
|
||||
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## Команди та поведінка slash
|
||||
|
||||
Slash-команди зʼявляються в Slack або як одна налаштована команда, або як кілька нативних команд. Налаштуйте `channels.slack.slashCommand`, щоб змінити типові значення команд:
|
||||
Slash-команди з’являються у Slack як одна налаштована команда або кілька нативних команд. Налаштуйте `channels.slack.slashCommand`, щоб змінити стандартні параметри команди:
|
||||
|
||||
- `enabled: false`
|
||||
- `name: "openclaw"`
|
||||
@ -1063,32 +1089,32 @@ Slash-команди зʼявляються в Slack або як одна нал
|
||||
/openclaw /help
|
||||
```
|
||||
|
||||
Нативні команди потребують [додаткових налаштувань маніфесту](#additional-manifest-settings) у вашому застосунку Slack і натомість вмикаються через `channels.slack.commands.native: true` або `commands.native: true` у глобальних конфігураціях.
|
||||
Нативні команди потребують [додаткових налаштувань маніфесту](#additional-manifest-settings) у вашій програмі Slack і натомість вмикаються через `channels.slack.commands.native: true` або `commands.native: true` у глобальних конфігураціях.
|
||||
|
||||
- Автоматичний режим нативних команд **вимкнено** для Slack, тому `commands.native: "auto"` не вмикає нативні команди Slack.
|
||||
- Автоматичний режим нативних команд для Slack **вимкнено**, тому `commands.native: "auto"` не вмикає нативні команди Slack.
|
||||
|
||||
```txt
|
||||
/help
|
||||
```
|
||||
|
||||
Меню аргументів нативних команд використовують адаптивну стратегію рендерингу, яка показує модальне підтвердження перед dispatch вибраного значення опції:
|
||||
Меню нативних аргументів використовують адаптивну стратегію відображення, яка показує модальне вікно підтвердження перед dispatch вибраного значення опції:
|
||||
|
||||
- до 5 опцій: блоки кнопок
|
||||
- 6-100 опцій: статичне меню вибору
|
||||
- понад 100 опцій: зовнішній select з асинхронною фільтрацією опцій, коли доступні обробники interactivity options
|
||||
- перевищені ліміти Slack: закодовані значення опцій повертаються до кнопок
|
||||
- понад 100 опцій: зовнішній вибір з асинхронною фільтрацією опцій, коли доступні обробники параметрів інтерактивності
|
||||
- перевищено обмеження Slack: закодовані значення опцій повертаються до кнопок
|
||||
|
||||
```txt
|
||||
/think
|
||||
```
|
||||
|
||||
Slash-сеанси використовують ізольовані ключі на кшталт `agent:<agentId>:slack:slash:<userId>` і досі маршрутизують виконання команд до цільового сеансу розмови за допомогою `CommandTargetSessionKey`.
|
||||
Slash-сесії використовують ізольовані ключі на кшталт `agent:<agentId>:slack:slash:<userId>` і все одно спрямовують виконання команд до цільової сесії розмови за допомогою `CommandTargetSessionKey`.
|
||||
|
||||
## Інтерактивні відповіді
|
||||
|
||||
Slack може рендерити інтерактивні елементи керування відповідями, створені агентом, але цю функцію типово вимкнено.
|
||||
Slack може відображати інтерактивні елементи керування відповідями, створені агентом, але ця функція типово вимкнена.
|
||||
|
||||
Увімкнути її глобально:
|
||||
Увімкніть її глобально:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -1102,7 +1128,7 @@ Slack може рендерити інтерактивні елементи ке
|
||||
}
|
||||
```
|
||||
|
||||
Або увімкнути її лише для одного облікового запису Slack:
|
||||
Або ввімкніть її лише для одного облікового запису Slack:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -1120,31 +1146,31 @@ 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. Інші канали не перекладають директиви Slack Block Kit у власні системи кнопок.
|
||||
- Значення інтерактивних callback — це згенеровані OpenClaw непрозорі токени, а не сирі значення, створені агентом.
|
||||
- Якщо згенеровані інтерактивні блоки перевищуватимуть обмеження Slack Block Kit, OpenClaw повертається до початкової текстової відповіді замість надсилання недійсного payload блоків.
|
||||
- Це UI, специфічний для Slack. Інші канали не перекладають директиви Slack Block Kit у власні системи кнопок.
|
||||
- Значення інтерактивних callback — це непрозорі токени, згенеровані OpenClaw, а не сирі значення, створені агентом.
|
||||
- Якщо згенеровані інтерактивні блоки перевищили б обмеження Slack Block Kit, OpenClaw повертається до початкової текстової відповіді замість надсилання недійсного корисного навантаження блоків.
|
||||
|
||||
## Схвалення exec у Slack
|
||||
## Exec-затвердження у Slack
|
||||
|
||||
Slack може працювати як нативний клієнт схвалень з інтерактивними кнопками та взаємодіями замість повернення до вебінтерфейсу або термінала.
|
||||
Slack може діяти як нативний клієнт затвердження з інтерактивними кнопками та взаємодіями, замість повернення до Web UI або термінала.
|
||||
|
||||
- Схвалення exec використовують `channels.slack.execApprovals.*` для нативної маршрутизації DM/каналу.
|
||||
- Схвалення Plugin все ще можуть оброблятися через ту саму нативну для Slack поверхню кнопок, коли запит уже потрапляє в Slack і тип id схвалення — `plugin:`.
|
||||
- Авторизація схвалювачів усе ще застосовується: лише користувачі, визначені як схвалювачі, можуть схвалювати або відхиляти запити через Slack.
|
||||
- Exec-затвердження використовують `channels.slack.execApprovals.*` для нативної маршрутизації DM/каналу.
|
||||
- Plugin-затвердження все ще можуть розв’язуватися через ту саму нативну для Slack поверхню кнопок, коли запит уже потрапляє у Slack і вид ID затвердження — `plugin:`.
|
||||
- Авторизація затверджувачів усе ще застосовується: лише користувачі, визначені як затверджувачі, можуть затверджувати або відхиляти запити через Slack.
|
||||
|
||||
Це використовує ту саму спільну поверхню кнопок схвалення, що й інші канали. Коли `interactivity` увімкнено в налаштуваннях вашого застосунку Slack, запити на схвалення відображаються як кнопки Block Kit безпосередньо в розмові.
|
||||
Коли ці кнопки присутні, вони є основним UX для схвалення; OpenClaw
|
||||
має включати ручну команду `/approve` лише тоді, коли результат інструмента повідомляє, що схвалення
|
||||
в чаті недоступні або ручне схвалення є єдиним шляхом.
|
||||
Це використовує ту саму спільну поверхню кнопок затвердження, що й інші канали. Коли `interactivity` увімкнено в налаштуваннях вашої програми Slack, запити на затвердження відображаються як кнопки Block Kit безпосередньо в розмові.
|
||||
Коли ці кнопки наявні, вони є основним UX затвердження; OpenClaw
|
||||
має включати ручну команду `/approve` лише тоді, коли результат інструмента каже, що chat
|
||||
затвердження недоступні або ручне затвердження є єдиним шляхом.
|
||||
|
||||
Шлях конфігурації:
|
||||
|
||||
@ -1153,11 +1179,11 @@ Slack може працювати як нативний клієнт схвал
|
||||
- `channels.slack.execApprovals.target` (`dm` | `channel` | `both`, типово: `dm`)
|
||||
- `agentFilter`, `sessionFilter`
|
||||
|
||||
Slack автоматично вмикає нативні схвалення exec, коли `enabled` не задано або має значення `"auto"` і визначено принаймні одного
|
||||
схвалювача. Установіть `enabled: false`, щоб явно вимкнути Slack як нативний клієнт схвалень.
|
||||
Установіть `enabled: true`, щоб примусово ввімкнути нативні схвалення, коли визначено схвалювачів.
|
||||
Slack автоматично вмикає нативні exec-затвердження, коли `enabled` не задано або має значення `"auto"` і принаймні один
|
||||
затверджувач розв’язується. Установіть `enabled: false`, щоб явно вимкнути Slack як нативний клієнт затвердження.
|
||||
Установіть `enabled: true`, щоб примусово ввімкнути нативні затвердження, коли затверджувачі розв’язуються.
|
||||
|
||||
Типова поведінка без явної конфігурації схвалень exec у Slack:
|
||||
Типова поведінка без явної конфігурації exec-затверджень Slack:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -1167,8 +1193,8 @@ Slack автоматично вмикає нативні схвалення exec
|
||||
}
|
||||
```
|
||||
|
||||
Явна нативна конфігурація Slack потрібна лише тоді, коли ви хочете перевизначити схвалювачів, додати фільтри або
|
||||
увімкнути доставку в чат походження:
|
||||
Явна нативна конфігурація Slack потрібна лише тоді, коли потрібно перевизначити затверджувачів, додати фільтри або
|
||||
вибрати доставку в початковий чат:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -1184,52 +1210,52 @@ Slack автоматично вмикає нативні схвалення exec
|
||||
}
|
||||
```
|
||||
|
||||
Спільне переспрямування `approvals.exec` є окремим. Використовуйте його лише тоді, коли запити на схвалення exec також мають
|
||||
Спільне переспрямування `approvals.exec` є окремим. Використовуйте його лише тоді, коли запити exec-затвердження також мають
|
||||
маршрутизуватися до інших чатів або явних позасмугових цілей. Спільне переспрямування `approvals.plugin` також
|
||||
окреме; нативні кнопки Slack усе ще можуть обробляти схвалення Plugin, коли ці запити вже потрапляють
|
||||
окреме; нативні кнопки Slack усе ще можуть розв’язувати Plugin-затвердження, коли ці запити вже потрапляють
|
||||
у Slack.
|
||||
|
||||
Same-chat `/approve` також працює в каналах Slack і DM, які вже підтримують команди. Див. [Схвалення exec](/uk/tools/exec-approvals), щоб переглянути повну модель переспрямування схвалень.
|
||||
`/approve` у тому самому чаті також працює в каналах Slack і DM, які вже підтримують команди. Див. [Exec-затвердження](/uk/tools/exec-approvals), щоб ознайомитися з повною моделлю переспрямування затверджень.
|
||||
|
||||
## Події та операційна поведінка
|
||||
|
||||
- Редагування/видалення повідомлень відображаються в системні події.
|
||||
- Трансляції тредів (відповіді треду з «Also send to channel») обробляються як звичайні повідомлення користувача.
|
||||
- Події додавання/видалення реакцій відображаються в системні події.
|
||||
- Події приєднання/виходу учасника, створення/перейменування каналу та додавання/видалення закріплення відображаються в системні події.
|
||||
- `channel_id_changed` може мігрувати ключі конфігурації каналів, коли ввімкнено `configWrites`.
|
||||
- Метадані теми/призначення каналу вважаються ненадійним контекстом і можуть бути вставлені в контекст маршрутизації.
|
||||
- Початкове повідомлення треду та засівання початкового контексту історії треду фільтруються налаштованими allowlist відправників, коли це застосовно.
|
||||
- Дії блоків і взаємодії з модальними вікнами створюють структуровані системні події `Slack interaction: ...` з насиченими полями payload:
|
||||
- дії блоків: вибрані значення, мітки, значення picker та метадані `workflow_*`
|
||||
- події modal `view_submission` і `view_closed` з метаданими маршрутизованого каналу та введеннями форми
|
||||
- Редагування/видалення повідомлень зіставляються із системними подіями.
|
||||
- Трансляції гілок (відповіді в гілках "Also send to channel") обробляються як звичайні повідомлення користувачів.
|
||||
- Події додавання/видалення реакцій зіставляються із системними подіями.
|
||||
- Події входу/виходу учасників, створення/перейменування каналу та додавання/видалення закріплень зіставляються із системними подіями.
|
||||
- `channel_id_changed` може мігрувати ключі конфігурації каналів, коли `configWrites` увімкнено.
|
||||
- Метадані теми/призначення каналу вважаються ненадійним контекстом і можуть бути введені в контекст маршрутизації.
|
||||
- Початкове повідомлення гілки та засівання контексту початкової історії гілки фільтруються налаштованими allowlist відправників, коли це застосовно.
|
||||
- Дії блоків і модальні взаємодії створюють структуровані системні події `Slack interaction: ...` з багатими полями корисного навантаження:
|
||||
- дії блоків: вибрані значення, мітки, значення picker і метадані `workflow_*`
|
||||
- події модальних `view_submission` і `view_closed` із маршрутизованими метаданими каналу та введеннями форми
|
||||
|
||||
## Довідник конфігурації
|
||||
|
||||
Основний довідник: [Довідник конфігурації - Slack](/uk/gateway/config-channels#slack).
|
||||
|
||||
<Accordion title="Високосигнальні поля Slack">
|
||||
<Accordion title="High-signal Slack fields">
|
||||
|
||||
- режим/автентифікація: `mode`, `botToken`, `appToken`, `signingSecret`, `webhookPath`, `accounts.*`
|
||||
- доступ до DM: `dm.enabled`, `dmPolicy`, `allowFrom` (застаріле: `dm.policy`, `dm.allowFrom`), `dm.groupEnabled`, `dm.groupChannels`
|
||||
- перемикач сумісності: `dangerouslyAllowNameMatching` (break-glass; тримайте вимкненим, якщо не потрібно)
|
||||
- доступ до каналу: `groupPolicy`, `channels.*`, `channels.*.users`, `channels.*.requireMention`
|
||||
- треди/історія: `replyToMode`, `replyToModeByChatType`, `thread.*`, `historyLimit`, `dmHistoryLimit`, `dms.*.historyLimit`
|
||||
- гілки/історія: `replyToMode`, `replyToModeByChatType`, `thread.*`, `historyLimit`, `dmHistoryLimit`, `dms.*.historyLimit`
|
||||
- доставка: `textChunkLimit`, `chunkMode`, `mediaMaxMb`, `streaming`, `streaming.nativeTransport`, `streaming.preview.toolProgress`
|
||||
- ops/функції: `configWrites`, `commands.native`, `slashCommand.*`, `actions.*`, `userToken`, `userTokenReadOnly`
|
||||
- операції/функції: `configWrites`, `commands.native`, `slashCommand.*`, `actions.*`, `userToken`, `userTokenReadOnly`
|
||||
|
||||
</Accordion>
|
||||
|
||||
## Усунення несправностей
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Немає відповідей у каналах">
|
||||
Перевірте в такому порядку:
|
||||
<Accordion title="No replies in channels">
|
||||
Перевірте по черзі:
|
||||
|
||||
- `groupPolicy`
|
||||
- allowlist каналів (`channels.slack.channels`) — **ключі мають бути ID каналів** (`C12345678`), а не назвами (`#channel-name`). Ключі на основі назв тихо не спрацьовують за `groupPolicy: "allowlist"`, тому що маршрутизація каналів типово спершу використовує ID. Щоб знайти ID: клацніть канал у Slack правою кнопкою → **Copy link** — значення `C...` наприкінці URL є ID каналу.
|
||||
- allowlist каналів (`channels.slack.channels`) — **ключами мають бути ID каналів** (`C12345678`), а не назви (`#channel-name`). Ключі на основі назв непомітно не спрацьовують із `groupPolicy: "allowlist"`, бо маршрутизація каналів типово спочатку використовує ID. Щоб знайти ID: клацніть канал у Slack правою кнопкою → **Copy link** — значення `C...` наприкінці URL є ID каналу.
|
||||
- `requireMention`
|
||||
- поканальний allowlist `users`
|
||||
- per-channel allowlist `users`
|
||||
|
||||
Корисні команди:
|
||||
|
||||
@ -1241,14 +1267,14 @@ openclaw doctor
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Повідомлення DM ігноруються">
|
||||
<Accordion title="DM messages ignored">
|
||||
Перевірте:
|
||||
|
||||
- `channels.slack.dm.enabled`
|
||||
- `channels.slack.dmPolicy` (або застаріле `channels.slack.dm.policy`)
|
||||
- схвалення pairing / записи allowlist
|
||||
- події DM Slack Assistant: докладні журнали зі згадкою `drop message_changed`
|
||||
зазвичай означають, що Slack надіслав відредаговану подію треду Assistant без
|
||||
- затвердження pairing / записи allowlist
|
||||
- Події DM Slack Assistant: докладні журнали зі згадкою `drop message_changed`
|
||||
зазвичай означають, що Slack надіслав подію редагованої гілки Assistant без
|
||||
відновлюваного людського відправника в метаданих повідомлення
|
||||
|
||||
```bash
|
||||
@ -1257,34 +1283,34 @@ openclaw pairing list slack
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Socket mode не підключається">
|
||||
Перевірте bot + app токени та ввімкнення Socket Mode у налаштуваннях застосунку Slack.
|
||||
<Accordion title="Socket mode not connecting">
|
||||
Перевірте токени бота й програми та ввімкнення Socket Mode у налаштуваннях програми Slack.
|
||||
|
||||
Якщо `openclaw channels status --probe --json` показує `botTokenStatus` або
|
||||
`appTokenStatus: "configured_unavailable"`, обліковий запис Slack
|
||||
налаштовано, але поточне середовище виконання не змогло визначити значення,
|
||||
підтримане SecretRef.
|
||||
налаштований, але поточне середовище виконання не змогло розв’язати
|
||||
значення на основі SecretRef.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HTTP mode не отримує події">
|
||||
<Accordion title="HTTP mode not receiving events">
|
||||
Перевірте:
|
||||
|
||||
- signing secret
|
||||
- webhook path
|
||||
- Slack Request URLs (Events + Interactivity + Slash Commands)
|
||||
- секрет підписування
|
||||
- шлях Webhook
|
||||
- URL запитів Slack (події + інтерактивність + Slash Commands)
|
||||
- унікальний `webhookPath` для кожного HTTP-облікового запису
|
||||
|
||||
Якщо `signingSecretStatus: "configured_unavailable"` з’являється в знімках
|
||||
облікового запису, HTTP-обліковий запис налаштовано, але поточне середовище виконання не змогло
|
||||
визначити signing secret, підтриманий SecretRef.
|
||||
Якщо `signingSecretStatus: "configured_unavailable"` з’являється у знімках
|
||||
облікового запису, HTTP-обліковий запис налаштований, але поточне середовище виконання не змогло
|
||||
розв’язати секрет підписування на основі SecretRef.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Нативні/slash-команди не спрацьовують">
|
||||
<Accordion title="Native/slash commands not firing">
|
||||
Перевірте, що саме ви мали на увазі:
|
||||
|
||||
- режим нативних команд (`channels.slack.commands.native: true`) з відповідними slash-командами, зареєстрованими в Slack
|
||||
- режим нативних команд (`channels.slack.commands.native: true`) з відповідними slash-командами, зареєстрованими у Slack
|
||||
- або режим однієї slash-команди (`channels.slack.slashCommand.enabled: true`)
|
||||
|
||||
Також перевірте `commands.useAccessGroups` і allowlist каналів/користувачів.
|
||||
@ -1292,68 +1318,68 @@ openclaw pairing list slack
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## Довідник щодо бачення для вкладень
|
||||
## Довідник vision для вкладень
|
||||
|
||||
Slack може прикріплювати завантажені медіа до ходу агента, коли завантаження файлів Slack успішні й обмеження розміру це дозволяють. Файли зображень можуть передаватися через шлях розуміння медіа або безпосередньо до моделі відповіді з підтримкою vision; інші файли зберігаються як завантажуваний файловий контекст, а не обробляються як вхідні зображення.
|
||||
Slack може прикріплювати завантажені медіа до ходу агента, коли завантаження файлів Slack успішні й обмеження розміру це дозволяють. Файли зображень можуть передаватися через шлях розуміння медіа або безпосередньо до моделі відповіді з підтримкою vision; інші файли зберігаються як завантажуваний файловий контекст, а не обробляються як вхідне зображення.
|
||||
|
||||
### Підтримувані типи медіа
|
||||
|
||||
| Тип медіа | Джерело | Поточна поведінка | Примітки |
|
||||
| ------------------------------ | -------------------- | --------------------------------------------------------------------------------- | ------------------------------------------------------------------------ |
|
||||
| Зображення JPEG / PNG / GIF / WebP | URL файлу Slack | Завантажуються й прикріплюються до ходу для обробки з підтримкою vision | Обмеження на файл: `channels.slack.mediaMaxMb` (типово 20 MB) |
|
||||
| Файли PDF | URL файлу Slack | Завантажуються й доступні як файловий контекст для інструментів, як-от `download-file` або `pdf` | Вхідні дані Slack не перетворюють PDF автоматично на image-vision input |
|
||||
| Інші файли | URL файлу Slack | Завантажуються, коли можливо, і доступні як файловий контекст | Бінарні файли не обробляються як вхідні зображення |
|
||||
| Відповіді треду | Файли початкового повідомлення треду | Файли кореневого повідомлення можуть бути гідратовані як контекст, коли відповідь не має безпосередніх медіа | Стартери лише з файлами використовують placeholder вкладення |
|
||||
| Повідомлення з кількома зображеннями | Кілька файлів Slack | Кожен файл оцінюється незалежно | Обробка Slack обмежена вісьмома файлами на повідомлення |
|
||||
| Тип медіа | Джерело | Поточна поведінка | Примітки |
|
||||
| ------------------------------ | -------------------- | -------------------------------------------------------------------------------- | ------------------------------------------------------------------------- |
|
||||
| Зображення JPEG / PNG / GIF / WebP | URL файлу Slack | Завантажуються й додаються до ходу для обробки з підтримкою зору | Ліміт на файл: `channels.slack.mediaMaxMb` (за замовчуванням 20 MB) |
|
||||
| Файли PDF | URL файлу Slack | Завантажуються й надаються як файловий контекст для інструментів на кшталт `download-file` або `pdf` | Вхідні дані Slack не перетворюють PDF на вхідні дані для image-vision автоматично |
|
||||
| Інші файли | URL файлу Slack | Завантажуються, коли це можливо, і надаються як файловий контекст | Бінарні файли не обробляються як вхідні зображення |
|
||||
| Відповіді в треді | Файли початкового повідомлення треду | Файли кореневого повідомлення можуть бути додані як контекст, коли відповідь не має власних медіа | Початкові повідомлення лише з файлами використовують placeholder вкладення |
|
||||
| Повідомлення з кількома зображеннями | Кілька файлів Slack | Кожен файл оцінюється незалежно | Обробка Slack обмежена вісьмома файлами на повідомлення |
|
||||
|
||||
### Вхідний pipeline
|
||||
### Вхідний конвеєр
|
||||
|
||||
Коли надходить повідомлення Slack із файловими вкладеннями:
|
||||
|
||||
1. OpenClaw завантажує файл із приватного URL Slack, використовуючи bot token (`xoxb-...`).
|
||||
1. OpenClaw завантажує файл із приватного URL Slack за допомогою токена бота (`xoxb-...`).
|
||||
2. У разі успіху файл записується до сховища медіа.
|
||||
3. Завантажені шляхи медіа та типи вмісту додаються до вхідного контексту.
|
||||
4. Шляхи моделі/інструментів із підтримкою зображень можуть використовувати вкладення зображень із цього контексту.
|
||||
3. Шляхи до завантажених медіа й типи вмісту додаються до вхідного контексту.
|
||||
4. Шляхи моделей/інструментів із підтримкою зображень можуть використовувати вкладені зображення з цього контексту.
|
||||
5. Файли, що не є зображеннями, залишаються доступними як файлові метадані або посилання на медіа для інструментів, які можуть їх обробляти.
|
||||
|
||||
### Успадкування вкладень кореня треду
|
||||
|
||||
Коли повідомлення надходить у треді (має батьківський `thread_ts`):
|
||||
|
||||
- Якщо сама відповідь не має безпосередніх медіа, а включене кореневе повідомлення має файли, Slack може гідратувати кореневі файли як контекст стартера треду.
|
||||
- Якщо сама відповідь не має безпосередніх медіа, а включене кореневе повідомлення має файли, Slack може додати кореневі файли як контекст початкового повідомлення треду.
|
||||
- Безпосередні вкладення відповіді мають пріоритет над вкладеннями кореневого повідомлення.
|
||||
- Кореневе повідомлення, яке має лише файли й не має тексту, представляється з placeholder вкладенням, щоб fallback усе ще міг включити його файли.
|
||||
- Кореневе повідомлення, яке має лише файли й не має тексту, представляється placeholder вкладення, щоб fallback все одно міг включити його файли.
|
||||
|
||||
### Обробка кількох вкладень
|
||||
|
||||
Коли одне повідомлення Slack містить кілька файлових вкладень:
|
||||
|
||||
- Кожне вкладення обробляється незалежно через медійний pipeline.
|
||||
- Завантажені посилання на медіа агрегуються в контекст повідомлення.
|
||||
- Кожне вкладення обробляється незалежно через конвеєр медіа.
|
||||
- Посилання на завантажені медіа агрегуються в контекст повідомлення.
|
||||
- Порядок обробки відповідає порядку файлів Slack у payload події.
|
||||
- Помилка завантаження одного вкладення не блокує інші.
|
||||
- Збій завантаження одного вкладення не блокує інші.
|
||||
|
||||
### Обмеження розміру, завантаження та моделей
|
||||
|
||||
- **Обмеження розміру**: типово 20 MB на файл. Налаштовується через `channels.slack.mediaMaxMb`.
|
||||
- **Помилки завантаження**: файли, які Slack не може віддати, протерміновані URL, недоступні файли, надто великі файли та HTML-відповіді автентифікації/входу Slack пропускаються замість повідомлення як непідтримувані формати.
|
||||
- **Vision model**: аналіз зображень використовує активну модель відповіді, коли вона підтримує vision, або модель зображень, налаштовану в `agents.defaults.imageModel`.
|
||||
- **Ліміт розміру**: за замовчуванням 20 MB на файл. Налаштовується через `channels.slack.mediaMaxMb`.
|
||||
- **Збої завантаження**: файли, які Slack не може віддати, прострочені URL, недоступні файли, завеликі файли та HTML-відповіді Slack для автентифікації/входу пропускаються замість того, щоб повідомлятися як непідтримувані формати.
|
||||
- **Модель зору**: аналіз зображень використовує активну модель відповіді, коли вона підтримує зір, або модель зображень, налаштовану в `agents.defaults.imageModel`.
|
||||
|
||||
### Відомі обмеження
|
||||
|
||||
| Сценарій | Поточна поведінка | Обхідний шлях |
|
||||
| ------------------------------------- | ------------------------------------------------------------------------------- | --------------------------------------------------------------------------- |
|
||||
| Прострочена URL-адреса файлу Slack | Файл пропущено; помилка не відображається | Повторно завантажте файл у Slack |
|
||||
| Модель зору не налаштовано | Вкладення зображень зберігаються як медіапосилання, але не аналізуються як зображення | Налаштуйте `agents.defaults.imageModel` або використайте модель відповіді з підтримкою зору |
|
||||
| Дуже великі зображення (> 20 MB за замовчуванням) | Пропущено відповідно до обмеження розміру | Збільште `channels.slack.mediaMaxMb`, якщо Slack дозволяє |
|
||||
| Переслані/поширені вкладення | Текст і медіа зображень/файлів, розміщені в Slack, обробляються за принципом найкращих зусиль | Повторно поширте безпосередньо в потоці OpenClaw |
|
||||
| PDF-вкладення | Зберігаються як контекст файлу/медіа, але не спрямовуються автоматично через зоровий аналіз зображень | Використайте `download-file` для метаданих файлу або інструмент `pdf` для аналізу PDF |
|
||||
| Сценарій | Поточна поведінка | Обхідний шлях |
|
||||
| ------------------------------------- | ---------------------------------------------------------------------------- | -------------------------------------------------------------------------- |
|
||||
| Прострочений URL файлу Slack | Файл пропускається; помилка не показується | Повторно завантажте файл у Slack |
|
||||
| Модель зору не налаштована | Вкладені зображення зберігаються як посилання на медіа, але не аналізуються як зображення | Налаштуйте `agents.defaults.imageModel` або використайте модель відповіді з підтримкою зору |
|
||||
| Дуже великі зображення (> 20 MB за замовчуванням) | Пропускаються відповідно до ліміту розміру | Збільште `channels.slack.mediaMaxMb`, якщо Slack дозволяє |
|
||||
| Переслані/поширені вкладення | Текст і розміщені у Slack медіа зображень/файлів обробляються best-effort | Поширте їх напряму в треді OpenClaw |
|
||||
| Вкладення PDF | Зберігаються як файловий/медійний контекст, не спрямовуються автоматично через image vision | Використайте `download-file` для файлових метаданих або інструмент `pdf` для аналізу PDF |
|
||||
|
||||
### Пов’язана документація
|
||||
|
||||
- [Конвеєр розуміння медіа](/uk/nodes/media-understanding)
|
||||
- [Інструмент PDF](/uk/tools/pdf)
|
||||
- Епік: [#51349](https://github.com/openclaw/openclaw/issues/51349) — увімкнення зорового аналізу вкладень Slack
|
||||
- Epic: [#51349](https://github.com/openclaw/openclaw/issues/51349) — увімкнення зору для вкладень Slack
|
||||
- Регресійні тести: [#51353](https://github.com/openclaw/openclaw/issues/51353)
|
||||
- Жива перевірка: [#51354](https://github.com/openclaw/openclaw/issues/51354)
|
||||
|
||||
@ -1361,21 +1387,21 @@ Slack може прикріплювати завантажені медіа до
|
||||
|
||||
<CardGroup cols={2}>
|
||||
<Card title="Сполучення" icon="link" href="/uk/channels/pairing">
|
||||
Сполучіть користувача Slack із Gateway.
|
||||
Зв’яжіть користувача Slack із Gateway.
|
||||
</Card>
|
||||
<Card title="Групи" icon="users" href="/uk/channels/groups">
|
||||
Поведінка каналу та групових DM.
|
||||
Поведінка каналів і групових DM.
|
||||
</Card>
|
||||
<Card title="Маршрутизація каналу" icon="route" href="/uk/channels/channel-routing">
|
||||
Маршрутизуйте вхідні повідомлення до агентів.
|
||||
<Card title="Маршрутизація каналів" icon="route" href="/uk/channels/channel-routing">
|
||||
Спрямовуйте вхідні повідомлення до агентів.
|
||||
</Card>
|
||||
<Card title="Безпека" icon="shield" href="/uk/gateway/security">
|
||||
Модель загроз і посилення захисту.
|
||||
Модель загроз і зміцнення захисту.
|
||||
</Card>
|
||||
<Card title="Конфігурація" icon="sliders" href="/uk/gateway/configuration">
|
||||
Структура конфігурації та пріоритетність.
|
||||
Структура конфігурації та пріоритети.
|
||||
</Card>
|
||||
<Card title="Слеш-команди" icon="terminal" href="/uk/tools/slash-commands">
|
||||
<Card title="Slash-команди" icon="terminal" href="/uk/tools/slash-commands">
|
||||
Каталог команд і поведінка.
|
||||
</Card>
|
||||
</CardGroup>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user