Готове до production-використання для DM і каналів через інтеграції застосунку Slack. Типовий режим — Socket Mode; також підтримуються URL-адреси HTTP-запитів.Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
Створення пари
DM у Slack типово використовують режим створення пари.
Slash-команди
Нативна поведінка команд і каталог команд.
Усунення несправностей каналів
Кросканальна діагностика та інструкції з відновлення.
Вибір Socket Mode або URL-адрес HTTP-запитів
Обидва транспорти готові до production-використання й мають паритет функцій для повідомлень, slash-команд, App Home та інтерактивності. Обирайте за формою розгортання, а не за функціями.| Аспект | Socket Mode (типово) | URL-адреси HTTP-запитів |
|---|---|---|
| Публічна URL-адреса Gateway | Не потрібна | Потрібна (DNS, TLS, reverse proxy або тунель) |
| Вихідна мережа | Має бути доступний вихідний 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 можуть спільно використовувати один застосунок за load balancer |
| Кілька акаунтів на одному Gateway | Підтримується; кожен акаунт відкриває власний WS | Підтримується; кожному акаунту потрібен унікальний webhookPath (типово /slack/events), щоб реєстрації не конфліктували |
| Транспорт slash-команд | Доставляється через WS-з’єднання; slash_commands[].url ігнорується | Slack надсилає POST на slash_commands[].url; поле потрібне для dispatch команди |
| Підписування запитів | Не використовується (автентифікація — це App-Level Token) | Slack підписує кожен запит; OpenClaw перевіряє через signingSecret |
| Відновлення після розриву з’єднання | Slack SDK автоматично перепідключається; застосовується налаштування pong-timeout транспорту gateway | Немає постійного з’єднання, яке може розірватися; повторні спроби виконуються для кожного запиту від Slack |
Оберіть Socket Mode для хостів з одним Gateway, ноутбуків розробників і on-prem мереж, які можуть підключатися до
*.slack.com назовні, але не можуть приймати вхідний HTTPS.Оберіть URL-адреси HTTP-запитів, коли запускаєте кілька реплік Gateway за load balancer, коли вихідний WSS заблоковано, але вхідний HTTPS дозволено, або коли ви вже завершуєте Slack webhooks на reverse proxy.Швидке налаштування
- Socket Mode (типово)
- URL-адреси HTTP-запитів
Створіть новий застосунок Slack
Відкрийте api.slack.com/apps → Create New App → From a manifest → виберіть свій workspace → вставте один із наведених нижче маніфестів → Next → Create.Після того як Slack створить застосунок:
Рекомендовано відповідає повному набору функцій вбудованого Slack Plugin: App Home, slash-команди, файли, реакції, закріплення, групові DM, а також читання emoji/usergroup. Оберіть Мінімальний, коли політика workspace обмежує scopes — він покриває DM, історію каналів/груп, згадки та slash-команди, але прибирає файли, реакції, закріплення, group-DM (
mpim:*), emoji:read і usergroups:read. Див. контрольний список маніфесту та scopes для обґрунтування кожного scope і додаткових опцій, як-от додаткові slash-команди.- Basic Information → App-Level Tokens → Generate Token and Scopes: додайте
connections:write, збережіть, скопіюйте значенняxapp-.... - Install App → Install to Workspace: скопіюйте
xoxb-...Bot User OAuth Token.
Налаштуйте OpenClaw
Рекомендоване налаштування SecretRef:Резервний варіант через env (лише типовий акаунт):
Налаштування транспорту Socket Mode
OpenClaw типово встановлює для клієнта Slack SDK тайм-аут pong у 15 секунд для Socket Mode. Перевизначайте налаштування транспорту лише тоді, коли потрібне налаштування під конкретний робочий простір або хост:clientPingTimeout — це час очікування pong після того, як SDK надсилає клієнтський ping; serverPingTimeout — час очікування ping від сервера Slack. Повідомлення й події застосунку залишаються станом застосунку, а не сигналами життєздатності транспорту.
Контрольний список маніфесту й областей доступу
Базовий маніфест застосунку Slack однаковий для Socket Mode і HTTP Request URLs. Відрізняється лише блокsettings (і url slash-команди).
Базовий маніфест (типово Socket Mode):
settings на HTTP-варіант і додайте url до кожної slash-команди. Потрібен публічний URL:
Додаткові налаштування маніфесту
Відкрийте різні функції, що розширюють наведені вище типові значення. Типовий маніфест вмикає вкладку Slack App Home Home і підписується наapp_home_opened. Коли учасник робочого простору відкриває вкладку Home, OpenClaw публікує безпечний типовий Home view через views.publish; payload розмови або приватна конфігурація не включаються. Вкладка Messages залишається ввімкненою для Slack DM.
Необов’язкові нативні slash-команди
Необов’язкові нативні slash-команди
Можна використовувати кілька нативних slash-команд замість однієї налаштованої команди, з такими нюансами:
- Використовуйте
/agentstatusзамість/status, оскільки команда/statusзарезервована. - Одночасно можна зробити доступними не більше ніж 25 slash-команд.
features.slash_commands підмножиною доступних команд:- Socket Mode (типово)
- HTTP Request URLs
Необов’язкові області авторства (операції запису)
Необов’язкові області авторства (операції запису)
Додайте область бота
chat:write.customize, якщо хочете, щоб вихідні повідомлення використовували ідентичність активного агента (власне ім’я користувача та іконку) замість типової ідентичності застосунку Slack.Якщо ви використовуєте іконку emoji, Slack очікує синтаксис :emoji_name:.Необов’язкові області токена користувача (операції читання)
Необов’язкові області токена користувача (операції читання)
Якщо ви налаштовуєте
channels.slack.userToken, типові області читання такі:channels:history,groups:history,im:history,mpim:historychannels:read,groups:read,im:read,mpim:readusers:readreactions:readpins:reademoji:readsearch:read(якщо ви покладаєтеся на читання пошуку Slack)
Модель токенів
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).
- Перевірка облікового запису Slack відстежує для кожних облікових даних поля
*Sourceі*Status(botToken,appToken,signingSecret,userToken). - Стан може бути
available,configured_unavailableабоmissing. configured_unavailableозначає, що обліковий запис налаштовано через SecretRef або інше неінлайнове джерело секретів, але поточна команда чи шлях виконання не змогли отримати фактичне значення.- У HTTP-режимі включено
signingSecretStatus; у Socket Mode обов’язковою парою єbotTokenStatus+appTokenStatus.
Дії та шлюзи
Дії Slack керуються черезchannels.slack.actions.*.
Доступні групи дій у поточних інструментах Slack:
| Група | Типово |
|---|---|
| messages | увімкнено |
| reactions | увімкнено |
| pins | увімкнено |
| memberInfo | увімкнено |
| emojiList | увімкнено |
send, upload-file, download-file, read, edit, delete, pin, unpin, list-pins, member-info і emoji-list. download-file приймає ID файлів Slack, показані у вхідних заповнювачах файлів, і повертає попередні перегляди зображень для зображень або локальні метадані файлів для інших типів файлів.
Контроль доступу та маршрутизація
- Політика DM
- Політика каналів
- Згадки та користувачі каналів
channels.slack.dmPolicy керує доступом DM. channels.slack.allowFrom є канонічним списком дозволених DM.pairing(типово)allowlistopen(потребує, щобchannels.slack.allowFromмістив"*")disabled
dm.enabled(типово true)channels.slack.allowFromdm.allowFrom(застаріле)dm.groupEnabled(групові DM типово false)dm.groupChannels(необов’язковий список дозволених MPIM)
channels.slack.accounts.default.allowFromзастосовується лише до облікового записуdefault.- Іменовані облікові записи успадковують
channels.slack.allowFrom, коли їхній власнийallowFromне задано. - Іменовані облікові записи не успадковують
channels.slack.accounts.default.allowFrom.
channels.slack.dm.policy і channels.slack.dm.allowFrom все ще читаються для сумісності. openclaw doctor --fix переносить їх у dmPolicy і allowFrom, коли може зробити це без зміни доступу.Сполучення в DM використовує openclaw pairing approve slack <code>.Треди, сесії та теги відповіді
- DM маршрутизуються як
direct; канали якchannel; MPIM якgroup. - Прив’язки маршрутів Slack приймають сирі ID співрозмовників, а також форми цілей Slack, як-от
channel:C12345678,user:U12345678і<@U12345678>. - З типовим
session.dmScope=mainDM Slack згортаються до основної сесії агента. - Сесії каналів:
agent:<agentId>:slack:channel:<channelId>. - Відповіді в тредах можуть створювати суфікси сесій тредів (
:thread:<threadTs>), коли це застосовно. - У каналах, де OpenClaw обробляє повідомлення верхнього рівня без вимоги явної згадки, не-
offreplyToModeмаршрутизує кожен оброблений кореневий елемент уagent:<agentId>:slack:channel:<channelId>:thread:<rootTs>, щоб видимий тред Slack від першого ходу відповідав одній сесії OpenClaw. - Типове значення
channels.slack.thread.historyScope—thread; типове значенняthread.inheritParent—false. channels.slack.thread.initialHistoryLimitкерує тим, скільки наявних повідомлень треду завантажується, коли починається нова сесія треду (типово20; задайте0, щоб вимкнути).channels.slack.thread.requireExplicitMention(типовоfalse): колиtrue, пригнічує неявні згадки в треді, щоб бот відповідав лише на явні згадки@botусередині тредів, навіть коли бот уже брав участь у треді. Без цього відповіді в треді, де брав участь бот, обходять шлюзrequireMention.
channels.slack.replyToMode:off|first|all|batched(типовоoff)channels.slack.replyToModeByChatType: для кожногоdirect|group|channel- застарілий резервний варіант для прямих чатів:
channels.slack.dm.replyToMode
[[reply_to_current]][[reply_to:<id>]]
message задайте replyBroadcast: true з action: "send" і threadId або replyTo, щоб попросити Slack також транслювати відповідь треду в батьківський канал. Це зіставляється з прапорцем reply_broadcast Slack chat.postMessage і підтримується лише для текстових або Block Kit надсилань, не для завантажень медіа.
Коли виклик інструмента message виконується всередині треду Slack і націлений на той самий канал, OpenClaw зазвичай успадковує поточний тред Slack відповідно до replyToMode. Задайте topLevel: true для action: "send" або action: "upload-file", щоб натомість примусово створити нове повідомлення в батьківському каналі. threadId: null приймається як такий самий вихід на верхній рівень.
replyToMode="off" вимикає всі треди відповідей у Slack, включно з явними тегами [[reply_to_*]]. Це відрізняється від Telegram, де явні теги все ще враховуються в режимі "off". Треди Slack приховують повідомлення з каналу, тоді як відповіді Telegram залишаються видимими inline.Реакції підтвердження
ackReaction надсилає emoji підтвердження, поки OpenClaw обробляє вхідне повідомлення.
Порядок розв’язання:
channels.slack.accounts.<accountId>.ackReactionchannels.slack.ackReactionmessages.ackReaction- резервний emoji ідентичності агента (
agents.list[].identity.emoji, інакше ”👀”)
- Slack очікує shortcodes (наприклад,
"eyes"). - Використовуйте
"", щоб вимкнути реакцію для облікового запису Slack або глобально.
Потокове передавання тексту
channels.slack.streaming керує поведінкою live preview:
off: вимкнути потокове передавання live preview.partial(типово): замінювати текст попереднього перегляду найновішим частковим виводом.block: додавати порційні оновлення попереднього перегляду.progress: показувати текст стану перебігу під час генерації, потім надсилати фінальний текст.streaming.preview.toolProgress: коли активний чернетковий попередній перегляд, спрямовувати оновлення інструментів/перебігу в те саме редаговане повідомлення попереднього перегляду (типово:true). Задайтеfalse, щоб зберігати окремі повідомлення інструментів/перебігу.streaming.preview.commandText/streaming.progress.commandText: задайтеstatus, щоб зберігати компактні рядки перебігу інструментів, приховуючи сирий текст command/exec (типово:raw).
channels.slack.streaming.nativeTransport керує нативним потоковим передаванням тексту Slack, коли channels.slack.streaming.mode має значення partial (типово: true).
- Ланцюжок відповіді має бути доступний, щоб з’являлися нативне потокове передавання тексту та статус ланцюжка помічника Slack. Вибір ланцюжка все одно відповідає
replyToMode. - Корені каналів, групових чатів і DM верхнього рівня все ще можуть використовувати звичайний попередній перегляд чернетки, коли нативне потокове передавання недоступне або ланцюжка відповіді не існує.
- DM Slack верхнього рівня за замовчуванням залишаються поза ланцюжками, тому вони не показують нативний потоковий перегляд/перегляд статусу у стилі ланцюжків Slack; натомість OpenClaw публікує та редагує попередній перегляд чернетки в DM.
- Медіа та нетекстові корисні навантаження повертаються до звичайної доставки.
- Фінальні медіа/помилки скасовують очікувані редагування попереднього перегляду; придатні фінальні текстові/блокові повідомлення скидаються лише тоді, коли можуть редагувати попередній перегляд на місці.
- Якщо потокове передавання переривається посеред відповіді, OpenClaw повертається до звичайної доставки для решти корисних навантажень.
channels.slack.streamMode(replace | status_final | append) є застарілим runtime-псевдонімом дляchannels.slack.streaming.mode.- булевий
channels.slack.streamingє застарілим runtime-псевдонімом дляchannels.slack.streaming.modeіchannels.slack.streaming.nativeTransport. - застарілий
channels.slack.nativeStreamingє runtime-псевдонімом дляchannels.slack.streaming.nativeTransport. - Запустіть
openclaw doctor --fix, щоб переписати збережену конфігурацію потокового передавання Slack на канонічні ключі.
Резервна реакція набору тексту
typingReaction додає тимчасову реакцію до вхідного повідомлення Slack, поки OpenClaw обробляє відповідь, а потім видаляє її після завершення запуску. Це найкорисніше поза відповідями у ланцюжках, які використовують стандартний індикатор статусу “is typing…”.
Порядок визначення:
channels.slack.accounts.<accountId>.typingReactionchannels.slack.typingReaction
- Slack очікує короткі коди (наприклад,
"hourglass_flowing_sand"). - Реакція виконується за принципом best-effort, а очищення автоматично виконується після завершення відповіді або шляху помилки.
Медіа, розбиття на частини та доставка
Inbound attachments
Inbound attachments
Файлові вкладення Slack завантажуються з приватних URL, розміщених у Slack (потік запитів з автентифікацією токеном), і записуються до сховища медіа, коли отримання успішне й обмеження розміру це дозволяють. Заповнювачі файлів містять Slack
fileId, щоб агенти могли отримати оригінальний файл через download-file.Завантаження використовують обмежені тайм-аути простою та загальні тайм-аути. Якщо отримання файлу Slack зависає або завершується помилкою, OpenClaw продовжує обробляти повідомлення та повертається до заповнювача файлу.Runtime-обмеження розміру вхідних даних за замовчуванням становить 20MB, якщо його не перевизначено через channels.slack.mediaMaxMb.Outbound text and files
Outbound text and files
- текстові частини використовують
channels.slack.textChunkLimit(за замовчуванням 4000) channels.slack.chunkMode="newline"вмикає розбиття з пріоритетом абзаців- надсилання файлів використовує API завантаження Slack і може включати відповіді у ланцюжках (
thread_ts) - обмеження вихідних медіа відповідає
channels.slack.mediaMaxMb, коли його налаштовано; інакше надсилання каналом використовує MIME-типові значення за замовчуванням із медіаконвеєра
Delivery targets
Delivery targets
Бажані явні цілі:
user:<id>для DMchannel:<id>для каналів
Команди та поведінка слеш-команд
Слеш-команди відображаються в Slack або як одна налаштована команда, або як кілька нативних команд. Налаштуйтеchannels.slack.slashCommand, щоб змінити стандартні параметри команд:
enabled: falsename: "openclaw"sessionPrefix: "slack:slash"ephemeral: true
channels.slack.commands.native: true або commands.native: true у глобальних конфігураціях.
- Автоматичний режим нативних команд вимкнено для Slack, тому
commands.native: "auto"не вмикає нативні команди Slack.
- до 5 параметрів: блоки кнопок
- 6-100 параметрів: статичне меню вибору
- понад 100 параметрів: зовнішній вибір з асинхронною фільтрацією параметрів, коли доступні обробники параметрів інтерактивності
- перевищено обмеження Slack: закодовані значення параметрів повертаються до кнопок
agent:<agentId>:slack:slash:<userId> і все одно спрямовують виконання команд до цільового сеансу розмови за допомогою CommandTargetSessionKey.
Інтерактивні відповіді
Slack може відтворювати інтерактивні елементи керування відповідями, створені агентом, але ця функція за замовчуванням вимкнена. Увімкніть її глобально:[[slack_buttons: Approve:approve, Reject:reject]][[slack_select: Choose a target | Canary:canary, Production:production]]
- Це UI, специфічний для Slack. Інші канали не перетворюють директиви Slack Block Kit на власні системи кнопок.
- Значення інтерактивних зворотних викликів є непрозорими токенами, згенерованими OpenClaw, а не сирими значеннями, створеними агентом.
- Якщо згенеровані інтерактивні блоки перевищили б ліміти Slack Block Kit, OpenClaw повертається до початкової текстової відповіді замість надсилання недійсного payload блоків.
Підтвердження виконання у Slack
Slack може діяти як нативний клієнт підтверджень з інтерактивними кнопками та взаємодіями, замість повернення до Web UI або термінала.- Підтвердження виконання використовують
channels.slack.execApprovals.*для нативної маршрутизації DM/каналу. - Підтвердження Plugin все ще можуть вирішуватися через ту саму нативну для Slack поверхню кнопок, коли запит уже потрапляє у Slack і тип ідентифікатора підтвердження є
plugin:. - Авторизація затверджувачів усе ще застосовується: лише користувачі, визначені як затверджувачі, можуть схвалювати або відхиляти запити через Slack.
interactivity увімкнено в налаштуваннях вашого застосунку Slack, запити підтвердження відображаються як кнопки Block Kit безпосередньо в розмові.
Коли ці кнопки присутні, вони є основним інтерфейсом підтвердження; OpenClaw
має додавати ручну команду /approve лише тоді, коли результат інструмента вказує, що підтвердження
в чаті недоступні або ручне підтвердження є єдиним шляхом.
Шлях конфігурації:
channels.slack.execApprovals.enabledchannels.slack.execApprovals.approvers(необов’язково; за можливості повертається доcommands.ownerAllowFrom)channels.slack.execApprovals.target(dm|channel|both, стандартно:dm)agentFilter,sessionFilter
enabled не задано або має значення "auto" і вдається визначити принаймні одного
затверджувача. Задайте enabled: false, щоб явно вимкнути Slack як нативний клієнт підтверджень.
Задайте enabled: true, щоб примусово ввімкнути нативні підтвердження, коли затверджувачів визначено.
Стандартна поведінка без явної конфігурації підтверджень виконання Slack:
approvals.exec є окремим. Використовуйте його лише тоді, коли запити підтвердження виконання також мають
маршрутизуватися до інших чатів або явних позаканальних цілей. Спільне переспрямування approvals.plugin також є
окремим; нативні кнопки Slack усе ще можуть вирішувати підтвердження Plugin, коли ці запити вже потрапляють
у Slack.
Команда /approve у тому самому чаті також працює в каналах Slack і DM, які вже підтримують команди. Див. Підтвердження виконання для повної моделі переспрямування підтверджень.
Події та операційна поведінка
- Редагування/видалення повідомлень перетворюються на системні події.
- Трансляції гілок (відповіді в гілці “Також надіслати до каналу”) обробляються як звичайні повідомлення користувача.
- Події додавання/видалення реакцій перетворюються на системні події.
- Події входу/виходу учасників, створення/перейменування каналів і додавання/видалення закріплень перетворюються на системні події.
channel_id_changedможе мігрувати ключі конфігурації каналів, коли ввімкненоconfigWrites.- Метадані теми/призначення каналу вважаються недовіреним контекстом і можуть бути вставлені в контекст маршрутизації.
- Ініціатор гілки та початкове заповнення контексту історії гілки фільтруються налаштованими списками дозволених відправників, коли це застосовно.
- Дії блоків і модальні взаємодії видають структуровані системні події
Slack interaction: ...з багатими полями payload:- дії блоків: вибрані значення, мітки, значення селекторів і метадані
workflow_* - події модальних
view_submissionіview_closedз маршрутизованими метаданими каналу та введенням форми
- дії блоків: вибрані значення, мітки, значення селекторів і метадані
Довідник конфігурації
Основний довідник: Довідник конфігурації - Slack.Найважливіші поля Slack
Найважливіші поля Slack
- режим/автентифікація:
mode,botToken,appToken,signingSecret,webhookPath,accounts.* - доступ до DM:
dm.enabled,dmPolicy,allowFrom(застаріле:dm.policy,dm.allowFrom),dm.groupEnabled,dm.groupChannels - перемикач сумісності:
dangerouslyAllowNameMatching(аварійний; тримайте вимкненим, якщо не потрібно) - доступ до каналів:
groupPolicy,channels.*,channels.*.users,channels.*.requireMention - гілки/історія:
replyToMode,replyToModeByChatType,thread.*,historyLimit,dmHistoryLimit,dms.*.historyLimit - доставка:
textChunkLimit,chunkMode,mediaMaxMb,streaming,streaming.nativeTransport,streaming.preview.toolProgress - розгортання прев’ю:
unfurlLinks,unfurlMediaдля керування прев’ю посилань/медіаchat.postMessage - операційні можливості/функції:
configWrites,commands.native,slashCommand.*,actions.*,userToken,userTokenReadOnly
Усунення несправностей
Немає відповідей у каналах
Немає відповідей у каналах
Перевірте по черзі:
groupPolicy- список дозволених каналів (
channels.slack.channels) — ключами мають бути ID каналів (C12345678), а не назви (#channel-name). Ключі на основі назв непомітно не спрацьовують заgroupPolicy: "allowlist", бо маршрутизація каналів за замовчуванням спочатку використовує ID. Щоб знайти ID: клацніть канал у Slack правою кнопкою → Копіювати посилання — значенняC...у кінці URL є ID каналу. requireMention- список дозволених
usersдля окремого каналу
Повідомлення DM ігноруються
Повідомлення DM ігноруються
Перевірте:
channels.slack.dm.enabledchannels.slack.dmPolicy(або застарілеchannels.slack.dm.policy)- підтвердження сполучення / записи списку дозволених
- події DM Slack Assistant: докладні журнали зі згадкою
drop message_changedзазвичай означають, що Slack надіслав відредаговану подію гілки Assistant без людського відправника, якого можна відновити з метаданих повідомлення
Socket Mode не підключається
Socket Mode не підключається
Перевірте токени бота й застосунку та ввімкнення Socket Mode у налаштуваннях застосунку Slack.Якщо
openclaw channels status --probe --json показує botTokenStatus або
appTokenStatus: "configured_unavailable", обліковий запис Slack
налаштовано, але поточне середовище виконання не змогло визначити значення,
підкріплене SecretRef.Режим HTTP не отримує події
Режим HTTP не отримує події
Перевірте:
- секрет підписування
- шлях webhook
- URL-адреси запитів Slack (події + інтерактивність + слеш-команди)
- унікальний
webhookPathдля кожного облікового запису HTTP
signingSecretStatus: "configured_unavailable" з’являється у знімках
облікового запису, обліковий запис HTTP налаштовано, але поточне середовище
виконання не змогло розв’язати секрет підписування на основі SecretRef.Нативні/слеш-команди не спрацьовують
Нативні/слеш-команди не спрацьовують
Перевірте, що саме ви мали на увазі:
- режим нативних команд (
channels.slack.commands.native: true) із відповідними слеш-командами, зареєстрованими в Slack - або режим однієї слеш-команди (
channels.slack.slashCommand.enabled: true)
commands.useAccessGroups і списки дозволених каналів/користувачів.Довідка щодо зору для вкладень
Slack може прикріплювати завантажені медіа до ходу агента, коли завантаження файлів Slack успішне та це дозволяють обмеження розміру. Файли зображень можна передавати через шлях розуміння медіа або безпосередньо до моделі відповіді з підтримкою зору; інші файли зберігаються як контекст файлів, доступних для завантаження, а не обробляються як вхідні зображення.Підтримувані типи медіа
| Тип медіа | Джерело | Поточна поведінка | Примітки |
|---|---|---|---|
| Зображення JPEG / PNG / GIF / WebP | URL файлу Slack | Завантажуються та прикріплюються до ходу для обробки з підтримкою зору | Обмеження на файл: channels.slack.mediaMaxMb (типово 20 МБ) |
| PDF-файли | URL файлу Slack | Завантажуються та надаються як файловий контекст для інструментів, як-от download-file або pdf | Вхідний Slack автоматично не перетворює PDF на вхідні дані для зору зображень |
| Інші файли | URL файлу Slack | Завантажуються, коли це можливо, і надаються як файловий контекст | Бінарні файли не обробляються як вхідні зображення |
| Відповіді в тредах | Файли початкового повідомлення треду | Файли кореневого повідомлення можуть бути додані як контекст, коли відповідь не має прямих медіа | Початкові повідомлення лише з файлами використовують заповнювач вкладення |
| Повідомлення з кількома зображеннями | Кілька файлів Slack | Кожен файл оцінюється незалежно | Обробка Slack обмежена вісьмома файлами на повідомлення |
Вхідний конвеєр
Коли надходить повідомлення Slack із файловими вкладеннями:- OpenClaw завантажує файл із приватної URL-адреси Slack за допомогою токена бота (
xoxb-...). - У разі успіху файл записується до сховища медіа.
- Шляхи завантажених медіа та типи вмісту додаються до вхідного контексту.
- Шляхи моделей/інструментів із підтримкою зображень можуть використовувати вкладення зображень із цього контексту.
- Файли, що не є зображеннями, залишаються доступними як файлові метадані або медіапосилання для інструментів, які можуть їх обробляти.
Успадкування вкладень кореневого повідомлення треду
Коли повідомлення надходить у тред (має батьківськийthread_ts):
- Якщо сама відповідь не має прямих медіа, а включене кореневе повідомлення має файли, Slack може додати кореневі файли як контекст початкового повідомлення треду.
- Прямі вкладення відповіді мають пріоритет над вкладеннями кореневого повідомлення.
- Кореневе повідомлення, яке має лише файли й не має тексту, представляється із заповнювачем вкладення, щоб резервний механізм усе одно міг включити його файли.
Обробка кількох вкладень
Коли одне повідомлення Slack містить кілька файлових вкладень:- Кожне вкладення обробляється незалежно через медіаконвеєр.
- Посилання на завантажені медіа агрегуються в контекст повідомлення.
- Порядок обробки відповідає порядку файлів Slack у корисному навантаженні події.
- Помилка завантаження одного вкладення не блокує інші.
Обмеження розміру, завантаження та моделей
- Обмеження розміру: типово 20 МБ на файл. Налаштовується через
channels.slack.mediaMaxMb. - Помилки завантаження: файли, які Slack не може надати, протерміновані URL-адреси, недоступні файли, завеликі файли та HTML-відповіді автентифікації/входу Slack пропускаються, а не повідомляються як непідтримувані формати.
- Модель зору: аналіз зображень використовує активну модель відповіді, коли вона підтримує зір, або модель зображень, налаштовану в
agents.defaults.imageModel.
Відомі обмеження
| Сценарій | Поточна поведінка | Обхідний шлях |
|---|---|---|
| Протермінована URL-адреса файлу Slack | Файл пропускається; помилка не показується | Повторно завантажте файл у Slack |
| Модель зору не налаштована | Вкладення зображень зберігаються як медіапосилання, але не аналізуються як зображення | Налаштуйте agents.defaults.imageModel або використайте модель відповіді з підтримкою зору |
| Дуже великі зображення (> 20 МБ типово) | Пропускаються відповідно до обмеження розміру | Збільште channels.slack.mediaMaxMb, якщо Slack дозволяє |
| Переслані/поширені вкладення | Текст і розміщені в Slack зображення/файлові медіа обробляються за найкращою спробою | Поділіться ними напряму в треді OpenClaw |
| PDF-вкладення | Зберігаються як файловий/медіаконтекст, але автоматично не спрямовуються через зір зображень | Використайте download-file для файлових метаданих або інструмент pdf для аналізу PDF |
Пов’язана документація
- Конвеєр розуміння медіа
- Інструмент PDF
- Епік: #51349 — увімкнення зору для вкладень Slack
- Регресійні тести: #51353
- Жива перевірка: #51354
Пов’язане
Спарювання
Спаруйте користувача Slack із gateway.
Групи
Поведінка каналу та групових DM.
Маршрутизація каналів
Маршрутизуйте вхідні повідомлення до агентів.
Безпека
Модель загроз і посилення захисту.
Конфігурація
Структура конфігурації та пріоритетність.
Слеш-команди
Каталог команд і поведінка.