chore(i18n): refresh uk translations
This commit is contained in:
parent
61f9be1c98
commit
19e24eb681
@ -2,37 +2,37 @@
|
||||
read_when:
|
||||
- Зміна поведінки групового чату або обмеження за згадками
|
||||
sidebarTitle: Groups
|
||||
summary: Поведінка групового чату на різних платформах (Discord/iMessage/Matrix/Microsoft Teams/Signal/Slack/Telegram/WhatsApp/Zalo)
|
||||
summary: Поведінка групового чату на різних поверхнях (Discord/iMessage/Matrix/Microsoft Teams/Signal/Slack/Telegram/WhatsApp/Zalo)
|
||||
title: Групи
|
||||
x-i18n:
|
||||
generated_at: "2026-04-29T19:06:31Z"
|
||||
generated_at: "2026-04-30T13:59:18Z"
|
||||
model: gpt-5.5
|
||||
provider: openai
|
||||
source_hash: 743dc1ce1a0e5dc5c6d66091854cdcbb8d2b8f7e06b5c1d13c272142265fc998
|
||||
source_hash: 5a675d14c0c9b236c960b8401e2771af355735ef23c7cf3697e273d452ecdf8d
|
||||
source_path: channels/groups.md
|
||||
workflow: 16
|
||||
---
|
||||
|
||||
OpenClaw однаково обробляє групові чати на всіх поверхнях: Discord, iMessage, Matrix, Microsoft Teams, Signal, Slack, Telegram, WhatsApp, Zalo.
|
||||
OpenClaw обробляє групові чати узгоджено на всіх поверхнях: Discord, iMessage, Matrix, Microsoft Teams, Signal, Slack, Telegram, WhatsApp, Zalo.
|
||||
|
||||
## Вступ для початківців (2 хвилини)
|
||||
|
||||
OpenClaw "живе" у ваших власних облікових записах месенджерів. Окремого користувача-бота WhatsApp немає. Якщо **ви** перебуваєте в групі, OpenClaw може бачити цю групу й відповідати в ній.
|
||||
OpenClaw «живе» у ваших власних облікових записах месенджерів. Окремого користувача-бота WhatsApp немає. Якщо **ви** перебуваєте в групі, OpenClaw може бачити цю групу й відповідати в ній.
|
||||
|
||||
Типова поведінка:
|
||||
Поведінка за замовчуванням:
|
||||
|
||||
- Групи обмежені (`groupPolicy: "allowlist"`).
|
||||
- Відповіді потребують згадки, якщо ви явно не вимкнете шлюзування за згадкою.
|
||||
- Звичайні фінальні відповіді в групах/каналах типово приватні. Видимий вивід у кімнату використовує інструмент `message`.
|
||||
- Відповіді вимагають згадки, якщо ви явно не вимкнете перевірку згадки.
|
||||
- Звичайні фінальні відповіді в групах/каналах за замовчуванням приватні. Видимий вивід у кімнату використовує інструмент `message`.
|
||||
|
||||
Пояснення: відправники з allowlist можуть запускати OpenClaw, згадуючи його.
|
||||
Інакше кажучи: відправники зі списку дозволених можуть запускати OpenClaw, згадавши його.
|
||||
|
||||
<Note>
|
||||
**Коротко**
|
||||
|
||||
- **Доступ до DM** керується `*.allowFrom`.
|
||||
- **Доступ до груп** керується `*.groupPolicy` + allowlist (`*.groups`, `*.groupAllowFrom`).
|
||||
- **Запуск відповіді** керується шлюзуванням за згадкою (`requireMention`, `/activation`).
|
||||
- **Доступ до приватних повідомлень** контролюється `*.allowFrom`.
|
||||
- **Доступ до груп** контролюється `*.groupPolicy` + списками дозволених (`*.groups`, `*.groupAllowFrom`).
|
||||
- **Запуск відповіді** контролюється перевіркою згадки (`requireMention`, `/activation`).
|
||||
|
||||
</Note>
|
||||
|
||||
@ -47,14 +47,14 @@ otherwise -> reply
|
||||
|
||||
## Видимі відповіді
|
||||
|
||||
Для групових/канальних кімнат OpenClaw типово використовує `messages.groupChat.visibleReplies: "message_tool"`.
|
||||
Це означає, що агент усе одно обробляє хід і може оновлювати пам’ять/стан сесії, але його звичайна фінальна відповідь не публікується автоматично назад у кімнату. Щоб говорити видимо, агент використовує `message(action=send)`.
|
||||
Для групових/канальних кімнат OpenClaw за замовчуванням використовує `messages.groupChat.visibleReplies: "message_tool"`.
|
||||
Це означає, що агент усе одно обробляє хід і може оновлювати стан пам’яті/сесії, але його звичайна фінальна відповідь не публікується автоматично назад у кімнату. Щоб говорити видимо, агент використовує `message(action=send)`.
|
||||
|
||||
Для прямих чатів і будь-якого іншого вихідного ходу використовуйте `messages.visibleReplies: "message_tool"`, щоб застосувати таку саму поведінку видимої відповіді лише через інструмент глобально. `messages.groupChat.visibleReplies` залишається більш специфічним перевизначенням для групових/канальних кімнат.
|
||||
Для прямих чатів і будь-якого іншого ходу джерела використовуйте `messages.visibleReplies: "message_tool"`, щоб застосувати таку саму поведінку видимих відповідей лише через інструмент глобально. `messages.groupChat.visibleReplies` залишається конкретнішим перевизначенням для групових/канальних кімнат.
|
||||
|
||||
Це замінює старий шаблон примушування моделі відповідати `NO_REPLY` для більшості ходів у режимі спостереження. У режимі лише через інструмент відсутність видимої дії просто означає, що інструмент повідомлень не викликається.
|
||||
Це замінює старий шаблон, коли модель примушували відповідати `NO_REPLY` для більшості ходів у режимі пасивного спостереження. У режимі лише через інструмент нічого не робити видимо просто означає не викликати інструмент повідомлень.
|
||||
|
||||
Індикатори набору все ще надсилаються, поки агент працює в режимі лише через інструмент. Типовий режим набору для груп оновлюється з "message" до "instant" для цих ходів, тому що звичайного тексту повідомлення асистента може ніколи не бути до того, як агент вирішить, чи викликати інструмент повідомлень. Явна конфігурація режиму набору все ще має пріоритет.
|
||||
Індикатори набору все одно надсилаються, поки агент працює в режимі лише через інструмент. Стандартний груповий режим набору для цих ходів підвищено з "message" до "instant", оскільки звичайного тексту повідомлення асистента може взагалі не бути до того, як агент вирішить, чи викликати інструмент повідомлень. Явна конфігурація режиму набору все одно має пріоритет.
|
||||
|
||||
Щоб відновити застарілі автоматичні фінальні відповіді для групових/канальних кімнат:
|
||||
|
||||
@ -68,7 +68,10 @@ otherwise -> reply
|
||||
}
|
||||
```
|
||||
|
||||
Щоб вимагати, аби видимий вивід проходив через інструмент повідомлень для кожного вихідного чату:
|
||||
Gateway гаряче перезавантажує конфігурацію `messages` після збереження файлу. Перезапускайте лише тоді,
|
||||
коли у розгортанні вимкнено відстеження файлів або перезавантаження конфігурації.
|
||||
|
||||
Щоб вимагати, аби видимий вивід для кожного чату джерела проходив через інструмент повідомлень:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -78,70 +81,70 @@ otherwise -> reply
|
||||
}
|
||||
```
|
||||
|
||||
Нативні slash-команди (Discord, Telegram та інші поверхні з підтримкою нативних команд) обходять `visibleReplies: "message_tool"` і завжди відповідають видимо, щоб нативний для каналу інтерфейс команд отримав очікувану відповідь. Це застосовується лише до перевірених нативних командних ходів; команди `/...`, набрані текстом, і звичайні ходи чату все ще дотримуються налаштованої типової поведінки групи.
|
||||
Нативні слеш-команди (Discord, Telegram та інші поверхні з нативною підтримкою команд) обходять `visibleReplies: "message_tool"` і завжди відповідають видимо, щоб нативний для каналу інтерфейс команд отримав очікувану відповідь. Це стосується лише перевірених ходів нативних команд; команди `/...`, набрані як текст, і звичайні ходи чату все одно дотримуються налаштованого групового значення за замовчуванням.
|
||||
|
||||
## Видимість контексту та allowlist
|
||||
## Видимість контексту та списки дозволених
|
||||
|
||||
У безпеці груп задіяні два різні елементи керування:
|
||||
У груповій безпеці задіяні два різні механізми керування:
|
||||
|
||||
- **Авторизація запуску**: хто може запускати агента (`groupPolicy`, `groups`, `groupAllowFrom`, allowlist, специфічні для каналу).
|
||||
- **Видимість контексту**: який додатковий контекст вводиться в модель (текст відповіді, цитати, історія треду, переслані метадані).
|
||||
- **Авторизація запуску**: хто може запускати агента (`groupPolicy`, `groups`, `groupAllowFrom`, списки дозволених для окремих каналів).
|
||||
- **Видимість контексту**: який додатковий контекст вставляється в модель (текст відповіді, цитати, історія треду, метадані пересилання).
|
||||
|
||||
Типово OpenClaw надає пріоритет звичайній поведінці чату й здебільшого зберігає контекст таким, яким його отримано. Це означає, що allowlist переважно вирішують, хто може запускати дії, а не є універсальною межею редагування для кожного цитованого чи історичного фрагмента.
|
||||
За замовчуванням OpenClaw надає пріоритет звичайній поведінці чату й здебільшого зберігає контекст у тому вигляді, як його отримано. Це означає, що списки дозволених передусім визначають, хто може запускати дії, а не є універсальною межею приховування для кожної процитованої чи історичної вставки.
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Поточна поведінка залежить від каналу">
|
||||
- Деякі канали вже застосовують фільтрацію за відправником для додаткового контексту в конкретних шляхах (наприклад, початкове наповнення тредів Slack, пошуки відповідей/тредів Matrix).
|
||||
- Інші канали все ще передають контекст цитат/відповідей/пересилань таким, яким його отримано.
|
||||
- Інші канали все ще передають контекст цитат/відповідей/пересилань у тому вигляді, як його отримано.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Напрям посилення захисту (заплановано)">
|
||||
- `contextVisibility: "all"` (типово) зберігає поточну поведінку "як отримано".
|
||||
- `contextVisibility: "allowlist"` фільтрує додатковий контекст до відправників з allowlist.
|
||||
- `contextVisibility: "all"` (за замовчуванням) зберігає поточну поведінку «як отримано».
|
||||
- `contextVisibility: "allowlist"` фільтрує додатковий контекст до відправників зі списку дозволених.
|
||||
- `contextVisibility: "allowlist_quote"` — це `allowlist` плюс один явний виняток для цитати/відповіді.
|
||||
|
||||
Доки ця модель посилення захисту не буде реалізована послідовно в усіх каналах, очікуйте відмінностей між поверхнями.
|
||||
Поки цю модель посилення захисту не буде узгоджено реалізовано в усіх каналах, очікуйте відмінностей залежно від поверхні.
|
||||
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||

|
||||

|
||||
|
||||
Якщо ви хочете...
|
||||
|
||||
| Мета | Що налаштувати |
|
||||
| Ціль | Що встановити |
|
||||
| -------------------------------------------- | ---------------------------------------------------------- |
|
||||
| Дозволити всі групи, але відповідати лише на @згадки | `groups: { "*": { requireMention: true } }` |
|
||||
| Вимкнути всі групові відповіді | `groupPolicy: "disabled"` |
|
||||
| Лише конкретні групи | `groups: { "<group-id>": { ... } }` (без ключа `"*"`) |
|
||||
| Лише конкретні групи | `groups: { "<group-id>": { ... } }` (без ключа `"*"` ) |
|
||||
| Лише ви можете запускати в групах | `groupPolicy: "allowlist"`, `groupAllowFrom: ["+1555..."]` |
|
||||
|
||||
## Ключі сесій
|
||||
|
||||
- Групові сесії використовують ключі сесій `agent:<agentId>:<channel>:group:<id>` (кімнати/канали використовують `agent:<agentId>:<channel>:channel:<id>`).
|
||||
- Теми форумів Telegram додають `:topic:<threadId>` до ідентифікатора групи, щоб кожна тема мала власну сесію.
|
||||
- Прямі чати використовують основну сесію (або окрему для кожного відправника, якщо налаштовано).
|
||||
- Heartbeats пропускаються для групових сесій.
|
||||
- Прямі чати використовують основну сесію (або сесію для кожного відправника, якщо налаштовано).
|
||||
- Heartbeat пропускаються для групових сесій.
|
||||
|
||||
<a id="pattern-personal-dms-public-groups-single-agent"></a>
|
||||
|
||||
## Шаблон: особисті DM + публічні групи (один агент)
|
||||
## Патерн: особисті приватні повідомлення + публічні групи (один агент)
|
||||
|
||||
Так — це добре працює, якщо ваш "особистий" трафік — це **DM**, а ваш "публічний" трафік — це **групи**.
|
||||
Так — це добре працює, якщо ваш «особистий» трафік — це **приватні повідомлення**, а ваш «публічний» трафік — це **групи**.
|
||||
|
||||
Чому: у режимі одного агента DM зазвичай потрапляють в **основний** ключ сесії (`agent:main:main`), тоді як групи завжди використовують **неосновні** ключі сесій (`agent:main:<channel>:group:<id>`). Якщо ви вмикаєте sandboxing з `mode: "non-main"`, ці групові сесії запускаються в налаштованому sandbox-бекенді, тоді як ваша основна DM-сесія залишається на хості. Docker є типовим бекендом, якщо ви не виберете інший.
|
||||
Чому: у режимі одного агента приватні повідомлення зазвичай потрапляють в **основний** ключ сесії (`agent:main:main`), тоді як групи завжди використовують **неосновні** ключі сесій (`agent:main:<channel>:group:<id>`). Якщо ввімкнути пісочницю з `mode: "non-main"`, ці групові сесії працюватимуть у налаштованому бекенді пісочниці, а ваша основна сесія приватних повідомлень залишатиметься на хості. Docker є стандартним бекендом, якщо ви не виберете інший.
|
||||
|
||||
Це дає вам один "мозок" агента (спільний робочий простір + пам’ять), але дві позиції виконання:
|
||||
Це дає один «мозок» агента (спільний робочий простір + пам’ять), але два режими виконання:
|
||||
|
||||
- **DM**: повні інструменти (хост)
|
||||
- **Групи**: sandbox + обмежені інструменти
|
||||
- **Приватні повідомлення**: повний набір інструментів (хост)
|
||||
- **Групи**: пісочниця + обмежені інструменти
|
||||
|
||||
<Note>
|
||||
Якщо вам потрібні справді окремі робочі простори/персони ("особисте" і "публічне" ніколи не мають змішуватися), використовуйте другого агента + прив’язки. Див. [Маршрутизація між кількома агентами](/uk/concepts/multi-agent).
|
||||
Якщо вам потрібні справді окремі робочі простори/персони («особисте» і «публічне» ніколи не мають змішуватися), використовуйте другого агента + прив’язки. Див. [Маршрутизація кількох агентів](/uk/concepts/multi-agent).
|
||||
</Note>
|
||||
|
||||
<Tabs>
|
||||
<Tab title="DM на хості, групи в sandbox">
|
||||
<Tab title="Приватні повідомлення на хості, групи в пісочниці">
|
||||
```json5
|
||||
{
|
||||
agents: {
|
||||
@ -165,8 +168,8 @@ otherwise -> reply
|
||||
}
|
||||
```
|
||||
</Tab>
|
||||
<Tab title="Групи бачать лише папку з allowlist">
|
||||
Хочете "групи можуть бачити лише папку X" замість "немає доступу до хоста"? Залиште `workspaceAccess: "none"` і монтуйте в sandbox лише шляхи з allowlist:
|
||||
<Tab title="Групи бачать лише папку зі списку дозволених">
|
||||
Хочете, щоб «групи могли бачити лише папку X» замість «жодного доступу до хоста»? Залиште `workspaceAccess: "none"` і монтуйте в пісочницю лише шляхи зі списку дозволених:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -193,18 +196,18 @@ otherwise -> reply
|
||||
|
||||
Пов’язано:
|
||||
|
||||
- Ключі конфігурації та типові значення: [Конфігурація Gateway](/uk/gateway/config-agents#agentsdefaultssandbox)
|
||||
- Налагодження, чому інструмент заблоковано: [Sandbox проти політики інструментів проти підвищених прав](/uk/gateway/sandbox-vs-tool-policy-vs-elevated)
|
||||
- Докладно про bind mounts: [Sandboxing](/uk/gateway/sandboxing#custom-bind-mounts)
|
||||
- Ключі конфігурації та значення за замовчуванням: [Конфігурація Gateway](/uk/gateway/config-agents#agentsdefaultssandbox)
|
||||
- Налагодження причини блокування інструмента: [Пісочниця проти політики інструментів проти підвищених прав](/uk/gateway/sandbox-vs-tool-policy-vs-elevated)
|
||||
- Подробиці монтування прив’язок: [Пісочниця](/uk/gateway/sandboxing#custom-bind-mounts)
|
||||
|
||||
## Мітки відображення
|
||||
## Відображувані мітки
|
||||
|
||||
- Мітки UI використовують `displayName`, коли доступно, у форматі `<channel>:<token>`.
|
||||
- `#room` зарезервовано для кімнат/каналів; групові чати використовують `g-<slug>` (нижній регістр, пробіли -> `-`, зберігати `#@+._-`).
|
||||
- Мітки UI використовують `displayName`, коли він доступний, у форматі `<channel>:<token>`.
|
||||
- `#room` зарезервовано для кімнат/каналів; групові чати використовують `g-<slug>` (нижній регістр, пробіли -> `-`, залишати `#@+._-`).
|
||||
|
||||
## Політика груп
|
||||
## Групова політика
|
||||
|
||||
Керуйте тим, як групові/кімнатні повідомлення обробляються для кожного каналу:
|
||||
Керуйте тим, як обробляються групові повідомлення та повідомлення кімнат для кожного каналу:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -251,47 +254,47 @@ otherwise -> reply
|
||||
}
|
||||
```
|
||||
|
||||
| Політика | Поведінка |
|
||||
| Політика | Поведінка |
|
||||
| ------------- | ------------------------------------------------------------ |
|
||||
| `"open"` | Групи обходять allowlist; шлюзування за згадкою все ще застосовується. |
|
||||
| `"disabled"` | Повністю блокувати всі групові повідомлення. |
|
||||
| `"allowlist"` | Дозволяти лише групи/кімнати, які відповідають налаштованому allowlist. |
|
||||
| `"open"` | Групи обходять списки дозволених; вимога згадки все одно застосовується. |
|
||||
| `"disabled"` | Повністю блокує всі групові повідомлення. |
|
||||
| `"allowlist"` | Дозволяє лише групи/кімнати, що відповідають налаштованому списку дозволених. |
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Примітки для кожного каналу">
|
||||
- `groupPolicy` окремий від шлюзування за згадкою (яке вимагає @згадок).
|
||||
- WhatsApp/Telegram/Signal/iMessage/Microsoft Teams/Zalo: використовуйте `groupAllowFrom` (fallback: явний `allowFrom`).
|
||||
- Схвалення поєднання DM (записи сховища `*-allowFrom`) застосовуються лише до доступу DM; авторизація відправника в групі залишається явно прив’язаною до групових allowlist.
|
||||
- Discord: allowlist використовує `channels.discord.guilds.<id>.channels`.
|
||||
- Slack: allowlist використовує `channels.slack.channels`.
|
||||
- Matrix: allowlist використовує `channels.matrix.groups`. Надавайте перевагу ідентифікаторам кімнат або псевдонімам; пошук назви приєднаної кімнати виконується за найкращою спробою, а нерозв’язані назви ігноруються під час виконання. Використовуйте `channels.matrix.groupAllowFrom`, щоб обмежити відправників; allowlist `users` для окремих кімнат також підтримуються.
|
||||
- Групові DM керуються окремо (`channels.discord.dm.*`, `channels.slack.dm.*`).
|
||||
- Allowlist Telegram може зіставляти ідентифікатори користувачів (`"123456789"`, `"telegram:123456789"`, `"tg:123456789"`) або імена користувачів (`"@alice"` чи `"alice"`); префікси не чутливі до регістру.
|
||||
- Типово `groupPolicy: "allowlist"`; якщо ваш груповий allowlist порожній, групові повідомлення блокуються.
|
||||
- Безпека під час виконання: коли блок провайдера повністю відсутній (`channels.<provider>` відсутній), політика груп повертається до режиму fail-closed (зазвичай `allowlist`) замість успадкування `channels.defaults.groupPolicy`.
|
||||
<Accordion title="Примітки для окремих каналів">
|
||||
- `groupPolicy` окремий від перевірки згадки (яка вимагає @згадки).
|
||||
- WhatsApp/Telegram/Signal/iMessage/Microsoft Teams/Zalo: використовуйте `groupAllowFrom` (резервний варіант: явний `allowFrom`).
|
||||
- Схвалення сполучення приватних повідомлень (записи сховища `*-allowFrom`) застосовуються лише до доступу до приватних повідомлень; авторизація відправника в групі залишається явно прив’язаною до групових списків дозволених.
|
||||
- Discord: список дозволених використовує `channels.discord.guilds.<id>.channels`.
|
||||
- Slack: список дозволених використовує `channels.slack.channels`.
|
||||
- Matrix: список дозволених використовує `channels.matrix.groups`. Віддавайте перевагу ідентифікаторам або псевдонімам кімнат; пошук назви приєднаної кімнати виконується за принципом найкращої спроби, а нерозв’язані назви ігноруються під час виконання. Використовуйте `channels.matrix.groupAllowFrom`, щоб обмежити відправників; також підтримуються списки дозволених `users` для окремих кімнат.
|
||||
- Групові приватні повідомлення керуються окремо (`channels.discord.dm.*`, `channels.slack.dm.*`).
|
||||
- Список дозволених Telegram може збігатися з ідентифікаторами користувачів (`"123456789"`, `"telegram:123456789"`, `"tg:123456789"`) або іменами користувачів (`"@alice"` чи `"alice"`); префікси не чутливі до регістру.
|
||||
- Значення за замовчуванням — `groupPolicy: "allowlist"`; якщо ваш груповий список дозволених порожній, групові повідомлення блокуються.
|
||||
- Безпека під час виконання: коли блок провайдера повністю відсутній (`channels.<provider>` відсутній), групова політика повертається до режиму закриття в разі невизначеності (зазвичай `allowlist`) замість успадкування `channels.defaults.groupPolicy`.
|
||||
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
Коротка ментальна модель (порядок оцінювання групових повідомлень):
|
||||
Коротка модель для розуміння (порядок оцінювання групових повідомлень):
|
||||
|
||||
<Steps>
|
||||
<Step title="groupPolicy">
|
||||
`groupPolicy` (open/disabled/allowlist).
|
||||
</Step>
|
||||
<Step title="Allowlist груп">
|
||||
Allowlist груп (`*.groups`, `*.groupAllowFrom`, allowlist, специфічний для каналу).
|
||||
<Step title="Групові списки дозволених">
|
||||
Групові списки дозволених (`*.groups`, `*.groupAllowFrom`, список дозволених для конкретного каналу).
|
||||
</Step>
|
||||
<Step title="Шлюзування за згадкою">
|
||||
Шлюзування за згадкою (`requireMention`, `/activation`).
|
||||
<Step title="Вимога згадки">
|
||||
Перевірка згадки (`requireMention`, `/activation`).
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
## Шлюзування за згадкою (типово)
|
||||
## Вимога згадки (за замовчуванням)
|
||||
|
||||
Групові повідомлення потребують згадки, якщо це не перевизначено для окремої групи. Типові значення зберігаються для кожної підсистеми в `*.groups."*"`.
|
||||
Групові повідомлення вимагають згадки, якщо це не перевизначено для окремої групи. Значення за замовчуванням задаються для кожної підсистеми в `*.groups."*"`.
|
||||
|
||||
Відповідь на повідомлення бота вважається неявною згадкою, коли канал підтримує метадані відповіді. Цитування повідомлення бота також може вважатися неявною згадкою в каналах, які надають метадані цитати. Поточні вбудовані випадки включають Telegram, WhatsApp, Slack, Discord, Microsoft Teams і ZaloUser.
|
||||
Відповідь на повідомлення бота вважається неявною згадкою, коли канал підтримує метадані відповіді. Цитування повідомлення бота також може вважатися неявною згадкою в каналах, які надають метадані цитування. Поточні вбудовані випадки включають Telegram, WhatsApp, Slack, Discord, Microsoft Teams і ZaloUser.
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -330,40 +333,40 @@ otherwise -> reply
|
||||
```
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Нотатки щодо шлюзу згадок">
|
||||
- `mentionPatterns` — це безпечні regex-шаблони без урахування регістру; недійсні шаблони та небезпечні форми з вкладеним повторенням ігноруються.
|
||||
- Поверхні, які надають явні згадки, усе одно проходять; шаблони є резервним варіантом.
|
||||
<Accordion title="Mention gating notes">
|
||||
- `mentionPatterns` — безпечні regex-шаблони без урахування регістру; недійсні шаблони та небезпечні форми вкладеного повторення ігноруються.
|
||||
- Поверхні, які надають явні згадки, усе одно проходять; шаблони є запасним варіантом.
|
||||
- Перевизначення для окремого агента: `agents.list[].groupChat.mentionPatterns` (корисно, коли кілька агентів спільно використовують групу).
|
||||
- Шлюз згадок застосовується лише тоді, коли виявлення згадок можливе (налаштовано нативні згадки або `mentionPatterns`).
|
||||
- Контекст промпта групового чату переносить розв’язану інструкцію тихої відповіді в кожному ході; файли робочої області не мають дублювати механіку `NO_REPLY`.
|
||||
- Відсікання за згадкою застосовується лише тоді, коли виявлення згадки можливе (налаштовані нативні згадки або `mentionPatterns`).
|
||||
- Контекст групового чату в промпті переносить розв’язану інструкцію тихої відповіді на кожному ході; файли робочого простору не мають дублювати механіку `NO_REPLY`.
|
||||
- Групи, де дозволені тихі відповіді, трактують чисті порожні або лише reasoning-ходи моделі як тихі, еквівалентні `NO_REPLY`. Прямі чати роблять те саме лише тоді, коли прямі тихі відповіді явно дозволені; інакше порожні відповіді залишаються невдалими ходами агента.
|
||||
- Типові значення Discord містяться в `channels.discord.guilds."*"` (можна перевизначити для окремої гільдії/каналу).
|
||||
- Контекст історії групи обгортається однаково для всіх каналів і є **лише pending** (повідомлення, пропущені через шлюз згадок); використовуйте `messages.groupChat.historyLimit` для глобального типового значення та `channels.<channel>.historyLimit` (або `channels.<channel>.accounts.*.historyLimit`) для перевизначень. Установіть `0`, щоб вимкнути.
|
||||
- Контекст історії групи уніфіковано обгортається в усіх каналах і є **лише pending** (повідомлення, пропущені через відсікання за згадкою); використовуйте `messages.groupChat.historyLimit` для глобального типового значення та `channels.<channel>.historyLimit` (або `channels.<channel>.accounts.*.historyLimit`) для перевизначень. Установіть `0`, щоб вимкнути.
|
||||
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## Обмеження інструментів для групи/каналу (необов’язково)
|
||||
## Обмеження інструментів для груп/каналів (необов’язково)
|
||||
|
||||
Деякі конфігурації каналів підтримують обмеження того, які інструменти доступні **всередині конкретної групи/кімнати/каналу**.
|
||||
|
||||
- `tools`: дозволити/заборонити інструменти для всієї групи.
|
||||
- `toolsBySender`: перевизначення за відправником у межах групи. Використовуйте явні префікси ключів: `id:<senderId>`, `e164:<phone>`, `username:<handle>`, `name:<displayName>` і wildcard `"*"`. Застарілі ключі без префікса все ще приймаються й зіставляються лише як `id:`.
|
||||
- `toolsBySender`: перевизначення для окремих відправників у межах групи. Використовуйте явні префікси ключів: `id:<senderId>`, `e164:<phone>`, `username:<handle>`, `name:<displayName>` і wildcard `"*"`. Застарілі ключі без префікса досі приймаються й зіставляються лише як `id:`.
|
||||
|
||||
Порядок розв’язання (найконкретніше перемагає):
|
||||
Порядок розв’язання (найспецифічніше перемагає):
|
||||
|
||||
<Steps>
|
||||
<Step title="Group toolsBySender">
|
||||
Збіг `toolsBySender` групи/каналу.
|
||||
Збіг групового/канального `toolsBySender`.
|
||||
</Step>
|
||||
<Step title="Group tools">
|
||||
`tools` групи/каналу.
|
||||
Груповий/канальний `tools`.
|
||||
</Step>
|
||||
<Step title="Default toolsBySender">
|
||||
Збіг типового (`"*"`) `toolsBySender`.
|
||||
Типовий (`"*"`) збіг `toolsBySender`.
|
||||
</Step>
|
||||
<Step title="Default tools">
|
||||
Типові (`"*"`) `tools`.
|
||||
Типовий (`"*"`) `tools`.
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
@ -388,18 +391,18 @@ otherwise -> reply
|
||||
```
|
||||
|
||||
<Note>
|
||||
Обмеження інструментів для групи/каналу застосовуються на додачу до глобальної політики інструментів або політики інструментів агента (заборона все одно перемагає). Деякі канали використовують інше вкладення для кімнат/каналів (наприклад, Discord `guilds.*.channels.*`, Slack `channels.*`, Microsoft Teams `teams.*.channels.*`).
|
||||
Обмеження інструментів для груп/каналів застосовуються на додачу до глобальної політики інструментів або політики інструментів агента (заборона все одно переважає). Деякі канали використовують іншу вкладеність для кімнат/каналів (наприклад, Discord `guilds.*.channels.*`, Slack `channels.*`, Microsoft Teams `teams.*.channels.*`).
|
||||
</Note>
|
||||
|
||||
## Списки дозволених груп
|
||||
|
||||
Коли налаштовано `channels.whatsapp.groups`, `channels.telegram.groups` або `channels.imessage.groups`, ключі діють як список дозволених груп. Використовуйте `"*"`, щоб дозволити всі групи, водночас установивши типову поведінку згадок.
|
||||
Коли налаштовано `channels.whatsapp.groups`, `channels.telegram.groups` або `channels.imessage.groups`, ключі діють як список дозволених груп. Використовуйте `"*"`, щоб дозволити всі групи й водночас установити типову поведінку згадок.
|
||||
|
||||
<Warning>
|
||||
Поширена плутанина: схвалення спарювання DM — це не те саме, що авторизація групи. Для каналів, які підтримують спарювання DM, сховище спарювань розблоковує лише DM. Групові команди все ще потребують явної авторизації відправника групи з конфігураційних списків дозволених, таких як `groupAllowFrom`, або задокументованого резервного варіанта конфігурації для цього каналу.
|
||||
Поширена плутанина: схвалення сполучення в DM — це не те саме, що авторизація групи. Для каналів, які підтримують сполучення DM, сховище сполучень розблоковує лише DM. Групові команди все одно потребують явної авторизації відправника групи зі списків дозволених у конфігурації, таких як `groupAllowFrom`, або задокументованого запасного варіанта конфігурації для цього каналу.
|
||||
</Warning>
|
||||
|
||||
Поширені наміри (копіюйте/вставляйте):
|
||||
Поширені наміри (копіювати/вставити):
|
||||
|
||||
<Tabs>
|
||||
<Tab title="Disable all group replies">
|
||||
@ -460,37 +463,37 @@ otherwise -> reply
|
||||
|
||||
## Поля контексту
|
||||
|
||||
Вхідні payload-и групи задають:
|
||||
Вхідні payload-и груп установлюють:
|
||||
|
||||
- `ChatType=group`
|
||||
- `GroupSubject` (якщо відомо)
|
||||
- `GroupMembers` (якщо відомо)
|
||||
- `WasMentioned` (результат шлюзу згадок)
|
||||
- Теми форуму Telegram також включають `MessageThreadId` і `IsForum`.
|
||||
- `WasMentioned` (результат відсікання за згадкою)
|
||||
- Теми форуму Telegram також включають `MessageThreadId` та `IsForum`.
|
||||
|
||||
Нотатки для окремих каналів:
|
||||
|
||||
- BlueBubbles може необов’язково збагачувати безіменних учасників групи macOS з локальної бази даних Contacts перед заповненням `GroupMembers`. Це вимкнено за замовчуванням і запускається лише після проходження звичайного групового шлюзу.
|
||||
- BlueBubbles може необов’язково збагачувати неназваних учасників груп macOS із локальної бази даних Контактів перед заповненням `GroupMembers`. Це вимкнено за замовчуванням і запускається лише після проходження звичайного відсікання групи.
|
||||
|
||||
Системний промпт агента включає вступ для групи на першому ході нової групової сесії. Він нагадує моделі відповідати як людина, уникати Markdown-таблиць, мінімізувати порожні рядки й дотримуватися звичайних інтервалів чату, а також не вводити буквальні послідовності `\n`. Назви груп і мітки учасників із каналів відображаються як огороджені ненадійні метадані, а не як вбудовані системні інструкції.
|
||||
Системний промпт агента містить вступ про групу на першому ході нової групової сесії. Він нагадує моделі відповідати як людина, уникати Markdown-таблиць, мінімізувати порожні рядки та дотримуватися звичайних інтервалів чату, а також уникати введення буквальних послідовностей `\n`. Назви груп і мітки учасників, отримані з каналу, відображаються як fenced недовірені метадані, а не як вбудовані системні інструкції.
|
||||
|
||||
## Особливості iMessage
|
||||
|
||||
- Надавайте перевагу `chat_id:<id>` під час маршрутизації або внесення до списку дозволених.
|
||||
- Перелічити чати: `imsg chats --limit 20`.
|
||||
- Віддавайте перевагу `chat_id:<id>` під час маршрутизації або внесення до списку дозволених.
|
||||
- Список чатів: `imsg chats --limit 20`.
|
||||
- Відповіді групи завжди повертаються до того самого `chat_id`.
|
||||
|
||||
## Системні промпти WhatsApp
|
||||
|
||||
Див. [WhatsApp](/uk/channels/whatsapp#system-prompts) щодо канонічних правил системних промптів WhatsApp, включно з розв’язанням групових і прямих промптів, поведінкою wildcard та семантикою перевизначення облікового запису.
|
||||
Див. [WhatsApp](/uk/channels/whatsapp#system-prompts) для канонічних правил системних промптів WhatsApp, зокрема розв’язання групових і прямих промптів, поведінки wildcard і семантики перевизначення акаунта.
|
||||
|
||||
## Особливості WhatsApp
|
||||
|
||||
Див. [Групові повідомлення](/uk/channels/group-messages) щодо поведінки, специфічної лише для WhatsApp (вставлення історії, подробиці обробки згадок).
|
||||
Див. [Групові повідомлення](/uk/channels/group-messages) щодо поведінки, специфічної лише для WhatsApp (вставлення історії, деталі обробки згадок).
|
||||
|
||||
## Пов’язане
|
||||
|
||||
- [Групи трансляції](/uk/channels/broadcast-groups)
|
||||
- [Групи розсилки](/uk/channels/broadcast-groups)
|
||||
- [Маршрутизація каналів](/uk/channels/channel-routing)
|
||||
- [Групові повідомлення](/uk/channels/group-messages)
|
||||
- [Спарювання](/uk/channels/pairing)
|
||||
- [Сполучення](/uk/channels/pairing)
|
||||
|
||||
@ -1,53 +1,56 @@
|
||||
---
|
||||
read_when:
|
||||
- Налаштування Plugin для каналу (автентифікація, контроль доступу, кілька облікових записів)
|
||||
- Усунення неполадок із ключами конфігурації для окремих каналів
|
||||
- Аудит політики приватних повідомлень, політики груп або керування доступом за згадками
|
||||
- Налаштування Plugin каналу (автентифікація, контроль доступу, кілька облікових записів)
|
||||
- Усунення проблем із ключами конфігурації для кожного каналу
|
||||
- Аудит політики прямих повідомлень, політики груп або доступу за згадками
|
||||
summary: 'Конфігурація каналів: контроль доступу, сполучення, ключі для кожного каналу в Slack, Discord, Telegram, WhatsApp, Matrix, iMessage тощо'
|
||||
title: Конфігурація — канали
|
||||
x-i18n:
|
||||
generated_at: "2026-04-29T10:10:45Z"
|
||||
generated_at: "2026-04-30T13:59:33Z"
|
||||
model: gpt-5.5
|
||||
provider: openai
|
||||
source_hash: e16ab50020711aac8e06cd234739ac7b566420cf7ce8621c0aca12c22484f07f
|
||||
source_hash: aba14cb43e1fe914cc7c03f41bed1b5915cc6b2ad8e0f1d47f58b7e98c1b3915
|
||||
source_path: gateway/config-channels.md
|
||||
workflow: 16
|
||||
---
|
||||
|
||||
Ключі конфігурації окремих каналів у `channels.*`. Охоплює доступ до DM і груп, налаштування кількох облікових записів, mention gating і ключі окремих каналів для Slack, Discord, Telegram, WhatsApp, Matrix, iMessage та інших вбудованих Plugin каналів.
|
||||
Ключі конфігурації для кожного каналу в `channels.*`. Охоплює доступ до DM і груп,
|
||||
налаштування кількох облікових записів, шлюзування згадок і ключі для кожного каналу Slack, Discord,
|
||||
Telegram, WhatsApp, Matrix, iMessage та інших вбудованих Plugin каналів.
|
||||
|
||||
Для агентів, інструментів, середовища виконання Gateway та інших ключів верхнього рівня див. [Довідник конфігурації](/uk/gateway/configuration-reference).
|
||||
Для агентів, інструментів, середовища виконання Gateway та інших ключів верхнього рівня див.
|
||||
[Довідник конфігурації](/uk/gateway/configuration-reference).
|
||||
|
||||
## Канали
|
||||
|
||||
Кожен канал запускається автоматично, коли існує його розділ конфігурації (якщо не вказано `enabled: false`).
|
||||
Кожен канал запускається автоматично, коли існує його секція конфігурації (якщо не задано `enabled: false`).
|
||||
|
||||
### Доступ до DM і груп
|
||||
|
||||
Усі канали підтримують політики DM і групові політики:
|
||||
Усі канали підтримують політики DM і політики груп:
|
||||
|
||||
| Політика DM | Поведінка |
|
||||
| ------------------- | --------------------------------------------------------------- |
|
||||
| `pairing` (типово) | Невідомі відправники отримують одноразовий код сполучення; власник має схвалити |
|
||||
| `allowlist` | Лише відправники в `allowFrom` (або у сховищі дозволених сполучень) |
|
||||
| `open` | Дозволити всі вхідні DM (потребує `allowFrom: ["*"]`) |
|
||||
| `disabled` | Ігнорувати всі вхідні DM |
|
||||
| `pairing` (default) | Невідомі відправники отримують одноразовий код сполучення; власник має схвалити |
|
||||
| `allowlist` | Лише відправники в `allowFrom` (або в paired allow store) |
|
||||
| `open` | Дозволити всі вхідні DM (потрібно `allowFrom: ["*"]`) |
|
||||
| `disabled` | Ігнорувати всі вхідні DM |
|
||||
|
||||
| Групова політика | Поведінка |
|
||||
| ---------------------- | ----------------------------------------------------- |
|
||||
| `allowlist` (типово) | Лише групи, що відповідають налаштованому списку дозволених |
|
||||
| `open` | Обійти групові списки дозволених (mention-gating все одно застосовується) |
|
||||
| `disabled` | Блокувати всі повідомлення груп/кімнат |
|
||||
| Політика групи | Поведінка |
|
||||
| --------------------- | ----------------------------------------------------- |
|
||||
| `allowlist` (default) | Лише групи, що відповідають налаштованому списку дозволених |
|
||||
| `open` | Обійти списки дозволених груп (шлюзування згадок усе ще застосовується) |
|
||||
| `disabled` | Блокувати всі повідомлення груп/кімнат |
|
||||
|
||||
<Note>
|
||||
`channels.defaults.groupPolicy` задає типове значення, коли `groupPolicy` провайдера не встановлено.
|
||||
Коди сполучення спливають через 1 годину. Очікувані запити на сполучення DM обмежені **3 на канал**.
|
||||
Якщо блок провайдера повністю відсутній (`channels.<provider>` відсутній), групова політика під час виконання повертається до `allowlist` (fail-closed) із попередженням під час запуску.
|
||||
`channels.defaults.groupPolicy` задає стандартне значення, коли `groupPolicy` провайдера не встановлено.
|
||||
Коди сполучення закінчують дію через 1 годину. Очікувані запити на сполучення DM обмежено **3 на канал**.
|
||||
Якщо блок провайдера повністю відсутній (`channels.<provider>` відсутній), політика груп під час виконання повертається до `allowlist` (fail-closed) із попередженням під час запуску.
|
||||
</Note>
|
||||
|
||||
### Перевизначення моделі каналу
|
||||
|
||||
Використовуйте `channels.modelByChannel`, щоб закріпити конкретні ID каналів за моделлю. Значення приймають `provider/model` або налаштовані псевдоніми моделей. Зіставлення каналу застосовується, коли сесія ще не має перевизначення моделі (наприклад, встановленого через `/model`).
|
||||
Використовуйте `channels.modelByChannel`, щоб закріпити певні ID каналів за моделлю. Значення приймають `provider/model` або налаштовані псевдоніми моделей. Зіставлення каналів застосовується, коли сесія ще не має перевизначення моделі (наприклад, заданого через `/model`).
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -70,7 +73,7 @@ x-i18n:
|
||||
|
||||
### Типові значення каналів і Heartbeat
|
||||
|
||||
Використовуйте `channels.defaults` для спільної поведінки групової політики та Heartbeat між провайдерами:
|
||||
Використовуйте `channels.defaults` для спільної поведінки політики груп і Heartbeat між провайдерами:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -88,11 +91,11 @@ x-i18n:
|
||||
}
|
||||
```
|
||||
|
||||
- `channels.defaults.groupPolicy`: резервна групова політика, коли `groupPolicy` на рівні провайдера не встановлено.
|
||||
- `channels.defaults.contextVisibility`: типовий режим видимості додаткового контексту для всіх каналів. Значення: `all` (типово, включати весь цитований контекст/контекст гілки/історії), `allowlist` (включати лише контекст від відправників зі списку дозволених), `allowlist_quote` (те саме, що allowlist, але зберігати явний контекст цитати/відповіді). Перевизначення для окремого каналу: `channels.<channel>.contextVisibility`.
|
||||
- `channels.defaults.groupPolicy`: резервна політика групи, коли `groupPolicy` на рівні провайдера не встановлено.
|
||||
- `channels.defaults.contextVisibility`: стандартний режим видимості додаткового контексту для всіх каналів. Значення: `all` (стандартно, включати весь контекст цитат/тредів/історії), `allowlist` (включати лише контекст від відправників зі списку дозволених), `allowlist_quote` (те саме, що allowlist, але зберігати явний контекст цитати/відповіді). Перевизначення для каналу: `channels.<channel>.contextVisibility`.
|
||||
- `channels.defaults.heartbeat.showOk`: включати справні статуси каналів у вивід Heartbeat.
|
||||
- `channels.defaults.heartbeat.showAlerts`: включати погіршені/помилкові статуси у вивід Heartbeat.
|
||||
- `channels.defaults.heartbeat.useIndicator`: відображати компактний вивід Heartbeat у стилі індикатора.
|
||||
- `channels.defaults.heartbeat.useIndicator`: відображати компактний вивід Heartbeat у стилі індикаторів.
|
||||
|
||||
### WhatsApp
|
||||
|
||||
@ -154,10 +157,10 @@ WhatsApp працює через вебканал Gateway (Baileys Web). Він
|
||||
}
|
||||
```
|
||||
|
||||
- Вихідні команди типово використовують обліковий запис `default`, якщо він існує; інакше перший налаштований ID облікового запису (відсортований).
|
||||
- Необов’язковий `channels.whatsapp.defaultAccount` перевизначає цей резервний вибір типового облікового запису, коли він відповідає налаштованому ID облікового запису.
|
||||
- Застарілий каталог автентифікації Baileys для одного облікового запису мігрується командою `openclaw doctor` у `whatsapp/default`.
|
||||
- Перевизначення для окремого облікового запису: `channels.whatsapp.accounts.<id>.sendReadReceipts`, `channels.whatsapp.accounts.<id>.dmPolicy`, `channels.whatsapp.accounts.<id>.allowFrom`.
|
||||
- Вихідні команди стандартно використовують обліковий запис `default`, якщо він існує; інакше перший налаштований id облікового запису (відсортований).
|
||||
- Необов’язковий `channels.whatsapp.defaultAccount` перевизначає цей резервний вибір стандартного облікового запису, коли він збігається з налаштованим id облікового запису.
|
||||
- Застарілий auth dir Baileys для одного облікового запису мігрується командою `openclaw doctor` у `whatsapp/default`.
|
||||
- Перевизначення для облікового запису: `channels.whatsapp.accounts.<id>.sendReadReceipts`, `channels.whatsapp.accounts.<id>.dmPolicy`, `channels.whatsapp.accounts.<id>.allowFrom`.
|
||||
|
||||
</Accordion>
|
||||
|
||||
@ -216,11 +219,11 @@ WhatsApp працює через вебканал Gateway (Baileys Web). Він
|
||||
}
|
||||
```
|
||||
|
||||
- Токен бота: `channels.telegram.botToken` або `channels.telegram.tokenFile` (лише звичайний файл; символьні посилання відхиляються), з `TELEGRAM_BOT_TOKEN` як резервом для типового облікового запису.
|
||||
- `apiRoot` є лише коренем Telegram Bot API. Використовуйте `https://api.telegram.org` або власний self-hosted/proxy корінь, а не `https://api.telegram.org/bot<TOKEN>`; `openclaw doctor --fix` видаляє випадковий кінцевий суфікс `/bot<TOKEN>`.
|
||||
- Необов’язковий `channels.telegram.defaultAccount` перевизначає вибір типового облікового запису, коли він відповідає налаштованому ID облікового запису.
|
||||
- У налаштуваннях із кількома обліковими записами (2+ ID облікових записів) задайте явний типовий (`channels.telegram.defaultAccount` або `channels.telegram.accounts.default`), щоб уникнути резервної маршрутизації; `openclaw doctor` попереджає, коли він відсутній або недійсний.
|
||||
- `configWrites: false` блокує ініційовані Telegram записи конфігурації (міграції ID супергруп, `/config set|unset`).
|
||||
- Токен бота: `channels.telegram.botToken` або `channels.telegram.tokenFile` (лише звичайний файл; symlinks відхиляються), з `TELEGRAM_BOT_TOKEN` як резервним варіантом для стандартного облікового запису.
|
||||
- `apiRoot` є лише коренем Telegram Bot API. Використовуйте `https://api.telegram.org` або власний self-hosted/proxy root, а не `https://api.telegram.org/bot<TOKEN>`; `openclaw doctor --fix` видаляє випадковий кінцевий суфікс `/bot<TOKEN>`.
|
||||
- Необов’язковий `channels.telegram.defaultAccount` перевизначає вибір стандартного облікового запису, коли він збігається з налаштованим id облікового запису.
|
||||
- У налаштуваннях із кількома обліковими записами (2+ id облікових записів) задайте явний стандартний (`channels.telegram.defaultAccount` або `channels.telegram.accounts.default`), щоб уникнути резервної маршрутизації; `openclaw doctor` попереджає, коли він відсутній або недійсний.
|
||||
- `configWrites: false` блокує записи конфігурації, ініційовані Telegram (міграції ID супергруп, `/config set|unset`).
|
||||
- Записи верхнього рівня `bindings[]` з `type: "acp"` налаштовують постійні прив’язки ACP для тем форуму (використовуйте канонічний `chatId:topic:topicId` у `match.peer.id`). Семантика полів спільна в [Агенти ACP](/uk/tools/acp-agents#channel-specific-settings).
|
||||
- Попередні перегляди потоків Telegram використовують `sendMessage` + `editMessageText` (працює в прямих і групових чатах).
|
||||
- Політика повторних спроб: див. [Політика повторних спроб](/uk/concepts/retry).
|
||||
@ -325,37 +328,37 @@ WhatsApp працює через вебканал Gateway (Baileys Web). Він
|
||||
}
|
||||
```
|
||||
|
||||
- Токен: `channels.discord.token`, з `DISCORD_BOT_TOKEN` як резервом для облікового запису за замовчуванням.
|
||||
- Прямі вихідні виклики, які надають явний Discord `token`, використовують цей токен для виклику; параметри повторних спроб/політик облікового запису все одно беруться з вибраного облікового запису в активному знімку runtime.
|
||||
- Необов’язковий `channels.discord.defaultAccount` перевизначає вибір облікового запису за замовчуванням, коли він збігається з налаштованим ID облікового запису.
|
||||
- Використовуйте `user:<id>` (DM) або `channel:<id>` (канал guild) для цілей доставки; голі числові ID відхиляються.
|
||||
- Слаги guild пишуться нижнім регістром із заміною пробілів на `-`; ключі каналів використовують назву зі слагом (без `#`). Віддавайте перевагу ID guild.
|
||||
- Повідомлення, створені ботами, за замовчуванням ігноруються. `allowBots: true` вмикає їх; використовуйте `allowBots: "mentions"`, щоб приймати лише повідомлення ботів, які згадують бота (власні повідомлення все одно фільтруються).
|
||||
- Токен: `channels.discord.token`, з `DISCORD_BOT_TOKEN` як резервним варіантом для облікового запису за замовчуванням.
|
||||
- Прямі вихідні виклики, які надають явний Discord `token`, використовують цей токен для виклику; налаштування повторних спроб/політик облікового запису все одно беруться з вибраного облікового запису в активному знімку runtime.
|
||||
- Необов’язковий `channels.discord.defaultAccount` перевизначає вибір облікового запису за замовчуванням, коли він збігається з налаштованим id облікового запису.
|
||||
- Використовуйте `user:<id>` (DM) або `channel:<id>` (канал гільдії) для цілей доставки; голі числові ID відхиляються.
|
||||
- Слаги гільдій мають нижній регістр із пробілами, заміненими на `-`; ключі каналів використовують назву у вигляді слага (без `#`). Надавайте перевагу ID гільдій.
|
||||
- Повідомлення, створені ботами, типово ігноруються. `allowBots: true` вмикає їх; використовуйте `allowBots: "mentions"`, щоб приймати лише повідомлення ботів, які згадують бота (власні повідомлення все одно фільтруються).
|
||||
- `channels.discord.guilds.<id>.ignoreOtherMentions` (і перевизначення каналів) відкидає повідомлення, які згадують іншого користувача або роль, але не бота (за винятком @everyone/@here).
|
||||
- `maxLinesPerMessage` (за замовчуванням 17) розбиває високі повідомлення, навіть якщо вони менші за 2000 символів.
|
||||
- `channels.discord.threadBindings` керує маршрутизацією, прив’язаною до потоків Discord:
|
||||
- `enabled`: перевизначення Discord для функцій сесій, прив’язаних до потоків (`/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age` і прив’язана доставка/маршрутизація)
|
||||
- `idleHours`: перевизначення Discord для автоматичного inactivity auto-unfocus у годинах (`0` вимикає)
|
||||
- `maxLinesPerMessage` (типово 17) розбиває високі повідомлення, навіть якщо вони менші за 2000 символів.
|
||||
- `channels.discord.threadBindings` керує маршрутизацією Discord, прив’язаною до тредів:
|
||||
- `enabled`: перевизначення Discord для функцій сесій, прив’язаних до тредів (`/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age`, а також прив’язана доставка/маршрутизація)
|
||||
- `idleHours`: перевизначення Discord для автоматичного unfocus через неактивність у годинах (`0` вимикає)
|
||||
- `maxAgeHours`: перевизначення Discord для жорсткого максимального віку в годинах (`0` вимикає)
|
||||
- `spawnSubagentSessions`: перемикач opt-in для автоматичного створення/прив’язки потоку `sessions_spawn({ thread: true })`
|
||||
- Записи верхнього рівня `bindings[]` з `type: "acp"` налаштовують постійні прив’язки ACP для каналів і потоків (використовуйте ID каналу/потоку в `match.peer.id`). Семантика полів спільна в [ACP Agents](/uk/tools/acp-agents#channel-specific-settings).
|
||||
- `channels.discord.ui.components.accentColor` задає акцентний колір для контейнерів Discord components v2.
|
||||
- `channels.discord.voice` вмикає розмови в голосових каналах Discord і необов’язкові перевизначення auto-join + LLM + TTS.
|
||||
- `spawnSubagentSessions`: opt-in перемикач для автоматичного створення/прив’язування тредів `sessions_spawn({ thread: true })`
|
||||
- Записи верхнього рівня `bindings[]` з `type: "acp"` налаштовують постійні прив’язки ACP для каналів і тредів (використовуйте id каналу/треду в `match.peer.id`). Семантика полів спільна в [ACP Agents](/uk/tools/acp-agents#channel-specific-settings).
|
||||
- `channels.discord.ui.components.accentColor` задає акцентний колір для контейнерів компонентів Discord v2.
|
||||
- `channels.discord.voice` вмикає розмови голосових каналів Discord і необов’язкові перевизначення auto-join + LLM + TTS.
|
||||
- `channels.discord.voice.model` необов’язково перевизначає модель LLM, що використовується для відповідей у голосових каналах Discord.
|
||||
- `channels.discord.voice.daveEncryption` і `channels.discord.voice.decryptionFailureTolerance` передаються до параметрів DAVE `@discordjs/voice` (за замовчуванням `true` і `24`).
|
||||
- OpenClaw додатково намагається відновити приймання голосу, виходячи з голосової сесії та повторно приєднуючись після повторних помилок дешифрування.
|
||||
- `channels.discord.voice.daveEncryption` і `channels.discord.voice.decryptionFailureTolerance` передаються напряму до опцій DAVE `@discordjs/voice` (типово `true` і `24`).
|
||||
- OpenClaw додатково намагається відновлювати приймання голосу, виходячи з голосової сесії та повторно приєднуючись після повторних помилок дешифрування.
|
||||
- `channels.discord.streaming` є канонічним ключем режиму stream. Застарілі значення `streamMode` і булеві `streaming` автоматично мігруються.
|
||||
- `channels.discord.autoPresence` зіставляє доступність runtime з присутністю бота (healthy => online, degraded => idle, exhausted => dnd) і дозволяє необов’язкові перевизначення тексту статусу.
|
||||
- `channels.discord.dangerouslyAllowNameMatching` знову вмикає змінне зіставлення імен/тегів (режим сумісності break-glass).
|
||||
- `channels.discord.autoPresence` відображає доступність runtime на присутність бота (healthy => online, degraded => idle, exhausted => dnd) і дозволяє необов’язкові перевизначення тексту статусу.
|
||||
- `channels.discord.dangerouslyAllowNameMatching` повторно вмикає змінне зіставлення імен/тегів (режим сумісності break-glass).
|
||||
- `channels.discord.execApprovals`: нативна для Discord доставка схвалень exec і авторизація схвалювачів.
|
||||
- `enabled`: `true`, `false` або `"auto"` (за замовчуванням). В автоматичному режимі схвалення exec активуються, коли схвалювачів можна визначити з `approvers` або `commands.ownerAllowFrom`.
|
||||
- `approvers`: ID користувачів Discord, яким дозволено схвалювати запити exec. Якщо пропущено, використовується `commands.ownerAllowFrom`.
|
||||
- `enabled`: `true`, `false` або `"auto"` (типово). В автоматичному режимі схвалення exec активуються, коли схвалювачів можна визначити з `approvers` або `commands.ownerAllowFrom`.
|
||||
- `approvers`: ID користувачів Discord, яким дозволено схвалювати exec-запити. Якщо пропущено, використовується резервний варіант `commands.ownerAllowFrom`.
|
||||
- `agentFilter`: необов’язковий allowlist ID агентів. Пропустіть, щоб пересилати схвалення для всіх агентів.
|
||||
- `sessionFilter`: необов’язкові шаблони ключів сесій (підрядок або regex).
|
||||
- `target`: куди надсилати запити схвалення. `"dm"` (за замовчуванням) надсилає в DM схвалювачам, `"channel"` надсилає у вихідний канал, `"both"` надсилає в обидва. Коли ціль містить `"channel"`, кнопки можуть використовувати лише визначені схвалювачі.
|
||||
- `cleanupAfterResolve`: коли `true`, видаляє DM зі схваленнями після схвалення, відхилення або timeout.
|
||||
- `target`: куди надсилати запити схвалення. `"dm"` (типово) надсилає в DM схвалювачам, `"channel"` надсилає в початковий канал, `"both"` надсилає в обидва місця. Коли target включає `"channel"`, кнопки можуть використовувати лише визначені схвалювачі.
|
||||
- `cleanupAfterResolve`: коли `true`, видаляє DM зі схваленнями після схвалення, відмови або timeout.
|
||||
|
||||
**Режими сповіщень про реакції:** `off` (немає), `own` (повідомлення бота, за замовчуванням), `all` (усі повідомлення), `allowlist` (з `guilds.<id>.users` для всіх повідомлень).
|
||||
**Режими сповіщень про реакції:** `off` (немає), `own` (повідомлення бота, типово), `all` (усі повідомлення), `allowlist` (з `guilds.<id>.users` для всіх повідомлень).
|
||||
|
||||
### Google Chat
|
||||
|
||||
@ -386,11 +389,11 @@ WhatsApp працює через вебканал Gateway (Baileys Web). Він
|
||||
}
|
||||
```
|
||||
|
||||
- JSON сервісного облікового запису: inline (`serviceAccount`) або на основі файлу (`serviceAccountFile`).
|
||||
- SecretRef сервісного облікового запису також підтримується (`serviceAccountRef`).
|
||||
- Резерви env: `GOOGLE_CHAT_SERVICE_ACCOUNT` або `GOOGLE_CHAT_SERVICE_ACCOUNT_FILE`.
|
||||
- JSON облікового запису служби: inline (`serviceAccount`) або на основі файлу (`serviceAccountFile`).
|
||||
- SecretRef облікового запису служби також підтримується (`serviceAccountRef`).
|
||||
- Резервні env-варіанти: `GOOGLE_CHAT_SERVICE_ACCOUNT` або `GOOGLE_CHAT_SERVICE_ACCOUNT_FILE`.
|
||||
- Використовуйте `spaces/<spaceId>` або `users/<userId>` для цілей доставки.
|
||||
- `channels.googlechat.dangerouslyAllowNameMatching` знову вмикає змінне зіставлення email principal (режим сумісності break-glass).
|
||||
- `channels.googlechat.dangerouslyAllowNameMatching` повторно вмикає змінне зіставлення email principal (режим сумісності break-glass).
|
||||
|
||||
### Slack
|
||||
|
||||
@ -462,44 +465,44 @@ WhatsApp працює через вебканал Gateway (Baileys Web). Він
|
||||
}
|
||||
```
|
||||
|
||||
- **Socket mode** потребує і `botToken`, і `appToken` (`SLACK_BOT_TOKEN` + `SLACK_APP_TOKEN` для резерву env облікового запису за замовчуванням).
|
||||
- **HTTP mode** потребує `botToken` плюс `signingSecret` (на root або для кожного облікового запису).
|
||||
- `socketMode` передає налаштування транспорту Slack SDK Socket Mode до публічного API приймача Bolt. Використовуйте його лише під час розслідування timeout ping/pong або поведінки застарілого websocket.
|
||||
- **Socket mode** потребує і `botToken`, і `appToken` (`SLACK_BOT_TOKEN` + `SLACK_APP_TOKEN` для резервного env-варіанта облікового запису за замовчуванням).
|
||||
- **HTTP-режим** потребує `botToken` плюс `signingSecret` (на корені або для окремого облікового запису).
|
||||
- `socketMode` передає налаштування транспорту Socket Mode Slack SDK до публічного API отримувача Bolt. Використовуйте це лише під час розслідування timeout ping/pong або застарілої поведінки websocket.
|
||||
- `botToken`, `appToken`, `signingSecret` і `userToken` приймають plaintext
|
||||
рядки або об’єкти SecretRef.
|
||||
- Знімки облікових записів Slack показують поля джерела/статусу для кожного credential, такі як
|
||||
`botTokenSource`, `botTokenStatus`, `appTokenStatus`, а в HTTP mode —
|
||||
- Знімки облікових записів Slack відкривають поля source/status для кожних облікових даних, як-от
|
||||
`botTokenSource`, `botTokenStatus`, `appTokenStatus`, а в HTTP-режимі
|
||||
`signingSecretStatus`. `configured_unavailable` означає, що обліковий запис
|
||||
налаштований через SecretRef, але поточний шлях команди/runtime не зміг
|
||||
визначити значення секрету.
|
||||
- `configWrites: false` блокує записи конфігурації, ініційовані Slack.
|
||||
- Необов’язковий `channels.slack.defaultAccount` перевизначає вибір облікового запису за замовчуванням, коли він збігається з налаштованим ID облікового запису.
|
||||
- `channels.slack.streaming.mode` є канонічним ключем режиму stream Slack. `channels.slack.streaming.nativeTransport` керує нативним streaming-транспортом Slack. Застарілі значення `streamMode`, булеві `streaming` і `nativeStreaming` автоматично мігруються.
|
||||
налаштовано через SecretRef, але поточний шлях команди/runtime не зміг
|
||||
отримати значення секрету.
|
||||
- `configWrites: false` блокує ініційовані Slack записи конфігурації.
|
||||
- Необов’язковий `channels.slack.defaultAccount` перевизначає вибір облікового запису за замовчуванням, коли він збігається з налаштованим id облікового запису.
|
||||
- `channels.slack.streaming.mode` є канонічним ключем режиму Slack stream. `channels.slack.streaming.nativeTransport` керує нативним streaming-транспортом Slack. Застарілі значення `streamMode`, булеві `streaming` і `nativeStreaming` автоматично мігруються.
|
||||
- Використовуйте `user:<id>` (DM) або `channel:<id>` для цілей доставки.
|
||||
|
||||
**Режими сповіщень про реакції:** `off`, `own` (за замовчуванням), `all`, `allowlist` (з `reactionAllowlist`).
|
||||
**Режими сповіщень про реакції:** `off`, `own` (типово), `all`, `allowlist` (з `reactionAllowlist`).
|
||||
|
||||
**Ізоляція сесій потоків:** `thread.historyScope` є окремою для кожного потоку (за замовчуванням) або спільною для каналу. `thread.inheritParent` копіює transcript батьківського каналу до нових потоків.
|
||||
**Ізоляція тредових сесій:** `thread.historyScope` є потредовим (типово) або спільним у межах каналу. `thread.inheritParent` копіює транскрипт батьківського каналу в нові треди.
|
||||
|
||||
- Нативний streaming Slack разом зі Slack assistant-style статусом потоку "is typing..." потребують цільового потоку відповіді. DM верхнього рівня за замовчуванням залишаються поза потоком, тому вони використовують `typingReaction` або звичайну доставку замість preview у стилі потоку.
|
||||
- `typingReaction` додає тимчасову реакцію до вхідного повідомлення Slack, поки виконується відповідь, а потім видаляє її після завершення. Використовуйте shortcode емодзі Slack, наприклад `"hourglass_flowing_sand"`.
|
||||
- Нативний streaming Slack разом зі статусом треду "is typing..." у стилі асистента Slack потребують цільового треду для відповіді. DM верхнього рівня типово лишаються поза тредами, тому вони використовують `typingReaction` або звичайну доставку замість тредового попереднього перегляду.
|
||||
- `typingReaction` додає тимчасову реакцію до вхідного повідомлення Slack, поки виконується відповідь, а потім видаляє її після завершення. Використовуйте shortcode emoji Slack, як-от `"hourglass_flowing_sand"`.
|
||||
- `channels.slack.execApprovals`: нативна для Slack доставка схвалень exec і авторизація схвалювачів. Та сама схема, що й у Discord: `enabled` (`true`/`false`/`"auto"`), `approvers` (ID користувачів Slack), `agentFilter`, `sessionFilter` і `target` (`"dm"`, `"channel"` або `"both"`).
|
||||
|
||||
| Група дій | За замовчуванням | Примітки |
|
||||
| ------------ | ---------------- | ------------------------------ |
|
||||
| reactions | увімкнено | React + список реакцій |
|
||||
| messages | увімкнено | Читати/надсилати/редагувати/видаляти |
|
||||
| pins | увімкнено | Закріпити/відкріпити/список |
|
||||
| memberInfo | увімкнено | Інформація про учасника |
|
||||
| emojiList | увімкнено | Список власних емодзі |
|
||||
| Група дій | Типово | Примітки |
|
||||
| ------------ | ------- | ---------------------- |
|
||||
| reactions | увімкнено | Реагувати + показувати реакції |
|
||||
| messages | увімкнено | Читати/надсилати/редагувати/видаляти |
|
||||
| pins | увімкнено | Закріпити/відкріпити/показати |
|
||||
| memberInfo | увімкнено | Інформація про учасника |
|
||||
| emojiList | увімкнено | Список користувацьких emoji |
|
||||
|
||||
### Mattermost
|
||||
|
||||
Mattermost постачається як bundled plugin у поточних релізах OpenClaw. Старіші або
|
||||
custom builds можуть встановити поточний npm package за допомогою
|
||||
Mattermost постачається як вбудований plugin у поточних релізах OpenClaw. Старіші або
|
||||
custom-збірки можуть встановити поточний npm-пакет за допомогою
|
||||
`openclaw plugins install @openclaw/mattermost`; якщо npm повідомляє, що
|
||||
пакет, який належить OpenClaw, deprecated, використовуйте bundled plugin або локальний checkout,
|
||||
доки не буде опубліковано новіший npm package.
|
||||
пакет, яким володіє OpenClaw, deprecated, використовуйте вбудований plugin або локальний checkout
|
||||
доки не буде опубліковано новіший npm-пакет.
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -529,23 +532,23 @@ custom builds можуть встановити поточний npm package з
|
||||
}
|
||||
```
|
||||
|
||||
Режими чату: `oncall` (відповідати на @-згадку, за замовчуванням), `onmessage` (кожне повідомлення), `onchar` (повідомлення, що починаються з trigger prefix).
|
||||
Режими чату: `oncall` (відповідати на @-mention, типово), `onmessage` (кожне повідомлення), `onchar` (повідомлення, що починаються з префікса-тригера).
|
||||
|
||||
Коли нативні команди Mattermost увімкнено:
|
||||
Коли ввімкнено нативні команди Mattermost:
|
||||
|
||||
- `commands.callbackPath` має бути path (наприклад `/api/channels/mattermost/command`), а не повним URL.
|
||||
- `commands.callbackUrl` має вказувати на endpoint OpenClaw Gateway і бути доступним із сервера Mattermost.
|
||||
- Нативні slash callback автентифікуються за допомогою токенів кожної команди, повернутих
|
||||
Mattermost під час реєстрації slash command. Якщо реєстрація не вдається або жодні
|
||||
команди не активовано, OpenClaw відхиляє callback з
|
||||
- `commands.callbackPath` має бути шляхом (наприклад `/api/channels/mattermost/command`), а не повною URL-адресою.
|
||||
- `commands.callbackUrl` має резолвитися до endpoint Gateway OpenClaw і бути доступним із сервера Mattermost.
|
||||
- Нативні slash callbacks автентифікуються токенами для кожної команди, які повертає
|
||||
Mattermost під час реєстрації slash command. Якщо реєстрація завершується невдало або жодні
|
||||
команди не активовано, OpenClaw відхиляє callbacks із
|
||||
`Unauthorized: invalid command token.`
|
||||
- Для приватних/tailnet/internal callback-хостів Mattermost може вимагати, щоб
|
||||
`ServiceSettings.AllowedUntrustedInternalConnections` містив callback host/domain.
|
||||
Використовуйте значення host/domain, а не повні URL.
|
||||
- `channels.mattermost.configWrites`: дозволити або заборонити записи конфігурації, ініційовані Mattermost.
|
||||
- Для приватних/tailnet/внутрішніх callback-хостів Mattermost може вимагати,
|
||||
щоб `ServiceSettings.AllowedUntrustedInternalConnections` включав callback-хост/домен.
|
||||
Використовуйте значення хоста/домену, а не повні URL-адреси.
|
||||
- `channels.mattermost.configWrites`: дозволити або заборонити ініційовані Mattermost записи конфігурації.
|
||||
- `channels.mattermost.requireMention`: вимагати `@mention` перед відповіддю в каналах.
|
||||
- `channels.mattermost.groups.<channelId>.requireMention`: перевизначення mention-gating для кожного каналу (`"*"` для default).
|
||||
- Необов’язковий `channels.mattermost.defaultAccount` перевизначає вибір облікового запису за замовчуванням, коли він збігається з налаштованим ID облікового запису.
|
||||
- `channels.mattermost.groups.<channelId>.requireMention`: перевизначення mention-gating для окремого каналу (`"*"` для типового значення).
|
||||
- Необов’язковий `channels.mattermost.defaultAccount` перевизначає вибір облікового запису за замовчуванням, коли він збігається з налаштованим id облікового запису.
|
||||
|
||||
### Signal
|
||||
|
||||
@ -566,15 +569,15 @@ custom builds можуть встановити поточний npm package з
|
||||
}
|
||||
```
|
||||
|
||||
**Режими сповіщень про реакції:** `off`, `own` (типово), `all`, `allowlist` (з `reactionAllowlist`).
|
||||
**Режими сповіщень про реакції:** `off`, `own` (типово), `all`, `allowlist` (із `reactionAllowlist`).
|
||||
|
||||
- `channels.signal.account`: прив’язати запуск каналу до конкретної ідентичності облікового запису Signal.
|
||||
- `channels.signal.configWrites`: дозволити або заборонити записи конфігурації, ініційовані Signal.
|
||||
- Необов’язковий `channels.signal.defaultAccount` перевизначає вибір типового облікового запису, коли він збігається з налаштованим ідентифікатором облікового запису.
|
||||
- Необов’язковий `channels.signal.defaultAccount` перевизначає вибір типового облікового запису, коли він збігається з налаштованим ID облікового запису.
|
||||
|
||||
### BlueBubbles
|
||||
|
||||
BlueBubbles — рекомендований шлях iMessage (на базі Plugin, налаштовується в `channels.bluebubbles`).
|
||||
BlueBubbles — рекомендований шлях iMessage (на основі Plugin, налаштовується в `channels.bluebubbles`).
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -590,8 +593,8 @@ BlueBubbles — рекомендований шлях iMessage (на базі Pl
|
||||
```
|
||||
|
||||
- Основні шляхи ключів, описані тут: `channels.bluebubbles`, `channels.bluebubbles.dmPolicy`.
|
||||
- Необов’язковий `channels.bluebubbles.defaultAccount` перевизначає вибір типового облікового запису, коли він збігається з налаштованим ідентифікатором облікового запису.
|
||||
- Записи верхнього рівня `bindings[]` з `type: "acp"` можуть прив’язувати розмови BlueBubbles до постійних сеансів ACP. Використовуйте дескриптор BlueBubbles або цільовий рядок (`chat_id:*`, `chat_guid:*`, `chat_identifier:*`) у `match.peer.id`. Семантика спільних полів: [Агенти ACP](/uk/tools/acp-agents#channel-specific-settings).
|
||||
- Необов’язковий `channels.bluebubbles.defaultAccount` перевизначає вибір типового облікового запису, коли він збігається з налаштованим ID облікового запису.
|
||||
- Записи верхнього рівня `bindings[]` з `type: "acp"` можуть прив’язувати розмови BlueBubbles до сталих сеансів ACP. Використовуйте дескриптор BlueBubbles або цільовий рядок (`chat_id:*`, `chat_guid:*`, `chat_identifier:*`) у `match.peer.id`. Семантика спільних полів: [Агенти ACP](/uk/tools/acp-agents#channel-specific-settings).
|
||||
- Повну конфігурацію каналу BlueBubbles задокументовано в [BlueBubbles](/uk/channels/bluebubbles).
|
||||
|
||||
### iMessage
|
||||
@ -620,15 +623,15 @@ OpenClaw запускає `imsg rpc` (JSON-RPC через stdio). Демон а
|
||||
}
|
||||
```
|
||||
|
||||
- Необов’язковий `channels.imessage.defaultAccount` перевизначає вибір типового облікового запису, коли він збігається з налаштованим ідентифікатором облікового запису.
|
||||
- Необов’язковий `channels.imessage.defaultAccount` перевизначає вибір типового облікового запису, коли він збігається з налаштованим ID облікового запису.
|
||||
|
||||
- Потребує Full Disk Access до БД Messages.
|
||||
- Віддавайте перевагу цілям `chat_id:<id>`. Використовуйте `imsg chats --limit 20`, щоб переглянути список чатів.
|
||||
- Потрібен Full Disk Access до бази даних Messages.
|
||||
- Надавайте перевагу цілям `chat_id:<id>`. Використовуйте `imsg chats --limit 20`, щоб перелічити чати.
|
||||
- `cliPath` може вказувати на SSH-обгортку; задайте `remoteHost` (`host` або `user@host`) для отримання вкладень через SCP.
|
||||
- `attachmentRoots` і `remoteAttachmentRoots` обмежують шляхи вхідних вкладень (типово: `/Users/*/Library/Messages/Attachments`).
|
||||
- SCP використовує сувору перевірку ключа хоста, тож переконайтеся, що ключ хоста ретранслятора вже є в `~/.ssh/known_hosts`.
|
||||
- `attachmentRoots` і `remoteAttachmentRoots` обмежують вхідні шляхи вкладень (типово: `/Users/*/Library/Messages/Attachments`).
|
||||
- SCP використовує сувору перевірку ключа хоста, тому переконайтеся, що ключ хоста ретранслятора вже існує в `~/.ssh/known_hosts`.
|
||||
- `channels.imessage.configWrites`: дозволити або заборонити записи конфігурації, ініційовані iMessage.
|
||||
- Записи верхнього рівня `bindings[]` з `type: "acp"` можуть прив’язувати розмови iMessage до постійних сеансів ACP. Використовуйте нормалізований дескриптор або явну ціль чату (`chat_id:*`, `chat_guid:*`, `chat_identifier:*`) у `match.peer.id`. Семантика спільних полів: [Агенти ACP](/uk/tools/acp-agents#channel-specific-settings).
|
||||
- Записи верхнього рівня `bindings[]` з `type: "acp"` можуть прив’язувати розмови iMessage до сталих сеансів ACP. Використовуйте нормалізований дескриптор або явну ціль чату (`chat_id:*`, `chat_guid:*`, `chat_identifier:*`) у `match.peer.id`. Семантика спільних полів: [Агенти ACP](/uk/tools/acp-agents#channel-specific-settings).
|
||||
|
||||
<Accordion title="iMessage SSH wrapper example">
|
||||
|
||||
@ -641,7 +644,7 @@ exec ssh -T gateway-host imsg "$@"
|
||||
|
||||
### Matrix
|
||||
|
||||
Matrix працює на базі Plugin і налаштовується в `channels.matrix`.
|
||||
Matrix працює на основі Plugin і налаштовується в `channels.matrix`.
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -672,24 +675,24 @@ Matrix працює на базі Plugin і налаштовується в `cha
|
||||
```
|
||||
|
||||
- Автентифікація токеном використовує `accessToken`; автентифікація паролем використовує `userId` + `password`.
|
||||
- `channels.matrix.proxy` спрямовує HTTP-трафік Matrix через явний HTTP(S)-проксі. Іменовані облікові записи можуть перевизначити це за допомогою `channels.matrix.accounts.<id>.proxy`.
|
||||
- `channels.matrix.network.dangerouslyAllowPrivateNetwork` дозволяє приватні/внутрішні homeserver. `proxy` і ця мережева згода є незалежними засобами керування.
|
||||
- `channels.matrix.proxy` спрямовує HTTP-трафік Matrix через явний HTTP(S)-проксі. Іменовані облікові записи можуть перевизначити його за допомогою `channels.matrix.accounts.<id>.proxy`.
|
||||
- `channels.matrix.network.dangerouslyAllowPrivateNetwork` дозволяє приватні/внутрішні homeserver. `proxy` і ця мережева згода є незалежними елементами керування.
|
||||
- `channels.matrix.defaultAccount` вибирає бажаний обліковий запис у конфігураціях із кількома обліковими записами.
|
||||
- `channels.matrix.autoJoin` типово має значення `off`, тому запрошені кімнати й нові запрошення у стилі DM ігноруються, доки ви не задасте `autoJoin: "allowlist"` з `autoJoinAllowlist` або `autoJoin: "always"`.
|
||||
- `channels.matrix.execApprovals`: нативна для Matrix доставка схвалень exec і авторизація схвалювачів.
|
||||
- `enabled`: `true`, `false` або `"auto"` (типово). В автоматичному режимі схвалення exec активуються, коли схвалювачів можна визначити з `approvers` або `commands.ownerAllowFrom`.
|
||||
- `approvers`: ідентифікатори користувачів Matrix (наприклад, `@owner:example.org`), яким дозволено схвалювати запити exec.
|
||||
- `agentFilter`: необов’язковий список дозволених ідентифікаторів агентів. Опустіть, щоб пересилати схвалення для всіх агентів.
|
||||
- `sessionFilter`: необов’язкові шаблони ключів сеансів (підрядок або regex).
|
||||
- `target`: куди надсилати запити на схвалення. `"dm"` (типово), `"channel"` (початкова кімната) або `"both"`.
|
||||
- Перевизначення для окремого облікового запису: `channels.matrix.accounts.<id>.execApprovals`.
|
||||
- `channels.matrix.dm.sessionScope` керує тим, як DM Matrix групуються в сеанси: `per-user` (типово) спільно використовує сеанс за маршрутизованим співрозмовником, тоді як `per-room` ізолює кожну DM-кімнату.
|
||||
- Перевірки стану Matrix і живі пошуки в каталозі використовують ту саму політику проксі, що й трафік під час виконання.
|
||||
- Повну конфігурацію Matrix, правила таргетингу й приклади налаштування задокументовано в [Matrix](/uk/channels/matrix).
|
||||
- `channels.matrix.autoJoin` типово має значення `off`, тому запрошені кімнати й нові запрошення у стилі DM ігноруються, доки ви не встановите `autoJoin: "allowlist"` з `autoJoinAllowlist` або `autoJoin: "always"`.
|
||||
- `channels.matrix.execApprovals`: доставка схвалень виконання, нативна для Matrix, і авторизація схвалювачів.
|
||||
- `enabled`: `true`, `false` або `"auto"` (типово). В автоматичному режимі схвалення виконання активуються, коли схвалювачів можна визначити з `approvers` або `commands.ownerAllowFrom`.
|
||||
- `approvers`: ID користувачів Matrix (наприклад, `@owner:example.org`), яким дозволено схвалювати запити виконання.
|
||||
- `agentFilter`: необов’язковий список дозволених ID агентів. Пропустіть, щоб пересилати схвалення для всіх агентів.
|
||||
- `sessionFilter`: необов’язкові шаблони ключів сеансів (підрядок або регулярний вираз).
|
||||
- `target`: куди надсилати запити на схвалення. `"dm"` (типово), `"channel"` (вихідна кімната) або `"both"`.
|
||||
- Перевизначення для окремих облікових записів: `channels.matrix.accounts.<id>.execApprovals`.
|
||||
- `channels.matrix.dm.sessionScope` керує тим, як DM Matrix групуються в сеанси: `per-user` (типово) спільно використовує сеанс за маршрутизованим peer, тоді як `per-room` ізолює кожну DM-кімнату.
|
||||
- Перевірки стану Matrix і живі пошуки каталогу використовують ту саму політику проксі, що й трафік під час виконання.
|
||||
- Повну конфігурацію Matrix, правила націлювання та приклади налаштування задокументовано в [Matrix](/uk/channels/matrix).
|
||||
|
||||
### Microsoft Teams
|
||||
|
||||
Microsoft Teams працює на базі Plugin і налаштовується в `channels.msteams`.
|
||||
Microsoft Teams працює на основі Plugin і налаштовується в `channels.msteams`.
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -705,11 +708,11 @@ Microsoft Teams працює на базі Plugin і налаштовуєтьс
|
||||
```
|
||||
|
||||
- Основні шляхи ключів, описані тут: `channels.msteams`, `channels.msteams.configWrites`.
|
||||
- Повну конфігурацію Teams (облікові дані, Webhook, політика DM/груп, перевизначення для окремих команд/каналів) задокументовано в [Microsoft Teams](/uk/channels/msteams).
|
||||
- Повну конфігурацію Microsoft Teams (облікові дані, Webhook, політику DM/груп, перевизначення для окремих команд/каналів) задокументовано в [Microsoft Teams](/uk/channels/msteams).
|
||||
|
||||
### IRC
|
||||
|
||||
IRC працює на базі Plugin і налаштовується в `channels.irc`.
|
||||
IRC працює на основі Plugin і налаштовується в `channels.irc`.
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -731,12 +734,12 @@ IRC працює на базі Plugin і налаштовується в `channe
|
||||
```
|
||||
|
||||
- Основні шляхи ключів, описані тут: `channels.irc`, `channels.irc.dmPolicy`, `channels.irc.configWrites`, `channels.irc.nickserv.*`.
|
||||
- Необов’язковий `channels.irc.defaultAccount` перевизначає вибір типового облікового запису, коли він збігається з налаштованим ідентифікатором облікового запису.
|
||||
- Повну конфігурацію каналу IRC (host/port/TLS/channels/allowlists/mention gating) задокументовано в [IRC](/uk/channels/irc).
|
||||
- Необов’язковий `channels.irc.defaultAccount` перевизначає вибір типового облікового запису, коли він збігається з налаштованим ID облікового запису.
|
||||
- Повну конфігурацію каналу IRC (хост/порт/TLS/канали/списки дозволених/фільтрацію за згадками) задокументовано в [IRC](/uk/channels/irc).
|
||||
|
||||
### Кілька облікових записів (усі канали)
|
||||
|
||||
Запускайте кілька облікових записів на канал (кожен зі своїм `accountId`):
|
||||
Запускайте кілька облікових записів на канал (кожен із власним `accountId`):
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -757,29 +760,31 @@ IRC працює на базі Plugin і налаштовується в `channe
|
||||
}
|
||||
```
|
||||
|
||||
- `default` використовується, коли `accountId` опущено (CLI + маршрутизація).
|
||||
- `default` використовується, коли `accountId` пропущено (CLI + маршрутизація).
|
||||
- Env-токени застосовуються лише до **типового** облікового запису.
|
||||
- Базові налаштування каналу застосовуються до всіх облікових записів, якщо їх не перевизначено для окремого облікового запису.
|
||||
- Використовуйте `bindings[].match.accountId`, щоб спрямовувати кожен обліковий запис до іншого агента.
|
||||
- Якщо ви додаєте нетиповий обліковий запис через `openclaw channels add` (або onboarding каналу), залишаючись на однообліковій конфігурації каналу верхнього рівня, OpenClaw спочатку переносить однооблікові значення верхнього рівня, прив’язані до облікового запису, у мапу облікових записів каналу, щоб початковий обліковий запис продовжив працювати. Більшість каналів переміщують їх у `channels.<channel>.accounts.default`; Matrix натомість може зберегти наявну відповідну іменовану/типову ціль.
|
||||
- Наявні прив’язки лише каналу (без `accountId`) і далі збігаються з типовим обліковим записом; прив’язки з областю облікового запису залишаються необов’язковими.
|
||||
- `openclaw doctor --fix` також виправляє змішані форми, переміщуючи однооблікові значення верхнього рівня, прив’язані до облікового запису, у просунутий обліковий запис, вибраний для цього каналу. Більшість каналів використовують `accounts.default`; Matrix натомість може зберегти наявну відповідну іменовану/типову ціль.
|
||||
- Використовуйте `bindings[].match.accountId`, щоб маршрутизувати кожен обліковий запис до іншого агента.
|
||||
- Якщо ви додаєте нетиповий обліковий запис через `openclaw channels add` (або onboarding каналу), залишаючись на конфігурації каналу верхнього рівня з одним обліковим записом, OpenClaw спершу переносить значення верхнього рівня для одного облікового запису, що належать до області облікового запису, у мапу облікових записів каналу, щоб початковий обліковий запис продовжив працювати. Більшість каналів переносять їх у `channels.<channel>.accounts.default`; Matrix натомість може зберегти наявну відповідну іменовану/типову ціль.
|
||||
- Наявні прив’язки лише до каналу (без `accountId`) продовжують відповідати типовому обліковому запису; прив’язки в області облікового запису залишаються необов’язковими.
|
||||
- `openclaw doctor --fix` також виправляє змішані форми, переміщуючи значення верхнього рівня для одного облікового запису, що належать до області облікового запису, у підвищений обліковий запис, вибраний для цього каналу. Більшість каналів використовують `accounts.default`; Matrix натомість може зберегти наявну відповідну іменовану/типову ціль.
|
||||
|
||||
### Інші канали Plugin
|
||||
|
||||
Багато каналів Plugin налаштовуються як `channels.<id>` і задокументовані на своїх окремих сторінках каналів (наприклад Feishu, Matrix, LINE, Nostr, Zalo, Nextcloud Talk, Synology Chat і Twitch).
|
||||
Дивіться повний індекс каналів: [Канали](/uk/channels).
|
||||
|
||||
### Фільтрація згадок у групових чатах
|
||||
### Фільтрація згадок у груповому чаті
|
||||
|
||||
Для групових повідомлень типово **потрібна згадка** (згадка в метаданих або безпечні regex-шаблони). Застосовується до групових чатів WhatsApp, Telegram, Discord, Google Chat та iMessage.
|
||||
Групові повідомлення типово **вимагають згадки** (згадка в метаданих або безпечні шаблони регулярних виразів). Застосовується до групових чатів WhatsApp, Telegram, Discord, Google Chat і iMessage.
|
||||
|
||||
Видимі відповіді керуються окремо. Для групових/канальних кімнат типовим є `messages.groupChat.visibleReplies: "message_tool"`: OpenClaw все одно обробляє хід, але звичайні фінальні відповіді залишаються приватними, а видимий вивід у кімнату потребує `message(action=send)`. Задавайте `"automatic"` лише тоді, коли вам потрібна застаріла поведінка, за якої звичайні відповіді публікуються назад у кімнату. Щоб застосувати таку саму поведінку видимих відповідей лише через інструмент і до прямих чатів, задайте `messages.visibleReplies: "message_tool"`.
|
||||
Видимі відповіді керуються окремо. Групові/канальні кімнати типово мають `messages.groupChat.visibleReplies: "message_tool"`: OpenClaw усе одно обробляє хід, але звичайні фінальні відповіді залишаються приватними, а видимий вивід у кімнаті потребує `message(action=send)`. Установлюйте `"automatic"` лише тоді, коли хочете застарілу поведінку, за якої звичайні відповіді публікуються назад у кімнату. Щоб застосувати таку саму поведінку видимої відповіді лише через інструмент і до прямих чатів, задайте `messages.visibleReplies: "message_tool"`.
|
||||
|
||||
Gateway гаряче перезавантажує конфігурацію `messages` після збереження файлу. Перезапускайте лише тоді, коли спостереження за файлами або перезавантаження конфігурації вимкнено в розгортанні.
|
||||
|
||||
**Типи згадок:**
|
||||
|
||||
- **Згадки в метаданих**: нативні @-згадки платформи. Ігноруються в режимі self-chat WhatsApp.
|
||||
- **Текстові шаблони**: безпечні regex-шаблони в `agents.list[].groupChat.mentionPatterns`. Недійсні шаблони й небезпечні вкладені повторення ігноруються.
|
||||
- **Згадки в метаданих**: нативні @-згадки платформи. Ігноруються в режимі самочату WhatsApp.
|
||||
- **Текстові шаблони**: безпечні шаблони регулярних виразів у `agents.list[].groupChat.mentionPatterns`. Недійсні шаблони та небезпечні вкладені повторення ігноруються.
|
||||
- Фільтрація згадок застосовується лише тоді, коли виявлення можливе (нативні згадки або принаймні один шаблон).
|
||||
|
||||
```json5
|
||||
@ -797,9 +802,9 @@ IRC працює на базі Plugin і налаштовується в `channe
|
||||
}
|
||||
```
|
||||
|
||||
`messages.groupChat.historyLimit` задає глобальне типове значення. Канали можуть перевизначати його за допомогою `channels.<channel>.historyLimit` (або для окремого облікового запису). Задайте `0`, щоб вимкнути.
|
||||
`messages.groupChat.historyLimit` задає глобальне типове значення. Канали можуть перевизначати його за допомогою `channels.<channel>.historyLimit` (або для окремого облікового запису). Установіть `0`, щоб вимкнути.
|
||||
|
||||
`messages.visibleReplies` — це глобальне типове значення для source-turn; `messages.groupChat.visibleReplies` перевизначає його для групових/канальних source-turn. Списки дозволів каналів і фільтрація згадок усе одно визначають, чи буде оброблено хід.
|
||||
`messages.visibleReplies` — це глобальне типове значення для source-turn; `messages.groupChat.visibleReplies` перевизначає його для групових/канальних source-turn. Списки дозволених каналів і фільтрація згадок усе ще визначають, чи обробляється хід.
|
||||
|
||||
#### Ліміти історії DM
|
||||
|
||||
@ -816,13 +821,13 @@ IRC працює на базі Plugin і налаштовується в `channe
|
||||
}
|
||||
```
|
||||
|
||||
Порядок визначення: перевизначення для окремого DM → типове значення провайдера → без ліміту (усе зберігається).
|
||||
Розв’язання: перевизначення для окремого DM → типове значення провайдера → без ліміту (усе зберігається).
|
||||
|
||||
Підтримується: `telegram`, `whatsapp`, `discord`, `slack`, `signal`, `imessage`, `msteams`.
|
||||
|
||||
#### Режим self-chat
|
||||
#### Режим самочату
|
||||
|
||||
Додайте власний номер до `allowFrom`, щоб увімкнути режим self-chat (ігнорує нативні @-згадки, відповідає лише на текстові шаблони):
|
||||
Додайте власний номер у `allowFrom`, щоб увімкнути режим самочату (ігнорує нативні @-згадки, відповідає лише на текстові шаблони):
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -870,34 +875,34 @@ IRC працює на базі Plugin і налаштовується в `channe
|
||||
}
|
||||
```
|
||||
|
||||
<Accordion title="Відомості про команди">
|
||||
<Accordion title="Command details">
|
||||
|
||||
- Цей блок налаштовує поверхні команд. Поточний вбудований і комплектний каталог команд див. у [Slash Commands](/uk/tools/slash-commands).
|
||||
- Ця сторінка є **довідником ключів конфігурації**, а не повним каталогом команд. Команди, що належать каналам/Plugin, як-от QQ Bot `/bot-ping` `/bot-help` `/bot-logs`, LINE `/card`, device-pair `/pair`, memory `/dreaming`, phone-control `/phone` і Talk `/voice`, задокументовані на сторінках відповідних каналів/Plugin, а також у [Slash Commands](/uk/tools/slash-commands).
|
||||
- Ця сторінка є **довідником ключів конфігурації**, а не повним каталогом команд. Команди, що належать каналам/Plugin, як-от QQ Bot `/bot-ping` `/bot-help` `/bot-logs`, LINE `/card`, device-pair `/pair`, memory `/dreaming`, phone-control `/phone` і Talk `/voice`, задокументовано на сторінках відповідних каналів/Plugin, а також у [Slash Commands](/uk/tools/slash-commands).
|
||||
- Текстові команди мають бути **окремими** повідомленнями з початковим `/`.
|
||||
- `native: "auto"` вмикає нативні команди для Discord/Telegram, залишає Slack вимкненим.
|
||||
- `nativeSkills: "auto"` вмикає нативні команди Skills для Discord/Telegram, залишає Slack вимкненим.
|
||||
- Перевизначення для окремого каналу: `channels.discord.commands.native` (логічне значення або `"auto"`). `false` очищає раніше зареєстровані команди.
|
||||
- `native: "auto"` вмикає нативні команди для Discord/Telegram і залишає Slack вимкненим.
|
||||
- `nativeSkills: "auto"` вмикає нативні команди Skills для Discord/Telegram і залишає Slack вимкненим.
|
||||
- Перевизначення для окремого каналу: `channels.discord.commands.native` (bool або `"auto"`). `false` очищає раніше зареєстровані команди.
|
||||
- Перевизначайте реєстрацію нативних Skills для окремого каналу за допомогою `channels.<provider>.commands.nativeSkills`.
|
||||
- `channels.telegram.customCommands` додає додаткові пункти меню бота Telegram.
|
||||
- `bash: true` вмикає `! <cmd>` для оболонки хоста. Потрібні `tools.elevated.enabled` і відправник у `tools.elevated.allowFrom.<channel>`.
|
||||
- `config: true` вмикає `/config` (читає/записує `openclaw.json`). Для клієнтів Gateway `chat.send` постійні записи `/config set|unset` також потребують `operator.admin`; `/config show` лише для читання залишається доступним звичайним клієнтам оператора з областю запису.
|
||||
- `mcp: true` вмикає `/mcp` для конфігурації MCP-сервера, керованого OpenClaw, у `mcp.servers`.
|
||||
- `plugins: true` вмикає `/plugins` для виявлення, встановлення й керування ввімкненням/вимкненням Plugin.
|
||||
- `channels.<provider>.configWrites` обмежує мутації конфігурації для окремого каналу (за замовчуванням: true).
|
||||
- Для багаторахункових каналів `channels.<provider>.accounts.<id>.configWrites` також обмежує записи, що націлені на цей обліковий запис (наприклад, `/allowlist --config --account <id>` або `/config set channels.<provider>.accounts.<id>...`).
|
||||
- `restart: false` вимикає `/restart` і дії інструмента перезапуску Gateway. За замовчуванням: `true`.
|
||||
- `ownerAllowFrom` — це явний список дозволених власників для команд/інструментів лише для власника. Він окремий від `allowFrom`.
|
||||
- `ownerDisplay: "hash"` хешує ідентифікатори власників у системному промпті. Задайте `ownerDisplaySecret`, щоб керувати хешуванням.
|
||||
- `allowFrom` задається для кожного провайдера. Якщо встановлено, це **єдине** джерело авторизації (списки дозволених каналів/сполучення та `useAccessGroups` ігноруються).
|
||||
- `useAccessGroups: false` дає командам змогу обходити політики груп доступу, коли `allowFrom` не задано.
|
||||
- `channels.telegram.customCommands` додає додаткові пункти меню Telegram-бота.
|
||||
- `bash: true` вмикає `! <cmd>` для оболонки хоста. Потребує `tools.elevated.enabled` і відправника в `tools.elevated.allowFrom.<channel>`.
|
||||
- `config: true` вмикає `/config` (читає/записує `openclaw.json`). Для клієнтів Gateway `chat.send` постійні записи `/config set|unset` також потребують `operator.admin`; доступний лише для читання `/config show` залишається доступним звичайним операторським клієнтам із правом запису.
|
||||
- `mcp: true` вмикає `/mcp` для конфігурації керованого OpenClaw сервера MCP у `mcp.servers`.
|
||||
- `plugins: true` вмикає `/plugins` для пошуку Plugin, встановлення та елементів керування ввімкненням/вимкненням.
|
||||
- `channels.<provider>.configWrites` обмежує зміни конфігурації для окремого каналу (типово: true).
|
||||
- Для каналів із кількома обліковими записами `channels.<provider>.accounts.<id>.configWrites` також обмежує записи, спрямовані на цей обліковий запис (наприклад, `/allowlist --config --account <id>` або `/config set channels.<provider>.accounts.<id>...`).
|
||||
- `restart: false` вимикає `/restart` і дії інструмента перезапуску Gateway. Типово: `true`.
|
||||
- `ownerAllowFrom` — це явний список дозволених власників для команд/інструментів, доступних лише власнику. Він окремий від `allowFrom`.
|
||||
- `ownerDisplay: "hash"` хешує ідентифікатори власників у системному промпті. Установіть `ownerDisplaySecret`, щоб керувати хешуванням.
|
||||
- `allowFrom` задається для кожного провайдера. Коли його задано, він є **єдиним** джерелом авторизації (списки дозволених каналів/сполучення та `useAccessGroups` ігноруються).
|
||||
- `useAccessGroups: false` дозволяє командам обходити політики груп доступу, коли `allowFrom` не задано.
|
||||
- Мапа документації команд:
|
||||
- вбудований і комплектний каталог: [Slash Commands](/uk/tools/slash-commands)
|
||||
- поверхні команд для окремих каналів: [Channels](/uk/channels)
|
||||
- поверхні команд, специфічні для каналів: [Channels](/uk/channels)
|
||||
- команди QQ Bot: [QQ Bot](/uk/channels/qqbot)
|
||||
- команди сполучення: [Pairing](/uk/channels/pairing)
|
||||
- команда картки LINE: [LINE](/uk/channels/line)
|
||||
- dreaming пам’яті: [Dreaming](/uk/concepts/dreaming)
|
||||
- memory dreaming: [Dreaming](/uk/concepts/dreaming)
|
||||
|
||||
</Accordion>
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user