chore(i18n): refresh uk translations
This commit is contained in:
parent
ca25863a28
commit
8937382ae6
@ -1,13 +1,13 @@
|
||||
---
|
||||
read_when:
|
||||
- Зміна поведінки групового чату або керування згадками
|
||||
- Зміна поведінки групового чату або обмеження за згадками
|
||||
summary: Поведінка групового чату на різних поверхнях (Discord/iMessage/Matrix/Microsoft Teams/Signal/Slack/Telegram/WhatsApp/Zalo)
|
||||
title: Групи
|
||||
x-i18n:
|
||||
generated_at: "2026-04-21T23:42:05Z"
|
||||
generated_at: "2026-04-23T17:19:21Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: a86e202c7e990e040eb092aaef46bc856ee8d39b2e5fe1c733e24f1b35faa824
|
||||
source_hash: 17f61407e916114e75b43ed781c43d9291b9ea5758ae4a7cd27407a0c994d375
|
||||
source_path: channels/groups.md
|
||||
workflow: 15
|
||||
---
|
||||
@ -19,20 +19,20 @@ OpenClaw узгоджено обробляє групові чати на різ
|
||||
## Вступ для початківців (2 хвилини)
|
||||
|
||||
OpenClaw «живе» у ваших власних облікових записах месенджерів. Окремого користувача-бота WhatsApp немає.
|
||||
Якщо **ви** перебуваєте в групі, OpenClaw може бачити цю групу й відповідати там.
|
||||
Якщо **ви** є в групі, OpenClaw може бачити цю групу й відповідати там.
|
||||
|
||||
Поведінка за замовчуванням:
|
||||
|
||||
- Групи обмежені (`groupPolicy: "allowlist"`).
|
||||
- Для відповідей потрібна згадка, якщо ви явно не вимкнули керування згадками.
|
||||
- Для відповідей потрібна згадка, якщо ви явно не вимкнули обмеження за згадками.
|
||||
|
||||
Переклад простою мовою: відправники з allowlist можуть активувати OpenClaw, згадавши його.
|
||||
Простіше кажучи: відправники зі списку дозволених можуть активувати OpenClaw, згадавши його.
|
||||
|
||||
> TL;DR
|
||||
> Коротко
|
||||
>
|
||||
> - **Доступ до DM** контролюється через `*.allowFrom`.
|
||||
> - **Доступ до груп** контролюється через `*.groupPolicy` + allowlist-и (`*.groups`, `*.groupAllowFrom`).
|
||||
> - **Запуск відповіді** контролюється через керування згадками (`requireMention`, `/activation`).
|
||||
> - Доступ до **DM** контролюється через `*.allowFrom`.
|
||||
> - Доступ до **груп** контролюється через `*.groupPolicy` + списки дозволених (`*.groups`, `*.groupAllowFrom`).
|
||||
> - **Запуск відповіді** контролюється через обмеження за згадками (`requireMention`, `/activation`).
|
||||
|
||||
Швидка схема (що відбувається з повідомленням у групі):
|
||||
|
||||
@ -43,43 +43,43 @@ requireMention? yes -> mentioned? no -> store for context only
|
||||
otherwise -> reply
|
||||
```
|
||||
|
||||
## Видимість контексту та allowlist-и
|
||||
## Видимість контексту та списки дозволених
|
||||
|
||||
У безпеці груп беруть участь два різні механізми контролю:
|
||||
У безпеці груп беруть участь два різні механізми:
|
||||
|
||||
- **Авторизація запуску**: хто може активувати агента (`groupPolicy`, `groups`, `groupAllowFrom`, allowlist-и, специфічні для каналу).
|
||||
- **Авторизація запуску**: хто може активувати агента (`groupPolicy`, `groups`, `groupAllowFrom`, списки дозволених, специфічні для каналу).
|
||||
- **Видимість контексту**: який додатковий контекст передається в модель (текст відповіді, цитати, історія треду, метадані пересилання).
|
||||
|
||||
За замовчуванням OpenClaw надає пріоритет звичайній поведінці чату й переважно зберігає контекст у тому вигляді, у якому він надійшов. Це означає, що allowlist-и насамперед визначають, хто може запускати дії, а не є універсальною межею редагування для кожного процитованого чи історичного фрагмента.
|
||||
За замовчуванням OpenClaw віддає пріоритет звичній поведінці чату й переважно зберігає контекст у тому вигляді, у якому його отримано. Це означає, що списки дозволених насамперед визначають, хто може запускати дії, а не є універсальною межею редагування для кожного процитованого чи історичного фрагмента.
|
||||
|
||||
Поточна поведінка залежить від каналу:
|
||||
|
||||
- У деяких каналах уже застосовується фільтрація за відправником для додаткового контексту в окремих шляхах (наприклад, ініціалізація тредів Slack, пошук відповідей/тредів у Matrix).
|
||||
- У деяких каналах уже застосовується фільтрація додаткового контексту за відправником у певних шляхах (наприклад, початкове наповнення тредів у Slack, пошук відповідей/тредів у Matrix).
|
||||
- Інші канали все ще передають контекст цитат/відповідей/пересилань у тому вигляді, у якому його отримано.
|
||||
|
||||
Напрямок посилення захисту (заплановано):
|
||||
Напрям посилення безпеки (заплановано):
|
||||
|
||||
- `contextVisibility: "all"` (за замовчуванням) зберігає поточну поведінку «як отримано».
|
||||
- `contextVisibility: "allowlist"` фільтрує додатковий контекст до відправників з allowlist.
|
||||
- `contextVisibility: "all"` (типово) зберігає поточну поведінку «як отримано».
|
||||
- `contextVisibility: "allowlist"` фільтрує додатковий контекст до відправників зі списку дозволених.
|
||||
- `contextVisibility: "allowlist_quote"` — це `allowlist` плюс один явний виняток для цитати/відповіді.
|
||||
|
||||
Поки цю модель посилення захисту не реалізовано узгоджено в усіх каналах, очікуйте відмінностей залежно від поверхні.
|
||||
Доки цю модель посилення безпеки не буде узгоджено впроваджено в усіх каналах, очікуйте відмінностей залежно від поверхні.
|
||||
|
||||

|
||||
|
||||
Якщо ви хочете...
|
||||
Якщо вам потрібно...
|
||||
|
||||
| Ціль | Що встановити |
|
||||
| Мета | Що налаштувати |
|
||||
| -------------------------------------------- | ---------------------------------------------------------- |
|
||||
| Дозволити всі групи, але відповідати лише на @mentions | `groups: { "*": { requireMention: true } }` |
|
||||
| Вимкнути всі групові відповіді | `groupPolicy: "disabled"` |
|
||||
| Дозволити всі групи, але відповідати лише на @згадки | `groups: { "*": { requireMention: true } }` |
|
||||
| Вимкнути всі відповіді в групах | `groupPolicy: "disabled"` |
|
||||
| Лише певні групи | `groups: { "<group-id>": { ... } }` (без ключа `"*"`) |
|
||||
| Лише ви можете активувати відповіді в групах | `groupPolicy: "allowlist"`, `groupAllowFrom: ["+1555..."]` |
|
||||
| Лише ви можете запускати в групах | `groupPolicy: "allowlist"`, `groupAllowFrom: ["+1555..."]` |
|
||||
|
||||
## Ключі сесій
|
||||
|
||||
- Групові сесії використовують ключі сесій `agent:<agentId>:<channel>:group:<id>` (кімнати/канали використовують `agent:<agentId>:<channel>:channel:<id>`).
|
||||
- Теми форуму Telegram додають `:topic:<threadId>` до ідентифікатора групи, тому кожна тема має власну сесію.
|
||||
- Теми форумів Telegram додають `:topic:<threadId>` до ідентифікатора групи, тому кожна тема має власну сесію.
|
||||
- Прямі чати використовують основну сесію (або окрему для кожного відправника, якщо це налаштовано).
|
||||
- Heartbeat пропускаються для групових сесій.
|
||||
|
||||
@ -87,26 +87,26 @@ otherwise -> reply
|
||||
|
||||
## Шаблон: особисті DM + публічні групи (один агент)
|
||||
|
||||
Так — це добре працює, якщо ваш «особистий» трафік — це **DM**, а ваш «публічний» трафік — це **групи**.
|
||||
Так — це добре працює, якщо ваш «особистий» трафік — це **DM**, а «публічний» трафік — це **групи**.
|
||||
|
||||
Чому: у режимі одного агента DM зазвичай потрапляють до **основного** ключа сесії (`agent:main:main`), тоді як групи завжди використовують **неосновні** ключі сесії (`agent:main:<channel>:group:<id>`). Якщо ввімкнути ізоляцію через `mode: "non-main"`, ці групові сесії працюватимуть у налаштованому backend ізоляції, а ваша основна DM-сесія залишиться на хості. Якщо ви не виберете backend явно, за замовчуванням використовується Docker.
|
||||
Чому: у режимі одного агента DM зазвичай потрапляють в **основний** ключ сесії (`agent:main:main`), тоді як групи завжди використовують **неосновні** ключі сесії (`agent:main:<channel>:group:<id>`). Якщо ви ввімкнете ізоляцію через `mode: "non-main"`, ці групові сесії виконуватимуться в налаштованому backend ізоляції, тоді як ваша основна DM-сесія залишатиметься на хості. Якщо ви не виберете backend, типовим буде Docker.
|
||||
|
||||
Це дає вам один «розум» агента (спільний робочий простір + пам’ять), але дві моделі виконання:
|
||||
Це дає вам один «розум» агента (спільний workspace + memory), але дві різні моделі виконання:
|
||||
|
||||
- **DM**: повні інструменти (хост)
|
||||
- **Групи**: ізольоване середовище + обмежені інструменти
|
||||
- **Групи**: ізоляція + обмежені інструменти
|
||||
|
||||
> Якщо вам потрібні справді окремі робочі простори/персони («особисте» і «публічне» ніколи не мають змішуватися), використовуйте другого агента + bindings. Див. [Маршрутизація кількох агентів](/uk/concepts/multi-agent).
|
||||
> Якщо вам потрібні справді окремі workspace/персони («особисте» і «публічне» ніколи не мають змішуватися), використовуйте другого агента + bindings. Див. [Маршрутизація між кількома агентами](/uk/concepts/multi-agent).
|
||||
|
||||
Приклад (DM на хості, групи в sandbox + лише інструменти для обміну повідомленнями):
|
||||
Приклад (DM на хості, групи в ізоляції + лише інструменти для повідомлень):
|
||||
|
||||
```json5
|
||||
{
|
||||
agents: {
|
||||
defaults: {
|
||||
sandbox: {
|
||||
mode: "non-main", // groups/channels are non-main -> sandboxed
|
||||
scope: "session", // strongest isolation (one container per group/channel)
|
||||
mode: "non-main", // групи/канали є non-main -> ізольовані
|
||||
scope: "session", // найсильніша ізоляція (один контейнер на групу/канал)
|
||||
workspaceAccess: "none",
|
||||
},
|
||||
},
|
||||
@ -114,7 +114,7 @@ otherwise -> reply
|
||||
tools: {
|
||||
sandbox: {
|
||||
tools: {
|
||||
// If allow is non-empty, everything else is blocked (deny still wins).
|
||||
// Якщо allow не порожній, усе інше блокується (deny усе одно має пріоритет).
|
||||
allow: ["group:messaging", "group:sessions"],
|
||||
deny: ["group:runtime", "group:fs", "group:ui", "nodes", "cron", "gateway"],
|
||||
},
|
||||
@ -123,7 +123,7 @@ otherwise -> reply
|
||||
}
|
||||
```
|
||||
|
||||
Хочете, щоб «групи бачили лише теку X» замість «жодного доступу до хоста»? Залиште `workspaceAccess: "none"` і змонтуйте в sandbox лише шляхи з allowlist:
|
||||
Хочете, щоб «групи могли бачити лише папку X» замість «без доступу до хоста»? Залиште `workspaceAccess: "none"` і змонтуйте в ізоляцію лише шляхи зі списку дозволених:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -145,18 +145,18 @@ otherwise -> reply
|
||||
}
|
||||
```
|
||||
|
||||
Пов’язано:
|
||||
Пов’язане:
|
||||
|
||||
- Ключі конфігурації та значення за замовчуванням: [Конфігурація Gateway](/uk/gateway/configuration-reference#agentsdefaultssandbox)
|
||||
- Налагодження причин блокування інструмента: [Sandbox vs Tool Policy vs Elevated](/uk/gateway/sandbox-vs-tool-policy-vs-elevated)
|
||||
- Докладніше про bind mounts: [Ізоляція](/uk/gateway/sandboxing#custom-bind-mounts)
|
||||
- Налагодження, чому інструмент заблоковано: [Sandbox vs Tool Policy vs Elevated](/uk/gateway/sandbox-vs-tool-policy-vs-elevated)
|
||||
- Подробиці про bind mounts: [Ізоляція](/uk/gateway/sandboxing#custom-bind-mounts)
|
||||
|
||||
## Мітки відображення
|
||||
|
||||
- Мітки інтерфейсу використовують `displayName`, коли воно доступне, у форматі `<channel>:<token>`.
|
||||
- Мітки інтерфейсу використовують `displayName`, коли він доступний, у форматі `<channel>:<token>`.
|
||||
- `#room` зарезервовано для кімнат/каналів; групові чати використовують `g-<slug>` (нижній регістр, пробіли -> `-`, зберігати `#@+._-`).
|
||||
|
||||
## Політика груп
|
||||
## Групова політика
|
||||
|
||||
Керує тим, як обробляються повідомлення груп/кімнат для кожного каналу:
|
||||
|
||||
@ -169,7 +169,7 @@ otherwise -> reply
|
||||
},
|
||||
telegram: {
|
||||
groupPolicy: "disabled",
|
||||
groupAllowFrom: ["123456789"], // numeric Telegram user id (wizard can resolve @username)
|
||||
groupAllowFrom: ["123456789"], // числовий Telegram user id (wizard може визначити з @username)
|
||||
},
|
||||
signal: {
|
||||
groupPolicy: "disabled",
|
||||
@ -205,38 +205,38 @@ otherwise -> reply
|
||||
}
|
||||
```
|
||||
|
||||
| Policy | Поведінка |
|
||||
| ------------- | ------------------------------------------------------------ |
|
||||
| `"open"` | Групи оминають allowlist-и; керування згадками все одно застосовується. |
|
||||
| `"disabled"` | Повністю блокує всі групові повідомлення. |
|
||||
| `"allowlist"` | Дозволяє лише групи/кімнати, які відповідають налаштованому allowlist. |
|
||||
| Політика | Поведінка |
|
||||
| ------------ | ------------------------------------------------------------ |
|
||||
| `"open"` | Групи оминають списки дозволених; обмеження за згадками все одно діє. |
|
||||
| `"disabled"` | Повністю блокувати всі групові повідомлення. |
|
||||
| `"allowlist"` | Дозволяти лише групи/кімнати, які відповідають налаштованому списку дозволених. |
|
||||
|
||||
Примітки:
|
||||
|
||||
- `groupPolicy` відокремлена від керування згадками (яке вимагає @mentions).
|
||||
- `groupPolicy` відокремлено від обмеження за згадками (яке вимагає @згадок).
|
||||
- WhatsApp/Telegram/Signal/iMessage/Microsoft Teams/Zalo: використовуйте `groupAllowFrom` (резервний варіант: явний `allowFrom`).
|
||||
- Схвалення парування для DM (записи сховища `*-allowFrom`) застосовуються лише до доступу DM; авторизація відправників у групах залишається явно прив’язаною до allowlist-ів груп.
|
||||
- Discord: allowlist використовує `channels.discord.guilds.<id>.channels`.
|
||||
- Slack: allowlist використовує `channels.slack.channels`.
|
||||
- Matrix: allowlist використовує `channels.matrix.groups`. Надавайте перевагу ID кімнат або псевдонімам; пошук імен підключених кімнат виконується в режимі best-effort, а нерозв’язані імена ігноруються під час виконання. Використовуйте `channels.matrix.groupAllowFrom`, щоб обмежити відправників; також підтримуються allowlist-и `users` для окремих кімнат.
|
||||
- Групові DM контролюються окремо (`channels.discord.dm.*`, `channels.slack.dm.*`).
|
||||
- Telegram allowlist може збігатися з ID користувачів (`"123456789"`, `"telegram:123456789"`, `"tg:123456789"`) або іменами користувачів (`"@alice"` або `"alice"`); префікси нечутливі до регістру.
|
||||
- Значення за замовчуванням — `groupPolicy: "allowlist"`; якщо ваш allowlist груп порожній, групові повідомлення блокуються.
|
||||
- Безпека під час виконання: коли блок постачальника повністю відсутній (`channels.<provider>` відсутній), політика груп переходить у fail-closed режим (зазвичай `allowlist`) замість успадкування `channels.defaults.groupPolicy`.
|
||||
- Погодження парування для DM (записи в сховищі `*-allowFrom`) застосовуються лише до доступу в DM; авторизація відправників у групах залишається явно прив’язаною до групових списків дозволених.
|
||||
- Discord: список дозволених використовує `channels.discord.guilds.<id>.channels`.
|
||||
- Slack: список дозволених використовує `channels.slack.channels`.
|
||||
- Matrix: список дозволених використовує `channels.matrix.groups`. Віддавайте перевагу room ID або alias; пошук імені приєднаної кімнати виконується best-effort, а нерозв’язані імена ігноруються під час виконання. Використовуйте `channels.matrix.groupAllowFrom`, щоб обмежити відправників; також підтримуються списки дозволених `users` для окремих кімнат.
|
||||
- Групові DM керуються окремо (`channels.discord.dm.*`, `channels.slack.dm.*`).
|
||||
- Список дозволених Telegram може збігатися з user ID (`"123456789"`, `"telegram:123456789"`, `"tg:123456789"`) або іменами користувачів (`"@alice"` чи `"alice"`); префікси нечутливі до регістру.
|
||||
- Типове значення — `groupPolicy: "allowlist"`; якщо ваш груповий список дозволених порожній, групові повідомлення блокуються.
|
||||
- Безпека під час виконання: коли блок провайдера повністю відсутній (`channels.<provider>` відсутній), групова політика переходить у fail-closed режим (зазвичай `allowlist`) замість успадкування `channels.defaults.groupPolicy`.
|
||||
|
||||
Швидка ментальна модель (порядок перевірки для групових повідомлень):
|
||||
|
||||
1. `groupPolicy` (open/disabled/allowlist)
|
||||
2. allowlist-и груп (`*.groups`, `*.groupAllowFrom`, allowlist, специфічний для каналу)
|
||||
3. керування згадками (`requireMention`, `/activation`)
|
||||
2. групові списки дозволених (`*.groups`, `*.groupAllowFrom`, список дозволених, специфічний для каналу)
|
||||
3. обмеження за згадками (`requireMention`, `/activation`)
|
||||
|
||||
## Керування згадками (за замовчуванням)
|
||||
## Обмеження за згадками (типово)
|
||||
|
||||
Для групових повідомлень потрібна згадка, якщо це не перевизначено для конкретної групи. Значення за замовчуванням задаються для кожної підсистеми в `*.groups."*"`.
|
||||
|
||||
Відповідь на повідомлення бота вважається неявною згадкою, коли канал
|
||||
підтримує метадані відповіді. Цитування повідомлення бота також може вважатися
|
||||
неявною згадкою в каналах, які надають метадані цитати. Поточні вбудовані випадки включають
|
||||
Відповідь на повідомлення бота вважається неявною згадкою, якщо канал
|
||||
підтримує метадані відповіді. Цитування повідомлення бота також може
|
||||
вважатися неявною згадкою в каналах, які надають метадані цитування. Поточні вбудовані випадки включають
|
||||
Telegram, WhatsApp, Slack, Discord, Microsoft Teams і ZaloUser.
|
||||
|
||||
```json5
|
||||
@ -277,29 +277,29 @@ Telegram, WhatsApp, Slack, Discord, Microsoft Teams і ZaloUser.
|
||||
|
||||
Примітки:
|
||||
|
||||
- `mentionPatterns` — це безпечні regex-шаблони, нечутливі до регістру; некоректні шаблони та небезпечні форми з вкладеними повтореннями ігноруються.
|
||||
- Поверхні, які надають явні згадки, все одно їх передають; шаблони — це резервний механізм.
|
||||
- Перевизначення на рівні агента: `agents.list[].groupChat.mentionPatterns` (корисно, коли кілька агентів використовують одну групу).
|
||||
- Керування згадками застосовується лише тоді, коли виявлення згадок можливе (налаштовані нативні згадки або `mentionPatterns`).
|
||||
- Значення за замовчуванням для Discord містяться в `channels.discord.guilds."*"` (можна перевизначати для кожного guild/channel).
|
||||
- Контекст історії груп рівномірно загортається в усіх каналах і є **лише pending** (повідомлення, пропущені через керування згадками); використовуйте `messages.groupChat.historyLimit` для глобального значення за замовчуванням і `channels.<channel>.historyLimit` (або `channels.<channel>.accounts.*.historyLimit`) для перевизначень. Встановіть `0`, щоб вимкнути.
|
||||
- `mentionPatterns` — це безпечні regex-шаблони, нечутливі до регістру; невалідні шаблони та небезпечні форми з вкладеними повтореннями ігноруються.
|
||||
- Поверхні, що надають явні згадки, усе одно пропускаються; шаблони є резервним варіантом.
|
||||
- Перевизначення на рівні агента: `agents.list[].groupChat.mentionPatterns` (корисно, коли кілька агентів працюють у спільній групі).
|
||||
- Обмеження за згадками застосовується лише тоді, коли виявлення згадок можливе (є нативні згадки або налаштовано `mentionPatterns`).
|
||||
- Значення за замовчуванням для Discord містяться в `channels.discord.guilds."*"` (можна перевизначати для окремого guild/channel).
|
||||
- Контекст історії груп загортається однаково в усіх каналах і є **лише pending-only** (повідомлення, пропущені через обмеження за згадками); використовуйте `messages.groupChat.historyLimit` для глобального значення за замовчуванням і `channels.<channel>.historyLimit` (або `channels.<channel>.accounts.*.historyLimit`) для перевизначень. Установіть `0`, щоб вимкнути.
|
||||
|
||||
## Обмеження інструментів для груп/каналів (необов’язково)
|
||||
|
||||
Деякі конфігурації каналів підтримують обмеження на те, які інструменти доступні **в межах конкретної групи/кімнати/каналу**.
|
||||
Деякі конфігурації каналів підтримують обмеження того, які інструменти доступні **всередині конкретної групи/кімнати/каналу**.
|
||||
|
||||
- `tools`: дозволити/заборонити інструменти для всієї групи.
|
||||
- `toolsBySender`: перевизначення для окремих відправників у межах групи.
|
||||
- `toolsBySender`: перевизначення для окремих відправників усередині групи.
|
||||
Використовуйте явні префікси ключів:
|
||||
`id:<senderId>`, `e164:<phone>`, `username:<handle>`, `name:<displayName>` і wildcard `"*"`.
|
||||
Старі ключі без префікса все ще приймаються та зіставляються лише як `id:`.
|
||||
`id:<senderId>`, `e164:<phone>`, `username:<handle>`, `name:<displayName>` і шаблон `"*"`.
|
||||
Історичні ключі без префікса все ще приймаються і зіставляються лише як `id:`.
|
||||
|
||||
Порядок визначення (найбільш специфічний має пріоритет):
|
||||
Порядок визначення (найбільш специфічне має пріоритет):
|
||||
|
||||
1. збіг `toolsBySender` для групи/каналу
|
||||
2. `tools` для групи/каналу
|
||||
3. збіг `toolsBySender` за замовчуванням (`"*"`)
|
||||
4. `tools` за замовчуванням (`"*"`)
|
||||
3. збіг типового (`"*"`) `toolsBySender`
|
||||
4. типове (`"*"`) `tools`
|
||||
|
||||
Приклад (Telegram):
|
||||
|
||||
@ -323,19 +323,19 @@ Telegram, WhatsApp, Slack, Discord, Microsoft Teams і ZaloUser.
|
||||
|
||||
Примітки:
|
||||
|
||||
- Обмеження інструментів для груп/каналів застосовуються додатково до глобальної/агентської політики інструментів (заборона все одно має пріоритет).
|
||||
- Обмеження інструментів для груп/каналів застосовуються додатково до глобальної/агентської політики інструментів (deny усе одно має пріоритет).
|
||||
- Деякі канали використовують іншу вкладеність для кімнат/каналів (наприклад, Discord `guilds.*.channels.*`, Slack `channels.*`, Microsoft Teams `teams.*.channels.*`).
|
||||
|
||||
## Allowlist-и груп
|
||||
## Списки дозволених для груп
|
||||
|
||||
Коли налаштовано `channels.whatsapp.groups`, `channels.telegram.groups` або `channels.imessage.groups`, ключі діють як allowlist груп. Використовуйте `"*"` щоб дозволити всі групи, водночас задавши поведінку згадок за замовчуванням.
|
||||
Коли налаштовано `channels.whatsapp.groups`, `channels.telegram.groups` або `channels.imessage.groups`, ключі діють як список дозволених для груп. Використовуйте `"*"` , щоб дозволити всі групи й водночас задати типову поведінку для згадок.
|
||||
|
||||
Поширена плутанина: схвалення парування DM — це не те саме, що авторизація груп.
|
||||
Для каналів, які підтримують парування DM, сховище парування відкриває лише DM. Групові команди все одно потребують явної авторизації відправника групи з конфігураційних allowlist-ів, таких як `groupAllowFrom`, або задокументованого резервного варіанта конфігурації для цього каналу.
|
||||
Поширена плутанина: погодження парування DM — це не те саме, що авторизація груп.
|
||||
Для каналів, які підтримують парування DM, сховище парування відкриває доступ лише до DM. Команди в групах усе одно потребують явної авторизації відправника групи через списки дозволених у конфігурації, як-от `groupAllowFrom`, або задокументований резервний варіант конфігурації для цього каналу.
|
||||
|
||||
Типові наміри (скопіювати/вставити):
|
||||
Типові наміри (копіюйте й вставляйте):
|
||||
|
||||
1. Вимкнути всі групові відповіді
|
||||
1. Вимкнути всі відповіді в групах
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -343,7 +343,7 @@ Telegram, WhatsApp, Slack, Discord, Microsoft Teams і ZaloUser.
|
||||
}
|
||||
```
|
||||
|
||||
2. Дозволити лише конкретні групи (WhatsApp)
|
||||
2. Дозволити лише певні групи (WhatsApp)
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -370,7 +370,7 @@ Telegram, WhatsApp, Slack, Discord, Microsoft Teams і ZaloUser.
|
||||
}
|
||||
```
|
||||
|
||||
4. Лише власник може активувати відповіді в групах (WhatsApp)
|
||||
4. Лише власник може запускати дії в групах (WhatsApp)
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -391,34 +391,34 @@ Telegram, WhatsApp, Slack, Discord, Microsoft Teams і ZaloUser.
|
||||
- `/activation mention`
|
||||
- `/activation always`
|
||||
|
||||
Власник визначається через `channels.whatsapp.allowFrom` (або власний E.164 бота, якщо не задано). Надсилайте команду як окреме повідомлення. Інші поверхні наразі ігнорують `/activation`.
|
||||
Власник визначається через `channels.whatsapp.allowFrom` (або через власний E.164 бота, якщо не задано). Надсилайте команду як окреме повідомлення. Інші поверхні наразі ігнорують `/activation`.
|
||||
|
||||
## Поля контексту
|
||||
|
||||
Вхідні payload-и груп встановлюють:
|
||||
Вхідні дані груп встановлюють:
|
||||
|
||||
- `ChatType=group`
|
||||
- `GroupSubject` (якщо відомо)
|
||||
- `GroupMembers` (якщо відомо)
|
||||
- `WasMentioned` (результат керування згадками)
|
||||
- Теми форумів Telegram також містять `MessageThreadId` і `IsForum`.
|
||||
- `WasMentioned` (результат обмеження за згадками)
|
||||
- Теми форумів Telegram також включають `MessageThreadId` і `IsForum`.
|
||||
|
||||
Примітки для конкретних каналів:
|
||||
|
||||
- BlueBubbles може за бажанням збагачувати неназваних учасників груп macOS з локальної бази Contacts перед заповненням `GroupMembers`. Це вимкнено за замовчуванням і виконується лише після проходження звичайних перевірок груп.
|
||||
- BlueBubbles може за бажанням збагачувати учасників без імен у групах macOS із локальної бази даних Контактів перед заповненням `GroupMembers`. Це вимкнено за замовчуванням і запускається лише після успішного проходження звичайних перевірок груп.
|
||||
|
||||
Системний prompt агента містить вступ для групи на першому ході нової групової сесії. Він нагадує моделі відповідати як людині, уникати Markdown-таблиць, мінімізувати порожні рядки, дотримуватися звичайних інтервалів чату й не друкувати буквальні послідовності `\n`.
|
||||
Системний prompt агента включає вступ для групи на першому ході нової групової сесії. Він нагадує моделі відповідати як людині, уникати Markdown-таблиць, мінімізувати порожні рядки, дотримуватися звичайних інтервалів у чаті й не вводити буквально послідовності `\n`. Назви груп і мітки учасників, отримані з каналу, відображаються як огороджені недовірені метадані, а не як вбудовані системні інструкції.
|
||||
|
||||
## Особливості iMessage
|
||||
|
||||
- Для маршрутизації або allowlist-ів надавайте перевагу `chat_id:<id>`.
|
||||
- Переглянути чати: `imsg chats --limit 20`.
|
||||
- Відповіді в групі завжди повертаються до того самого `chat_id`.
|
||||
- Віддавайте перевагу `chat_id:<id>` для маршрутизації або списків дозволених.
|
||||
- Список чатів: `imsg chats --limit 20`.
|
||||
- Відповіді в групах завжди повертаються до того самого `chat_id`.
|
||||
|
||||
## Системні prompt-и WhatsApp
|
||||
## Системні prompt для WhatsApp
|
||||
|
||||
Див. [WhatsApp](/uk/channels/whatsapp#system-prompts) для канонічних правил системних prompt-ів WhatsApp, зокрема розв’язання prompt-ів для груп і прямих повідомлень, поведінки wildcard і семантики перевизначення облікового запису.
|
||||
Див. [WhatsApp](/uk/channels/whatsapp#system-prompts) для канонічних правил системних prompt WhatsApp, зокрема для визначення prompt у групах і прямих чатах, поведінки wildcard і семантики перевизначення облікового запису.
|
||||
|
||||
## Особливості WhatsApp
|
||||
|
||||
Див. [Групові повідомлення](/uk/channels/group-messages) для поведінки, специфічної лише для WhatsApp (впровадження історії, деталі обробки згадок).
|
||||
Див. [Групові повідомлення](/uk/channels/group-messages) щодо поведінки лише для WhatsApp (впровадження історії, подробиці обробки згадок).
|
||||
|
||||
@ -4,25 +4,25 @@ read_when:
|
||||
summary: Підтримка каналу WhatsApp, контроль доступу, поведінка доставки та операції
|
||||
title: WhatsApp
|
||||
x-i18n:
|
||||
generated_at: "2026-04-23T06:42:48Z"
|
||||
generated_at: "2026-04-23T17:19:32Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: e14735a33ffb48334b920a5e63645abf3445f56481b1ce8b7c128800e2adc981
|
||||
source_hash: 3fb32e2ca2ced699198d92a2fc15aa5f62806540f197e71a332def0f05dd1d25
|
||||
source_path: channels/whatsapp.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
# WhatsApp (веб-канал)
|
||||
# WhatsApp (вебканал)
|
||||
|
||||
Статус: готовий до production через WhatsApp Web (Baileys). Gateway керує прив’язаними сесіями.
|
||||
Статус: готовий до використання в продакшені через WhatsApp Web (Baileys). Gateway володіє прив’язаними сесіями.
|
||||
|
||||
## Встановлення (за потреби)
|
||||
|
||||
- Onboarding (`openclaw onboard`) і `openclaw channels add --channel whatsapp`
|
||||
запропонують установити Plugin WhatsApp, коли ви вперше виберете його.
|
||||
- `openclaw channels login --channel whatsapp` також пропонує процес встановлення, якщо
|
||||
Plugin ще не встановлено.
|
||||
- Dev channel + git checkout: за замовчуванням використовується локальний шлях до Plugin.
|
||||
- Під час онбордингу (`openclaw onboard`) і `openclaw channels add --channel whatsapp`
|
||||
буде запропоновано встановити plugin WhatsApp, коли ви вперше його виберете.
|
||||
- `openclaw channels login --channel whatsapp` також пропонує встановлення,
|
||||
якщо plugin ще не встановлено.
|
||||
- Канал dev + checkout із git: за замовчуванням використовується локальний шлях до plugin.
|
||||
- Stable/Beta: за замовчуванням використовується npm-пакет `@openclaw/whatsapp`.
|
||||
|
||||
Ручне встановлення також доступне:
|
||||
@ -32,13 +32,13 @@ openclaw plugins install @openclaw/whatsapp
|
||||
```
|
||||
|
||||
<CardGroup cols={3}>
|
||||
<Card title="Pairing" icon="link" href="/uk/channels/pairing">
|
||||
Типова політика DM для невідомих відправників — pairing.
|
||||
<Card title="Прив’язування" icon="link" href="/uk/channels/pairing">
|
||||
Типова політика DM — прив’язування для невідомих відправників.
|
||||
</Card>
|
||||
<Card title="Усунення несправностей каналу" icon="wrench" href="/uk/channels/troubleshooting">
|
||||
Міжканальна діагностика та сценарії відновлення.
|
||||
</Card>
|
||||
<Card title="Налаштування Gateway" icon="settings" href="/uk/gateway/configuration">
|
||||
<Card title="Конфігурація Gateway" icon="settings" href="/uk/gateway/configuration">
|
||||
Повні шаблони та приклади конфігурації каналів.
|
||||
</Card>
|
||||
</CardGroup>
|
||||
@ -77,7 +77,7 @@ openclaw channels login --channel whatsapp --account work
|
||||
|
||||
</Step>
|
||||
|
||||
<Step title="Запустіть gateway">
|
||||
<Step title="Запустіть Gateway">
|
||||
|
||||
```bash
|
||||
openclaw gateway
|
||||
@ -85,31 +85,31 @@ openclaw gateway
|
||||
|
||||
</Step>
|
||||
|
||||
<Step title="Схваліть перший запит на pairing (якщо використовується режим pairing)">
|
||||
<Step title="Підтвердьте перший запит на прив’язування (якщо використовується режим прив’язування)">
|
||||
|
||||
```bash
|
||||
openclaw pairing list whatsapp
|
||||
openclaw pairing approve whatsapp <CODE>
|
||||
```
|
||||
|
||||
Строк дії запитів на pairing спливає через 1 годину. Кількість запитів, що очікують, обмежена до 3 на канал.
|
||||
Термін дії запитів на прив’язування спливає через 1 годину. Кількість запитів у стані очікування обмежена до 3 на канал.
|
||||
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
<Note>
|
||||
OpenClaw рекомендує за можливості запускати WhatsApp на окремому номері. (Метадані каналу та процес налаштування оптимізовані для такого варіанта, але конфігурації з особистим номером також підтримуються.)
|
||||
OpenClaw рекомендує, за можливості, використовувати WhatsApp з окремим номером. (Метадані каналу та сценарій налаштування оптимізовані для такого варіанта, але конфігурації з особистим номером також підтримуються.)
|
||||
</Note>
|
||||
|
||||
## Схеми розгортання
|
||||
## Шаблони розгортання
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Окремий номер (рекомендовано)">
|
||||
Це найзручніший режим з погляду експлуатації:
|
||||
Це найчистіший операційний режим:
|
||||
|
||||
- окремий ідентифікатор WhatsApp для OpenClaw
|
||||
- чіткіші списки дозволів DM і межі маршрутизації
|
||||
- менша ймовірність плутанини із self-chat
|
||||
- зрозуміліші allowlist для DM та межі маршрутизації
|
||||
- менша ймовірність плутанини із самочатом
|
||||
|
||||
Мінімальний шаблон політики:
|
||||
|
||||
@ -126,18 +126,18 @@ OpenClaw рекомендує за можливості запускати Whats
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Резервний варіант з особистим номером">
|
||||
Onboarding підтримує режим особистого номера і записує базову конфігурацію, зручну для self-chat:
|
||||
<Accordion title="Резервний варіант із особистим номером">
|
||||
Онбординг підтримує режим особистого номера та записує базову конфігурацію, дружню до самочату:
|
||||
|
||||
- `dmPolicy: "allowlist"`
|
||||
- `allowFrom` містить ваш особистий номер
|
||||
- `selfChatMode: true`
|
||||
|
||||
Під час виконання захист self-chat спирається на прив’язаний власний номер і `allowFrom`.
|
||||
Під час виконання захисти самочату спираються на прив’язаний власний номер і `allowFrom`.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Область каналу лише для WhatsApp Web">
|
||||
<Accordion title="Обсяг каналу лише для WhatsApp Web">
|
||||
Канал платформи обміну повідомленнями в поточній архітектурі каналів OpenClaw базується на WhatsApp Web (`Baileys`).
|
||||
|
||||
Окремого каналу обміну повідомленнями Twilio WhatsApp у вбудованому реєстрі чат-каналів немає.
|
||||
@ -147,12 +147,12 @@ OpenClaw рекомендує за можливості запускати Whats
|
||||
|
||||
## Модель виконання
|
||||
|
||||
- Gateway керує сокетом WhatsApp і циклом перепідключення.
|
||||
- Для надсилання вихідних повідомлень потрібен активний слухач WhatsApp для цільового облікового запису.
|
||||
- Gateway володіє сокетом WhatsApp і циклом перепідключення.
|
||||
- Для вихідного надсилання потрібен активний слухач WhatsApp для цільового облікового запису.
|
||||
- Чати статусів і розсилок ігноруються (`@status`, `@broadcast`).
|
||||
- Прямі чати використовують правила сесій DM (`session.dmScope`; значення `main` за замовчуванням згортає DM до основної сесії агента).
|
||||
- Прямі чати використовують правила сесій DM (`session.dmScope`; значення за замовчуванням `main` зводить DM до головної сесії агента).
|
||||
- Групові сесії ізольовані (`agent:<agentId>:whatsapp:group:<jid>`).
|
||||
- Транспорт WhatsApp Web враховує стандартні проксі-змінні середовища на хості gateway (`HTTPS_PROXY`, `HTTP_PROXY`, `NO_PROXY` / варіанти в нижньому регістрі). Віддавайте перевагу конфігурації проксі на рівні хоста, а не специфічним налаштуванням проксі WhatsApp для каналу.
|
||||
- Транспорт WhatsApp Web враховує стандартні змінні середовища проксі на хості Gateway (`HTTPS_PROXY`, `HTTP_PROXY`, `NO_PROXY` / варіанти в нижньому регістрі). Надавайте перевагу конфігурації проксі на рівні хоста замість специфічних налаштувань проксі WhatsApp для каналу.
|
||||
|
||||
## Контроль доступу та активація
|
||||
|
||||
@ -160,96 +160,96 @@ OpenClaw рекомендує за можливості запускати Whats
|
||||
<Tab title="Політика DM">
|
||||
`channels.whatsapp.dmPolicy` керує доступом до прямих чатів:
|
||||
|
||||
- `pairing` (типово)
|
||||
- `pairing` (за замовчуванням)
|
||||
- `allowlist`
|
||||
- `open` (вимагає, щоб `allowFrom` містив `"*"`)
|
||||
- `open` (потрібно, щоб `allowFrom` містив `"*"`)
|
||||
- `disabled`
|
||||
|
||||
`allowFrom` приймає номери у форматі E.164 (внутрішньо нормалізуються).
|
||||
`allowFrom` приймає номери у стилі E.164 (внутрішньо нормалізуються).
|
||||
|
||||
Перевизначення для кількох облікових записів: `channels.whatsapp.accounts.<id>.dmPolicy` (і `allowFrom`) мають пріоритет над типовими значеннями на рівні каналу для цього облікового запису.
|
||||
Перевизначення для кількох облікових записів: `channels.whatsapp.accounts.<id>.dmPolicy` (і `allowFrom`) мають пріоритет над значеннями каналу за замовчуванням для цього облікового запису.
|
||||
|
||||
Докладно про поведінку під час виконання:
|
||||
Деталі поведінки під час виконання:
|
||||
|
||||
- pairing-зв’язки зберігаються в allow-store каналу та об’єднуються з налаштованим `allowFrom`
|
||||
- якщо список дозволів не налаштовано, прив’язаний власний номер дозволяється за замовчуванням
|
||||
- вихідні DM `fromMe` ніколи не проходять auto-paired
|
||||
- прив’язування зберігаються в allow-store каналу та об’єднуються з налаштованим `allowFrom`
|
||||
- якщо allowlist не налаштовано, прив’язаний власний номер дозволяється за замовчуванням
|
||||
- вихідні `fromMe` DM ніколи не проходять автоприв’язування
|
||||
|
||||
</Tab>
|
||||
|
||||
<Tab title="Групова політика + списки дозволів">
|
||||
<Tab title="Політика груп + allowlist">
|
||||
Доступ до груп має два рівні:
|
||||
|
||||
1. **Список дозволів членства груп** (`channels.whatsapp.groups`)
|
||||
1. **Allowlist членства в групі** (`channels.whatsapp.groups`)
|
||||
- якщо `groups` пропущено, придатними вважаються всі групи
|
||||
- якщо `groups` присутній, він діє як список дозволів груп (`"*"` дозволено)
|
||||
- якщо `groups` присутній, він працює як group allowlist (`"*"` дозволено)
|
||||
|
||||
2. **Політика відправників у групі** (`channels.whatsapp.groupPolicy` + `groupAllowFrom`)
|
||||
- `open`: список дозволів відправників обходиться
|
||||
2. **Політика відправників групи** (`channels.whatsapp.groupPolicy` + `groupAllowFrom`)
|
||||
- `open`: allowlist відправників обходиться
|
||||
- `allowlist`: відправник має відповідати `groupAllowFrom` (або `*`)
|
||||
- `disabled`: блокувати всі вхідні повідомлення груп
|
||||
- `disabled`: блокувати весь вхідний трафік із груп
|
||||
|
||||
Резервна поведінка списку дозволів відправників:
|
||||
Резервна логіка allowlist відправників:
|
||||
|
||||
- якщо `groupAllowFrom` не задано, під час виконання використовується `allowFrom`, коли він доступний
|
||||
- списки дозволів відправників оцінюються до активації за згадуванням/відповіддю
|
||||
- якщо `groupAllowFrom` не задано, під час виконання використовується резервне значення `allowFrom`, якщо воно доступне
|
||||
- allowlist відправників перевіряються до активації згадкою/відповіддю
|
||||
|
||||
Примітка: якщо блоку `channels.whatsapp` взагалі немає, резервна групова політика під час виконання — `allowlist` (із попередженням у логах), навіть якщо задано `channels.defaults.groupPolicy`.
|
||||
Примітка: якщо блока `channels.whatsapp` немає взагалі, резервна політика груп під час виконання — `allowlist` (із попереджувальним записом у журнал), навіть якщо встановлено `channels.defaults.groupPolicy`.
|
||||
|
||||
</Tab>
|
||||
|
||||
<Tab title="Згадування + /activation">
|
||||
Відповіді в групах за замовчуванням вимагають згадування.
|
||||
<Tab title="Згадки + /activation">
|
||||
За замовчуванням для відповідей у групі потрібна згадка.
|
||||
|
||||
Виявлення згадувань включає:
|
||||
Визначення згадки включає:
|
||||
|
||||
- явні згадування WhatsApp ідентичності бота
|
||||
- налаштовані regex-шаблони згадувань (`agents.list[].groupChat.mentionPatterns`, резервно `messages.groupChat.mentionPatterns`)
|
||||
- неявне виявлення відповіді боту (відправник відповіді відповідає ідентичності бота)
|
||||
- явні згадки WhatsApp ідентичності бота
|
||||
- налаштовані шаблони regex для згадок (`agents.list[].groupChat.mentionPatterns`, резервно `messages.groupChat.mentionPatterns`)
|
||||
- неявне визначення відповіді боту (відправник відповіді збігається з ідентичністю бота)
|
||||
|
||||
Примітка щодо безпеки:
|
||||
|
||||
- цитування/відповідь лише задовольняє обмеження за згадуванням; це **не** надає авторизацію відправнику
|
||||
- з `groupPolicy: "allowlist"` відправники поза списком дозволів усе одно блокуються, навіть якщо вони відповідають на повідомлення користувача зі списку дозволів
|
||||
- цитування/відповідь лише задовольняє умову проходження фільтра згадки; це **не** надає авторизацію відправнику
|
||||
- з `groupPolicy: "allowlist"` відправники поза allowlist усе одно блокуються, навіть якщо вони відповідають на повідомлення користувача з allowlist
|
||||
|
||||
Команда активації на рівні сесії:
|
||||
|
||||
- `/activation mention`
|
||||
- `/activation always`
|
||||
|
||||
`activation` оновлює стан сесії (а не глобальну конфігурацію). Вона обмежена власником.
|
||||
`activation` оновлює стан сесії (а не глобальну конфігурацію). Доступ до неї обмежено власником.
|
||||
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
## Поведінка особистого номера та self-chat
|
||||
## Поведінка особистого номера та самочату
|
||||
|
||||
Коли прив’язаний власний номер також присутній у `allowFrom`, активується захист self-chat у WhatsApp:
|
||||
Коли прив’язаний власний номер також присутній у `allowFrom`, активуються захисти самочату WhatsApp:
|
||||
|
||||
- пропускати read receipts для кроків self-chat
|
||||
- ігнорувати поведінку auto-trigger за mention-JID, яка інакше пінгувала б вас самих
|
||||
- якщо `messages.responsePrefix` не задано, відповіді self-chat за замовчуванням використовують `[{identity.name}]` або `[openclaw]`
|
||||
- пропускати підтвердження прочитання для ходів самочату
|
||||
- ігнорувати поведінку автозапуску за mention-JID, яка інакше надсилала б сповіщення вам самим
|
||||
- якщо `messages.responsePrefix` не задано, відповіді в самочаті за замовчуванням мають вигляд `[{identity.name}]` або `[openclaw]`
|
||||
|
||||
## Нормалізація повідомлень і контекст
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Вхідний конверт + контекст відповіді">
|
||||
Вхідні повідомлення WhatsApp обгортаються у спільний вхідний конверт.
|
||||
<Accordion title="Вхідна оболонка + контекст відповіді">
|
||||
Вхідні повідомлення WhatsApp загортаються у спільну вхідну оболонку.
|
||||
|
||||
Якщо існує цитована відповідь, контекст додається в такому вигляді:
|
||||
Якщо існує цитована відповідь, контекст додається в такій формі:
|
||||
|
||||
```text
|
||||
[Replying to <sender> id:<stanzaId>]
|
||||
[Відповідь на <sender> id:<stanzaId>]
|
||||
<quoted body or media placeholder>
|
||||
[/Replying]
|
||||
[/Відповідь]
|
||||
```
|
||||
|
||||
Поля метаданих відповіді також заповнюються, коли доступні (`ReplyToId`, `ReplyToBody`, `ReplyToSender`, sender JID/E.164).
|
||||
Поля метаданих відповіді також заповнюються, коли вони доступні (`ReplyToId`, `ReplyToBody`, `ReplyToSender`, JID/E.164 відправника).
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Заповнювачі медіа та витягування локації/контакту">
|
||||
Вхідні повідомлення, що містять лише медіа, нормалізуються за допомогою заповнювачів, таких як:
|
||||
Вхідні повідомлення лише з медіа нормалізуються за допомогою заповнювачів, таких як:
|
||||
|
||||
- `<media:image>`
|
||||
- `<media:video>`
|
||||
@ -257,27 +257,27 @@ OpenClaw рекомендує за можливості запускати Whats
|
||||
- `<media:document>`
|
||||
- `<media:sticker>`
|
||||
|
||||
Дані локації та контакту нормалізуються в текстовий контекст перед маршрутизацією.
|
||||
Для локацій у вмісті використовується стислий текст координат. Мітки/коментарі локацій і деталі contact/vCard відображаються як огороджені недовірені метадані, а не як вбудований текст запиту.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Вставлення історії очікування групи">
|
||||
Для груп необроблені повідомлення можуть буферизуватися та вставлятися як контекст, коли бот нарешті активується.
|
||||
<Accordion title="Ін’єкція історії очікування групи">
|
||||
Для груп необроблені повідомлення можуть буферизуватися та ін’єктуватися як контекст, коли бот нарешті буде активовано.
|
||||
|
||||
- типове обмеження: `50`
|
||||
- обмеження за замовчуванням: `50`
|
||||
- конфігурація: `channels.whatsapp.historyLimit`
|
||||
- резервно: `messages.groupChat.historyLimit`
|
||||
- резервне значення: `messages.groupChat.historyLimit`
|
||||
- `0` вимикає
|
||||
|
||||
Маркери вставлення:
|
||||
Маркери ін’єкції:
|
||||
|
||||
- `[Chat messages since your last reply - for context]`
|
||||
- `[Current message - respond to this]`
|
||||
- `[Повідомлення чату з вашої останньої відповіді — для контексту]`
|
||||
- `[Поточне повідомлення — дайте відповідь на нього]`
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Read receipts">
|
||||
Read receipts увімкнені за замовчуванням для прийнятих вхідних повідомлень WhatsApp.
|
||||
<Accordion title="Підтвердження прочитання">
|
||||
Підтвердження прочитання увімкнені за замовчуванням для прийнятих вхідних повідомлень WhatsApp.
|
||||
|
||||
Вимкнення глобально:
|
||||
|
||||
@ -291,7 +291,7 @@ OpenClaw рекомендує за можливості запускати Whats
|
||||
}
|
||||
```
|
||||
|
||||
Перевизначення для облікового запису:
|
||||
Перевизначення для окремого облікового запису:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -307,48 +307,48 @@ OpenClaw рекомендує за можливості запускати Whats
|
||||
}
|
||||
```
|
||||
|
||||
Для self-chat read receipts пропускаються, навіть якщо глобально вони увімкнені.
|
||||
Для ходів самочату підтвердження прочитання пропускаються, навіть коли вони глобально увімкнені.
|
||||
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## Доставка, поділ на частини та медіа
|
||||
## Доставка, розбиття на частини та медіа
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Поділ тексту на частини">
|
||||
- типове обмеження частини: `channels.whatsapp.textChunkLimit = 4000`
|
||||
<Accordion title="Розбиття тексту на частини">
|
||||
- обмеження розміру частини за замовчуванням: `channels.whatsapp.textChunkLimit = 4000`
|
||||
- `channels.whatsapp.chunkMode = "length" | "newline"`
|
||||
- режим `newline` надає перевагу межам абзаців (порожні рядки), а потім резервно використовує безпечний поділ за довжиною
|
||||
- режим `newline` надає перевагу межам абзаців (порожнім рядкам), а потім резервно переходить до безпечного за довжиною розбиття
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Поведінка вихідних медіа">
|
||||
- підтримуються зображення, відео, аудіо (голосові PTT-нотатки) та документи
|
||||
- `audio/ogg` переписується на `audio/ogg; codecs=opus` для сумісності з голосовими нотатками
|
||||
- відтворення анімованих GIF підтримується через `gifPlayback: true` під час надсилання відео
|
||||
- підтримуються payload image, video, audio (голосове повідомлення PTT) і document
|
||||
- `audio/ogg` переписується на `audio/ogg; codecs=opus` для сумісності з голосовими повідомленнями
|
||||
- відтворення анімованих GIF підтримується через `gifPlayback: true` під час надсилання video
|
||||
- підписи застосовуються до першого елемента медіа під час надсилання payload відповіді з кількома медіа
|
||||
- джерелом медіа може бути HTTP(S), `file://` або локальні шляхи
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Обмеження розміру медіа та резервна поведінка">
|
||||
- ліміт збереження вхідних медіа: `channels.whatsapp.mediaMaxMb` (типово `50`)
|
||||
- ліміт надсилання вихідних медіа: `channels.whatsapp.mediaMaxMb` (типово `50`)
|
||||
- перевизначення для облікових записів використовують `channels.whatsapp.accounts.<accountId>.mediaMaxMb`
|
||||
- зображення автоматично оптимізуються (підбір розміру/якості), щоб укладатися в ліміти
|
||||
- у разі помилки надсилання медіа резервний механізм для першого елемента надсилає текстове попередження замість того, щоб мовчки відкинути відповідь
|
||||
- ліміт збереження вхідних медіа: `channels.whatsapp.mediaMaxMb` (за замовчуванням `50`)
|
||||
- ліміт надсилання вихідних медіа: `channels.whatsapp.mediaMaxMb` (за замовчуванням `50`)
|
||||
- перевизначення для окремих облікових записів використовують `channels.whatsapp.accounts.<accountId>.mediaMaxMb`
|
||||
- зображення автоматично оптимізуються (перебір зміни розміру/якості), щоб відповідати лімітам
|
||||
- у разі збою надсилання медіа резервна логіка для першого елемента надсилає текстове попередження замість того, щоб мовчки відкинути відповідь
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## Цитування відповіді
|
||||
|
||||
WhatsApp підтримує нативне цитування відповіді, коли вихідні відповіді візуально цитують вхідне повідомлення. Керуйте цим через `channels.whatsapp.replyToMode`.
|
||||
WhatsApp підтримує нативне цитування відповіді, де вихідні відповіді візуально цитують вхідне повідомлення. Керуйте цим за допомогою `channels.whatsapp.replyToMode`.
|
||||
|
||||
| Значення | Поведінка |
|
||||
| -------- | ---------------------------------------------------------------------------------- |
|
||||
| `"auto"` | Цитувати вхідне повідомлення, коли провайдер це підтримує; інакше пропускати цитування |
|
||||
| Value | Поведінка |
|
||||
| -------- | --------------------------------------------------------------------------------- |
|
||||
| `"auto"` | Цитувати вхідне повідомлення, якщо provider це підтримує; інакше пропускати цитування |
|
||||
| `"on"` | Завжди цитувати вхідне повідомлення; якщо цитування відхилено, перейти до звичайного надсилання |
|
||||
| `"off"` | Ніколи не цитувати; надсилати як звичайне повідомлення |
|
||||
| `"off"` | Ніколи не цитувати; надсилати як звичайне повідомлення |
|
||||
|
||||
Типове значення — `"auto"`. Перевизначення для облікових записів використовують `channels.whatsapp.accounts.<id>.replyToMode`.
|
||||
Значення за замовчуванням — `"auto"`. Перевизначення для окремих облікових записів використовують `channels.whatsapp.accounts.<id>.replyToMode`.
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -362,18 +362,18 @@ WhatsApp підтримує нативне цитування відповіді
|
||||
|
||||
## Рівень реакцій
|
||||
|
||||
`channels.whatsapp.reactionLevel` визначає, наскільки широко агент використовує emoji-реакції у WhatsApp:
|
||||
`channels.whatsapp.reactionLevel` визначає, наскільки широко агент використовує емодзі-реакції в WhatsApp:
|
||||
|
||||
| Рівень | Ack-реакції | Ініційовані агентом реакції | Опис |
|
||||
| ------------ | ----------- | --------------------------- | ------------------------------------------------ |
|
||||
| `"off"` | Ні | Ні | Жодних реакцій |
|
||||
| `"ack"` | Так | Ні | Лише ack-реакції (квитанція до відповіді) |
|
||||
| `"minimal"` | Так | Так (обережно) | Ack + реакції агента з обережними рекомендаціями |
|
||||
| `"extensive"`| Так | Так (заохочується) | Ack + реакції агента з рекомендованим використанням |
|
||||
| Level | Реакції-підтвердження | Реакції, ініційовані агентом | Опис |
|
||||
| ------------- | --------------------- | ---------------------------- | ------------------------------------------------ |
|
||||
| `"off"` | Ні | Ні | Жодних реакцій |
|
||||
| `"ack"` | Так | Ні | Лише реакції-підтвердження (підтвердження до відповіді) |
|
||||
| `"minimal"` | Так | Так (консервативно) | Підтвердження + реакції агента з консервативними рекомендаціями |
|
||||
| `"extensive"` | Так | Так (заохочуються) | Підтвердження + реакції агента із заохочувальними рекомендаціями |
|
||||
|
||||
Типово: `"minimal"`.
|
||||
За замовчуванням: `"minimal"`.
|
||||
|
||||
Перевизначення для облікових записів використовують `channels.whatsapp.accounts.<id>.reactionLevel`.
|
||||
Перевизначення для окремих облікових записів використовують `channels.whatsapp.accounts.<id>.reactionLevel`.
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -387,8 +387,8 @@ WhatsApp підтримує нативне цитування відповіді
|
||||
|
||||
## Реакції-підтвердження
|
||||
|
||||
WhatsApp підтримує негайні ack-реакції після отримання вхідного повідомлення через `channels.whatsapp.ackReaction`.
|
||||
Ack-реакції залежать від `reactionLevel` — вони пригнічуються, коли `reactionLevel` має значення `"off"`.
|
||||
WhatsApp підтримує негайні реакції-підтвердження після отримання вхідного повідомлення через `channels.whatsapp.ackReaction`.
|
||||
Реакції-підтвердження обмежуються `reactionLevel` — вони пригнічуються, коли `reactionLevel` має значення `"off"`.
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -406,9 +406,9 @@ Ack-реакції залежать від `reactionLevel` — вони приг
|
||||
|
||||
Примітки щодо поведінки:
|
||||
|
||||
- надсилається одразу після прийняття вхідного повідомлення (до відповіді)
|
||||
- збої логуються, але не блокують звичайну доставку відповіді
|
||||
- режим групи `mentions` реагує на кроки, активовані згадуванням; групова активація `always` діє як обхід цієї перевірки
|
||||
- надсилаються негайно після прийняття вхідного повідомлення (до відповіді)
|
||||
- збої журналюються, але не блокують звичайну доставку відповіді
|
||||
- у режимі груп `mentions` реагування відбувається на ходах, активованих згадкою; активація групи `always` працює як обхід цієї перевірки
|
||||
- WhatsApp використовує `channels.whatsapp.ackReaction` (застарілий `messages.ackReaction` тут не використовується)
|
||||
|
||||
## Кілька облікових записів і облікові дані
|
||||
@ -416,20 +416,20 @@ Ack-реакції залежать від `reactionLevel` — вони приг
|
||||
<AccordionGroup>
|
||||
<Accordion title="Вибір облікового запису та значення за замовчуванням">
|
||||
- ідентифікатори облікових записів беруться з `channels.whatsapp.accounts`
|
||||
- вибір облікового запису за замовчуванням: `default`, якщо присутній, інакше — перший налаштований ідентифікатор облікового запису (після сортування)
|
||||
- вибір облікового запису за замовчуванням: `default`, якщо присутній, інакше перший налаштований ідентифікатор облікового запису (відсортований)
|
||||
- ідентифікатори облікових записів внутрішньо нормалізуються для пошуку
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Шляхи до облікових даних і сумісність зі старими варіантами">
|
||||
<Accordion title="Шляхи до облікових даних і сумісність зі застарілими варіантами">
|
||||
- поточний шлях автентифікації: `~/.openclaw/credentials/whatsapp/<accountId>/creds.json`
|
||||
- резервний файл: `creds.json.bak`
|
||||
- стара автентифікація за замовчуванням у `~/.openclaw/credentials/` усе ще розпізнається/мігрується для сценаріїв з обліковим записом за замовчуванням
|
||||
- застаріла стандартна автентифікація в `~/.openclaw/credentials/` усе ще розпізнається/мігрується для сценаріїв стандартного облікового запису
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Поведінка під час виходу">
|
||||
`openclaw channels logout --channel whatsapp [--account <id>]` очищає стан автентифікації WhatsApp для цього облікового запису.
|
||||
<Accordion title="Поведінка виходу">
|
||||
`openclaw channels logout --channel whatsapp [--account <id>]` очищує стан автентифікації WhatsApp для цього облікового запису.
|
||||
|
||||
У старих каталогах автентифікації `oauth.json` зберігається, а файли автентифікації Baileys видаляються.
|
||||
У каталогах застарілої автентифікації `oauth.json` зберігається, тоді як файли автентифікації Baileys видаляються.
|
||||
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
@ -440,13 +440,13 @@ Ack-реакції залежать від `reactionLevel` — вони приг
|
||||
- Обмеження дій:
|
||||
- `channels.whatsapp.actions.reactions`
|
||||
- `channels.whatsapp.actions.polls`
|
||||
- Запис конфігурації, ініційований каналом, увімкнений за замовчуванням (вимикається через `channels.whatsapp.configWrites=false`).
|
||||
- Записи конфігурації, ініційовані каналом, увімкнені за замовчуванням (вимкнення через `channels.whatsapp.configWrites=false`).
|
||||
|
||||
## Усунення несправностей
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Не прив’язано (потрібен QR)">
|
||||
Симптом: статус каналу повідомляє, що прив’язка відсутня.
|
||||
Симптом: статус каналу повідомляє, що його не прив’язано.
|
||||
|
||||
Виправлення:
|
||||
|
||||
@ -467,61 +467,61 @@ Ack-реакції залежать від `reactionLevel` — вони приг
|
||||
openclaw logs --follow
|
||||
```
|
||||
|
||||
За потреби повторно прив’яжіть через `channels login`.
|
||||
За потреби прив’яжіть повторно через `channels login`.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Немає активного слухача під час надсилання">
|
||||
Вихідні надсилання швидко завершуються помилкою, якщо для цільового облікового запису немає активного слухача gateway.
|
||||
Вихідні надсилання швидко завершуються помилкою, якщо для цільового облікового запису не існує активного слухача Gateway.
|
||||
|
||||
Переконайтеся, що gateway запущений і обліковий запис прив’язаний.
|
||||
Переконайтеся, що Gateway запущено і обліковий запис прив’язано.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Повідомлення групи неочікувано ігноруються">
|
||||
<Accordion title="Групові повідомлення неочікувано ігноруються">
|
||||
Перевіряйте в такому порядку:
|
||||
|
||||
- `groupPolicy`
|
||||
- `groupAllowFrom` / `allowFrom`
|
||||
- записи списку дозволів `groups`
|
||||
- обмеження за згадуванням (`requireMention` + шаблони згадувань)
|
||||
- дубльовані ключі в `openclaw.json` (JSON5): пізніші записи перевизначають попередні, тому зберігайте лише один `groupPolicy` на кожну область
|
||||
- записи allowlist у `groups`
|
||||
- фільтр згадок (`requireMention` + шаблони згадок)
|
||||
- дубльовані ключі в `openclaw.json` (JSON5): пізніші записи перевизначають попередні, тож зберігайте лише один `groupPolicy` на область
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Попередження про середовище виконання Bun">
|
||||
Середовище виконання gateway для WhatsApp має використовувати Node. Bun позначено як несумісний зі стабільною роботою gateway WhatsApp/Telegram.
|
||||
<Accordion title="Попередження середовища виконання Bun">
|
||||
Середовище виконання Gateway для WhatsApp має використовувати Node. Bun позначено як несумісний для стабільної роботи Gateway WhatsApp/Telegram.
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## Системні prompts
|
||||
## Системні запити
|
||||
|
||||
WhatsApp підтримує системні prompts у стилі Telegram для груп і прямих чатів через мапи `groups` і `direct`.
|
||||
WhatsApp підтримує системні запити в стилі Telegram для груп і прямих чатів через мапи `groups` і `direct`.
|
||||
|
||||
Ієрархія визначення для групових повідомлень:
|
||||
|
||||
Ефективна мапа `groups` визначається спочатку: якщо обліковий запис має власну `groups`, вона повністю замінює кореневу мапу `groups` (без deep merge). Потім пошук prompt виконується за результуючою єдиною мапою:
|
||||
Спочатку визначається ефективна мапа `groups`: якщо обліковий запис визначає власну `groups`, вона повністю замінює кореневу мапу `groups` (без глибокого злиття). Потім пошук запиту виконується в отриманій єдиній мапі:
|
||||
|
||||
1. **Системний prompt для конкретної групи** (`groups["<groupId>"].systemPrompt`): використовується, якщо запис конкретної групи визначає `systemPrompt`.
|
||||
2. **Системний prompt wildcard для груп** (`groups["*"].systemPrompt`): використовується, коли запис конкретної групи відсутній або не визначає `systemPrompt`.
|
||||
1. **Системний запит для конкретної групи** (`groups["<groupId>"].systemPrompt`): використовується, якщо запис конкретної групи визначає `systemPrompt`.
|
||||
2. **Системний запит wildcard для груп** (`groups["*"].systemPrompt`): використовується, коли запис конкретної групи відсутній або не визначає `systemPrompt`.
|
||||
|
||||
Ієрархія визначення для прямих повідомлень:
|
||||
|
||||
Ефективна мапа `direct` визначається спочатку: якщо обліковий запис має власну `direct`, вона повністю замінює кореневу мапу `direct` (без deep merge). Потім пошук prompt виконується за результуючою єдиною мапою:
|
||||
Спочатку визначається ефективна мапа `direct`: якщо обліковий запис визначає власну `direct`, вона повністю замінює кореневу мапу `direct` (без глибокого злиття). Потім пошук запиту виконується в отриманій єдиній мапі:
|
||||
|
||||
1. **Системний prompt для конкретного прямого чату** (`direct["<peerId>"].systemPrompt`): використовується, якщо запис конкретного peer визначає `systemPrompt`.
|
||||
2. **Системний prompt wildcard для прямих чатів** (`direct["*"].systemPrompt`): використовується, коли запис конкретного peer відсутній або не визначає `systemPrompt`.
|
||||
1. **Системний запит для конкретного прямого чату** (`direct["<peerId>"].systemPrompt`): використовується, якщо запис конкретного співрозмовника визначає `systemPrompt`.
|
||||
2. **Системний запит wildcard для прямих чатів** (`direct["*"].systemPrompt`): використовується, коли запис конкретного співрозмовника відсутній або не визначає `systemPrompt`.
|
||||
|
||||
Примітка: `dms` залишається спрощеним контейнером перевизначення історії для окремих DM (`dms.<id>.historyLimit`); перевизначення prompt розміщуються в `direct`.
|
||||
Примітка: `dms` залишається полегшеним контейнером перевизначень історії для окремих DM (`dms.<id>.historyLimit`); перевизначення запитів розміщуються в `direct`.
|
||||
|
||||
**Відмінність від поведінки Telegram з кількома обліковими записами:** У Telegram коренева `groups` навмисно пригнічується для всіх облікових записів у конфігурації з кількома обліковими записами — навіть для тих, що не визначають власної `groups` — щоб бот не отримував групові повідомлення для груп, до яких він не належить. WhatsApp не застосовує цей захист: кореневі `groups` і кореневі `direct` завжди успадковуються обліковими записами, які не визначають перевизначення на рівні облікового запису, незалежно від кількості налаштованих облікових записів. У конфігурації WhatsApp з кількома обліковими записами, якщо ви хочете мати поканальні prompts для груп або прямих чатів, явно визначайте повну мапу в кожному обліковому записі, а не покладайтеся на типові значення кореневого рівня.
|
||||
**Відмінність від поведінки Telegram з кількома обліковими записами:** у Telegram кореневу `groups` навмисно пригнічено для всіх облікових записів у конфігурації з кількома обліковими записами — навіть для тих, що не визначають власну `groups` — щоб запобігти отриманню ботом групових повідомлень від груп, до яких він не належить. У WhatsApp цей захист не застосовується: кореневі `groups` і кореневі `direct` завжди успадковуються обліковими записами, які не визначають перевизначення на рівні облікового запису, незалежно від кількості налаштованих облікових записів. У конфігурації WhatsApp з кількома обліковими записами, якщо вам потрібні запити для груп або прямих чатів окремо для кожного облікового запису, явно визначайте повну мапу в межах кожного облікового запису, а не покладайтеся на кореневі значення за замовчуванням.
|
||||
|
||||
Важлива поведінка:
|
||||
|
||||
- `channels.whatsapp.groups` — це і мапа конфігурації для окремих груп, і список дозволів груп на рівні чату. На кореневому рівні або в області облікового запису `groups["*"]` означає «усі групи допущено» для цієї області.
|
||||
- Додавайте wildcard `systemPrompt` для груп лише тоді, коли ви вже хочете, щоб ця область допускала всі групи. Якщо ви все ще хочете, щоб придатним був лише фіксований набір ідентифікаторів груп, не використовуйте `groups["*"]` як значення prompt за замовчуванням. Натомість повторіть prompt у кожному явно дозволеному записі групи.
|
||||
- Допуск групи та авторизація відправника — це окремі перевірки. `groups["*"]` розширює набір груп, які можуть потрапити до обробки груп, але сам по собі не авторизує кожного відправника в цих групах. Доступ відправника, як і раніше, окремо контролюється через `channels.whatsapp.groupPolicy` і `channels.whatsapp.groupAllowFrom`.
|
||||
- `channels.whatsapp.direct` не має такого ж побічного ефекту для DM. `direct["*"]` лише надає типову конфігурацію прямого чату після того, як DM уже допущено через `dmPolicy` плюс правила `allowFrom` або pairing-store.
|
||||
- `channels.whatsapp.groups` є і мапою конфігурації для кожної групи, і allowlist груп на рівні чату. У кореневій області або в області облікового запису `groups["*"]` означає «усі групи допущено» для цієї області.
|
||||
- Додавайте wildcard `systemPrompt` для груп лише тоді, коли ви вже хочете, щоб ця область допускала всі групи. Якщо вам усе ще потрібно, щоб придатними були лише фіксований набір ідентифікаторів груп, не використовуйте `groups["*"]` для запиту за замовчуванням. Натомість повторіть запит у кожному явно дозволеному записі групи.
|
||||
- Допуск групи та авторизація відправника — це окремі перевірки. `groups["*"]` розширює набір груп, які можуть потрапити до обробки груп, але саме по собі не авторизує кожного відправника в цих групах. Доступ відправників усе ще окремо контролюється через `channels.whatsapp.groupPolicy` і `channels.whatsapp.groupAllowFrom`.
|
||||
- `channels.whatsapp.direct` не має такого побічного ефекту для DM. `direct["*"]` лише надає стандартну конфігурацію прямого чату після того, як DM уже допущено за `dmPolicy` плюс `allowFrom` або правилами pairing-store.
|
||||
|
||||
Приклад:
|
||||
|
||||
@ -530,31 +530,31 @@ WhatsApp підтримує системні prompts у стилі Telegram дл
|
||||
channels: {
|
||||
whatsapp: {
|
||||
groups: {
|
||||
// Використовуйте лише якщо на кореневому рівні мають допускатися всі групи.
|
||||
// Використовуйте лише якщо в кореневій області слід допускати всі групи.
|
||||
// Застосовується до всіх облікових записів, які не визначають власну мапу groups.
|
||||
"*": { systemPrompt: "Типовий prompt для всіх груп." },
|
||||
"*": { systemPrompt: "Стандартний запит для всіх груп." },
|
||||
},
|
||||
direct: {
|
||||
// Застосовується до всіх облікових записів, які не визначають власну мапу direct.
|
||||
"*": { systemPrompt: "Типовий prompt для всіх прямих чатів." },
|
||||
"*": { systemPrompt: "Стандартний запит для всіх прямих чатів." },
|
||||
},
|
||||
accounts: {
|
||||
work: {
|
||||
groups: {
|
||||
// Цей обліковий запис визначає власну groups, тому коренева groups повністю
|
||||
// замінюється. Щоб зберегти wildcard, явно визначте тут і "*" також.
|
||||
// Цей обліковий запис визначає власні groups, тому кореневі groups
|
||||
// повністю замінюються. Щоб зберегти wildcard, явно визначте тут і "*" також.
|
||||
"120363406415684625@g.us": {
|
||||
requireMention: false,
|
||||
systemPrompt: "Зосередься на керуванні проєктами.",
|
||||
systemPrompt: "Зосереджуйся на управлінні проєктами.",
|
||||
},
|
||||
// Використовуйте лише якщо в цьому обліковому записі мають допускатися всі групи.
|
||||
"*": { systemPrompt: "Типовий prompt для робочих груп." },
|
||||
// Використовуйте лише якщо в цьому обліковому записі слід допускати всі групи.
|
||||
"*": { systemPrompt: "Стандартний запит для робочих груп." },
|
||||
},
|
||||
direct: {
|
||||
// Цей обліковий запис визначає власну мапу direct, тому кореневі записи direct
|
||||
// повністю замінюються. Щоб зберегти wildcard, явно визначте тут і "*" також.
|
||||
"+15551234567": { systemPrompt: "Prompt для конкретного робочого прямого чату." },
|
||||
"*": { systemPrompt: "Типовий prompt для робочих прямих чатів." },
|
||||
"+15551234567": { systemPrompt: "Запит для конкретного робочого прямого чату." },
|
||||
"*": { systemPrompt: "Стандартний запит для робочих прямих чатів." },
|
||||
},
|
||||
},
|
||||
},
|
||||
@ -569,18 +569,18 @@ WhatsApp підтримує системні prompts у стилі Telegram дл
|
||||
|
||||
- [Довідник конфігурації - WhatsApp](/uk/gateway/configuration-reference#whatsapp)
|
||||
|
||||
Високопріоритетні поля WhatsApp:
|
||||
Ключові поля WhatsApp:
|
||||
|
||||
- доступ: `dmPolicy`, `allowFrom`, `groupPolicy`, `groupAllowFrom`, `groups`
|
||||
- доставка: `textChunkLimit`, `chunkMode`, `mediaMaxMb`, `sendReadReceipts`, `ackReaction`, `reactionLevel`
|
||||
- кілька облікових записів: `accounts.<id>.enabled`, `accounts.<id>.authDir`, перевизначення на рівні облікового запису
|
||||
- операції: `configWrites`, `debounceMs`, `web.enabled`, `web.heartbeatSeconds`, `web.reconnect.*`
|
||||
- поведінка сесії: `session.dmScope`, `historyLimit`, `dmHistoryLimit`, `dms.<id>.historyLimit`
|
||||
- prompts: `groups.<id>.systemPrompt`, `groups["*"].systemPrompt`, `direct.<id>.systemPrompt`, `direct["*"].systemPrompt`
|
||||
- запити: `groups.<id>.systemPrompt`, `groups["*"].systemPrompt`, `direct.<id>.systemPrompt`, `direct["*"].systemPrompt`
|
||||
|
||||
## Пов’язане
|
||||
|
||||
- [Pairing](/uk/channels/pairing)
|
||||
- [Прив’язування](/uk/channels/pairing)
|
||||
- [Групи](/uk/channels/groups)
|
||||
- [Безпека](/uk/gateway/security)
|
||||
- [Маршрутизація каналів](/uk/channels/channel-routing)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user