chore(i18n): refresh uk translations
This commit is contained in:
parent
bcb75d7ca7
commit
ed396987b2
@ -1,50 +1,50 @@
|
||||
---
|
||||
read_when:
|
||||
- Робота над поведінкою каналу WhatsApp/web або маршрутизацією вхідних повідомлень
|
||||
summary: Підтримка каналу WhatsApp, засоби контролю доступу, поведінка доставки та експлуатація
|
||||
- Робота з поведінкою каналу WhatsApp/веб або маршрутизацією вхідних повідомлень
|
||||
summary: Підтримка каналу WhatsApp, засоби контролю доступу, поведінка доставки та операції
|
||||
title: WhatsApp
|
||||
x-i18n:
|
||||
generated_at: "2026-04-29T03:50:26Z"
|
||||
generated_at: "2026-04-29T04:46:47Z"
|
||||
model: gpt-5.5
|
||||
provider: openai
|
||||
source_hash: 192ef0b17fe67ded990697b48148361a9b0c03631dc7a8efb6510b7fc0c5ede0
|
||||
source_hash: adf84a966468b60d50f7a770fac5c862fa527957ff9ac06acaf8aa35ebd1bbdb
|
||||
source_path: channels/whatsapp.md
|
||||
workflow: 16
|
||||
---
|
||||
|
||||
Стан: готово до production через WhatsApp Web (`Baileys`). Gateway володіє пов’язаними сеансами.
|
||||
Стан: готово до використання в production через WhatsApp Web (Baileys). Gateway керує пов’язаними сеансами.
|
||||
|
||||
## Встановлення (на вимогу)
|
||||
## Установлення (за потреби)
|
||||
|
||||
- Онбординг (`openclaw onboard`) і `openclaw channels add --channel whatsapp`
|
||||
пропонують установити Plugin WhatsApp під час першого вибору.
|
||||
- `openclaw channels login --channel whatsapp` також пропонує потік установлення, коли
|
||||
Plugin ще відсутній.
|
||||
- Dev channel + git checkout: за замовчуванням використовує локальний шлях Plugin.
|
||||
- Stable/Beta: за замовчуванням використовує npm-пакет `@openclaw/whatsapp`.
|
||||
Plugin ще не встановлено.
|
||||
- Канал розробки + git checkout: за замовчуванням використовується локальний шлях Plugin.
|
||||
- Stable/Beta: за замовчуванням використовується npm-пакет `@openclaw/whatsapp`.
|
||||
|
||||
Ручне встановлення залишається доступним:
|
||||
Ручне встановлення лишається доступним:
|
||||
|
||||
```bash
|
||||
openclaw plugins install @openclaw/whatsapp
|
||||
```
|
||||
|
||||
<CardGroup cols={3}>
|
||||
<Card title="Pairing" icon="link" href="/uk/channels/pairing">
|
||||
Стандартна політика DM — створення пари для невідомих відправників.
|
||||
<Card title="Сполучення" icon="link" href="/uk/channels/pairing">
|
||||
Стандартна політика DM — сполучення для невідомих відправників.
|
||||
</Card>
|
||||
<Card title="Channel troubleshooting" icon="wrench" href="/uk/channels/troubleshooting">
|
||||
Міжканальна діагностика та інструкції з відновлення.
|
||||
<Card title="Усунення проблем каналів" icon="wrench" href="/uk/channels/troubleshooting">
|
||||
Міжканальна діагностика та плейбуки ремонту.
|
||||
</Card>
|
||||
<Card title="Gateway configuration" icon="settings" href="/uk/gateway/configuration">
|
||||
Повні шаблони та приклади конфігурації каналів.
|
||||
<Card title="Конфігурація Gateway" icon="settings" href="/uk/gateway/configuration">
|
||||
Повні шаблони та приклади конфігурації каналу.
|
||||
</Card>
|
||||
</CardGroup>
|
||||
|
||||
## Швидке налаштування
|
||||
|
||||
<Steps>
|
||||
<Step title="Configure WhatsApp access policy">
|
||||
<Step title="Налаштуйте політику доступу WhatsApp">
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -61,7 +61,7 @@ openclaw plugins install @openclaw/whatsapp
|
||||
|
||||
</Step>
|
||||
|
||||
<Step title="Link WhatsApp (QR)">
|
||||
<Step title="Зв’яжіть WhatsApp (QR)">
|
||||
|
||||
```bash
|
||||
openclaw channels login --channel whatsapp
|
||||
@ -73,7 +73,7 @@ openclaw channels login --channel whatsapp
|
||||
openclaw channels login --channel whatsapp --account work
|
||||
```
|
||||
|
||||
Щоб під’єднати наявний/власний каталог автентифікації WhatsApp Web перед входом:
|
||||
Щоб під’єднати наявний або власний каталог авторизації WhatsApp Web перед входом:
|
||||
|
||||
```bash
|
||||
openclaw channels add --channel whatsapp --account work --auth-dir /path/to/wa-auth
|
||||
@ -82,7 +82,7 @@ openclaw channels login --channel whatsapp --account work
|
||||
|
||||
</Step>
|
||||
|
||||
<Step title="Start the gateway">
|
||||
<Step title="Запустіть gateway">
|
||||
|
||||
```bash
|
||||
openclaw gateway
|
||||
@ -90,30 +90,30 @@ openclaw gateway
|
||||
|
||||
</Step>
|
||||
|
||||
<Step title="Approve first pairing request (if using pairing mode)">
|
||||
<Step title="Схваліть перший запит на сполучення (якщо використовується режим сполучення)">
|
||||
|
||||
```bash
|
||||
openclaw pairing list whatsapp
|
||||
openclaw pairing approve whatsapp <CODE>
|
||||
```
|
||||
|
||||
Запити на створення пари спливають через 1 годину. Очікувані запити обмежені 3 на канал.
|
||||
Запити на сполучення спливають через 1 годину. Кількість очікуваних запитів обмежена 3 на канал.
|
||||
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
<Note>
|
||||
OpenClaw рекомендує за можливості запускати WhatsApp на окремому номері. (Метадані каналу та потік налаштування оптимізовані для такого сценарію, але сценарії з особистим номером також підтримуються.)
|
||||
OpenClaw рекомендує за можливості запускати WhatsApp на окремому номері. (Метадані каналу й потік налаштування оптимізовані для такого варіанта, але налаштування з особистим номером також підтримуються.)
|
||||
</Note>
|
||||
|
||||
## Шаблони розгортання
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Dedicated number (recommended)">
|
||||
Це найчистіший операційний режим:
|
||||
<Accordion title="Окремий номер (рекомендовано)">
|
||||
Це найчистіший режим експлуатації:
|
||||
|
||||
- окрема ідентичність WhatsApp для OpenClaw
|
||||
- чіткіші списки дозволених DM і межі маршрутизації
|
||||
- зрозуміліші allowlist DM та межі маршрутизації
|
||||
- менша ймовірність плутанини із чатом із самим собою
|
||||
|
||||
Мінімальний шаблон політики:
|
||||
@ -131,44 +131,44 @@ OpenClaw рекомендує за можливості запускати Whats
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Personal-number fallback">
|
||||
<Accordion title="Резервний варіант з особистим номером">
|
||||
Онбординг підтримує режим особистого номера й записує базову конфігурацію, дружню до чату із самим собою:
|
||||
|
||||
- `dmPolicy: "allowlist"`
|
||||
- `allowFrom` містить ваш особистий номер
|
||||
- `selfChatMode: true`
|
||||
|
||||
Під час виконання захисти чату із самим собою спираються на пов’язаний власний номер і `allowFrom`.
|
||||
Під час виконання захист чату із самим собою прив’язаний до пов’язаного власного номера та `allowFrom`.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="WhatsApp Web-only channel scope">
|
||||
Канал платформи повідомлень у поточній архітектурі каналів OpenClaw базується на WhatsApp Web (`Baileys`).
|
||||
<Accordion title="Обсяг каналу лише WhatsApp Web">
|
||||
Канал платформи обміну повідомленнями базується на WhatsApp Web (`Baileys`) у поточній архітектурі каналів OpenClaw.
|
||||
|
||||
У вбудованому реєстрі чат-каналів немає окремого каналу повідомлень Twilio WhatsApp.
|
||||
У вбудованому реєстрі чат-каналів немає окремого каналу обміну повідомленнями Twilio WhatsApp.
|
||||
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## Модель виконання
|
||||
|
||||
- Gateway володіє сокетом WhatsApp і циклом повторного підключення.
|
||||
- Сторож повторного підключення використовує транспортну активність WhatsApp Web, а не лише обсяг вхідних повідомлень застосунку, тому тихий сеанс пов’язаного пристрою не перезапускається тільки через те, що останнім часом ніхто не надсилав повідомлень. Довший ліміт тиші застосунку все одно примусово виконує повторне підключення, якщо транспортні фрейми продовжують надходити, але жодні повідомлення застосунку не обробляються протягом вікна сторожа.
|
||||
- Таймінги сокета Baileys явно задані в `web.whatsapp.*`: `keepAliveIntervalMs` керує пінгами застосунку WhatsApp Web, `connectTimeoutMs` керує тайм-аутом початкового рукостискання, а `defaultQueryTimeoutMs` керує тайм-аутами запитів Baileys.
|
||||
- Gateway керує сокетом WhatsApp і циклом повторного підключення.
|
||||
- Watchdog повторного підключення використовує активність транспорту WhatsApp Web, а не лише обсяг вхідних повідомлень застосунку, тому тихий сеанс пов’язаного пристрою не перезапускається лише через те, що останнім часом ніхто не надсилав повідомлень. Довше обмеження тиші застосунку все одно примусово виконує повторне підключення, якщо транспортні фрейми продовжують надходити, але жодні повідомлення застосунку не обробляються протягом вікна watchdog.
|
||||
- Таймінги сокета Baileys явно задані в `web.whatsapp.*`: `keepAliveIntervalMs` керує пінгами застосунку WhatsApp Web, `connectTimeoutMs` керує тайм-аутом початкового handshake, а `defaultQueryTimeoutMs` керує тайм-аутами запитів Baileys.
|
||||
- Вихідні надсилання потребують активного слухача WhatsApp для цільового облікового запису.
|
||||
- Статусні та широкомовні чати ігноруються (`@status`, `@broadcast`).
|
||||
- Сторож повторного підключення стежить за транспортною активністю WhatsApp Web, а не лише за обсягом вхідних повідомлень застосунку: тихі сеанси пов’язаних пристроїв залишаються активними, поки транспортні фрейми продовжуються, але зависання транспорту примусово викликає повторне підключення задовго до пізнішого шляху віддаленого від’єднання.
|
||||
- Прямі чати використовують правила DM-сеансів (`session.dmScope`; стандартне `main` зводить DM до головного сеансу агента).
|
||||
- Чати статусів і трансляцій ігноруються (`@status`, `@broadcast`).
|
||||
- Watchdog повторного підключення відстежує активність транспорту WhatsApp Web, а не лише обсяг вхідних повідомлень застосунку: тихі сеанси пов’язаних пристроїв лишаються активними, доки транспортні фрейми продовжують надходити, але зупинка транспорту примусово запускає повторне підключення значно раніше за пізніший шлях віддаленого відключення.
|
||||
- Прямі чати використовують правила сеансів DM (`session.dmScope`; стандартне значення `main` зводить DM до головного сеансу агента).
|
||||
- Групові сеанси ізольовані (`agent:<agentId>:whatsapp:group:<jid>`).
|
||||
- Транспорт WhatsApp Web дотримується стандартних змінних середовища проксі на хості gateway (`HTTPS_PROXY`, `HTTP_PROXY`, `NO_PROXY` / варіанти в нижньому регістрі). Віддавайте перевагу конфігурації проксі на рівні хоста, а не канально-специфічним налаштуванням проксі WhatsApp.
|
||||
- Коли `messages.removeAckAfterReply` увімкнено, OpenClaw очищає ack-реакцію WhatsApp після доставлення видимої відповіді.
|
||||
- Транспорт WhatsApp Web враховує стандартні змінні середовища проксі на хості gateway (`HTTPS_PROXY`, `HTTP_PROXY`, `NO_PROXY` / варіанти в нижньому регістрі). Віддавайте перевагу конфігурації проксі на рівні хоста, а не канально-специфічним налаштуванням проксі WhatsApp.
|
||||
- Коли ввімкнено `messages.removeAckAfterReply`, OpenClaw очищає реакцію підтвердження WhatsApp після доставлення видимої відповіді.
|
||||
|
||||
## Хуки Plugin і приватність
|
||||
|
||||
Вхідні повідомлення WhatsApp можуть містити особистий вміст повідомлень, номери телефонів,
|
||||
ідентифікатори груп, імена відправників і поля кореляції сеансів. Через це
|
||||
WhatsApp не транслює вхідні payload-и хука `message_received` до plugins,
|
||||
якщо ви явно не ввімкнете це:
|
||||
ідентифікатори груп, імена відправників і поля кореляції сеансів. Із цієї причини
|
||||
WhatsApp не транслює вхідні payload-и хуку `message_received` до plugins,
|
||||
якщо ви явно не погодитеся:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -182,7 +182,7 @@ WhatsApp не транслює вхідні payload-и хука `message_receive
|
||||
}
|
||||
```
|
||||
|
||||
Можна обмежити opt-in одним обліковим записом:
|
||||
Можна обмежити згоду одним обліковим записом:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -200,16 +200,16 @@ WhatsApp не транслює вхідні payload-и хука `message_receive
|
||||
}
|
||||
```
|
||||
|
||||
Вмикайте це лише для plugins, яким ви довіряєте отримання вмісту й ідентифікаторів
|
||||
вхідних повідомлень WhatsApp.
|
||||
Вмикайте це лише для plugins, яким ви довіряєте отримання вхідного вмісту
|
||||
повідомлень WhatsApp та ідентифікаторів.
|
||||
|
||||
## Контроль доступу й активація
|
||||
|
||||
<Tabs>
|
||||
<Tab title="DM policy">
|
||||
<Tab title="Політика DM">
|
||||
`channels.whatsapp.dmPolicy` керує доступом до прямих чатів:
|
||||
|
||||
- `pairing` (стандартно)
|
||||
- `pairing` (за замовчуванням)
|
||||
- `allowlist`
|
||||
- `open` (потребує, щоб `allowFrom` містив `"*"`)
|
||||
- `disabled`
|
||||
@ -220,71 +220,71 @@ WhatsApp не транслює вхідні payload-и хука `message_receive
|
||||
|
||||
Деталі поведінки під час виконання:
|
||||
|
||||
- пари зберігаються в allow-store каналу й об’єднуються з налаштованим `allowFrom`
|
||||
- якщо список дозволених не налаштовано, пов’язаний власний номер дозволяється за замовчуванням
|
||||
- OpenClaw ніколи автоматично не створює пари для вихідних DM `fromMe` (повідомлень, які ви надсилаєте собі з пов’язаного пристрою)
|
||||
- сполучення зберігаються в allow-store каналу й об’єднуються з налаштованим `allowFrom`
|
||||
- якщо allowlist не налаштовано, пов’язаний власний номер дозволено за замовчуванням
|
||||
- OpenClaw ніколи автоматично не сполучає вихідні DM `fromMe` (повідомлення, які ви надсилаєте собі з пов’язаного пристрою)
|
||||
|
||||
</Tab>
|
||||
|
||||
<Tab title="Group policy + allowlists">
|
||||
Доступ до груп має два рівні:
|
||||
<Tab title="Політика груп + allowlists">
|
||||
Груповий доступ має два рівні:
|
||||
|
||||
1. **Список дозволеного членства в групах** (`channels.whatsapp.groups`)
|
||||
- якщо `groups` пропущено, придатні всі групи
|
||||
- якщо `groups` присутній, він діє як список дозволених груп (`"*"` дозволено)
|
||||
1. **Allowlist членства в групах** (`channels.whatsapp.groups`)
|
||||
- якщо `groups` пропущено, усі групи мають право на обробку
|
||||
- якщо `groups` присутній, він діє як allowlist груп (`"*"` дозволено)
|
||||
|
||||
2. **Політика відправників групи** (`channels.whatsapp.groupPolicy` + `groupAllowFrom`)
|
||||
- `open`: список дозволених відправників обходиться
|
||||
2. **Політика відправників груп** (`channels.whatsapp.groupPolicy` + `groupAllowFrom`)
|
||||
- `open`: allowlist відправників обходиться
|
||||
- `allowlist`: відправник має відповідати `groupAllowFrom` (або `*`)
|
||||
- `disabled`: блокувати всі вхідні групові повідомлення
|
||||
|
||||
Резервний варіант списку дозволених відправників:
|
||||
Резервний варіант allowlist відправників:
|
||||
|
||||
- якщо `groupAllowFrom` не задано, runtime використовує `allowFrom`, коли він доступний
|
||||
- списки дозволених відправників оцінюються перед активацією згадкою/відповіддю
|
||||
- якщо `groupAllowFrom` не задано, під час виконання використовується `allowFrom`, коли він доступний
|
||||
- allowlists відправників оцінюються перед активацією згадки/відповіді
|
||||
|
||||
Примітка: якщо блока `channels.whatsapp` взагалі немає, резервна політика груп runtime — `allowlist` (із попереджувальним логом), навіть якщо `channels.defaults.groupPolicy` задано.
|
||||
Примітка: якщо блоку `channels.whatsapp` взагалі немає, резервне значення групової політики під час виконання — `allowlist` (із попереджувальним логом), навіть якщо задано `channels.defaults.groupPolicy`.
|
||||
|
||||
</Tab>
|
||||
|
||||
<Tab title="Mentions + /activation">
|
||||
<Tab title="Згадки + /activation">
|
||||
Групові відповіді за замовчуванням потребують згадки.
|
||||
|
||||
Виявлення згадок включає:
|
||||
Виявлення згадок охоплює:
|
||||
|
||||
- явні згадки WhatsApp ідентичності бота
|
||||
- налаштовані regex-шаблони згадок (`agents.list[].groupChat.mentionPatterns`, резерв `messages.groupChat.mentionPatterns`)
|
||||
- налаштовані regex-шаблони згадок (`agents.list[].groupChat.mentionPatterns`, резервне значення `messages.groupChat.mentionPatterns`)
|
||||
- транскрипти вхідних голосових нотаток для авторизованих групових повідомлень
|
||||
- неявне виявлення відповіді боту (відправник відповіді збігається з ідентичністю бота)
|
||||
|
||||
Примітка щодо безпеки:
|
||||
Примітка з безпеки:
|
||||
|
||||
- цитата/відповідь лише задовольняє обмеження згадки; вона **не** надає авторизацію відправнику
|
||||
- з `groupPolicy: "allowlist"` відправники поза списком дозволених усе одно блокуються, навіть якщо вони відповідають на повідомлення користувача зі списку дозволених
|
||||
- цитата/відповідь лише задовольняє перевірку згадки; вона **не** надає авторизацію відправника
|
||||
- із `groupPolicy: "allowlist"` відправники поза allowlist усе одно блокуються, навіть якщо відповідають на повідомлення користувача з allowlist
|
||||
|
||||
Команда активації рівня сеансу:
|
||||
|
||||
- `/activation mention`
|
||||
- `/activation always`
|
||||
|
||||
`activation` оновлює стан сеансу (не глобальну конфігурацію). Вона обмежена власником.
|
||||
`activation` оновлює стан сеансу (не глобальну конфігурацію). Доступ обмежено власником.
|
||||
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
## Поведінка особистого номера й чату із самим собою
|
||||
## Поведінка особистого номера та чату із самим собою
|
||||
|
||||
Коли пов’язаний власний номер також присутній у `allowFrom`, активуються захисти WhatsApp для чату із самим собою:
|
||||
Коли пов’язаний власний номер також присутній у `allowFrom`, активуються запобіжники WhatsApp для чату із самим собою:
|
||||
|
||||
- пропускати сповіщення про прочитання для ходів чату із самим собою
|
||||
- ігнорувати поведінку автоматичного запуску через mention-JID, яка інакше пінгувала б вас
|
||||
- якщо `messages.responsePrefix` не задано, відповіді в чаті із самим собою за замовчуванням мають вигляд `[{identity.name}]` або `[openclaw]`
|
||||
- ігнорувати поведінку автоматичного запуску через mention-JID, яка інакше пінгувала б вас самих
|
||||
- якщо `messages.responsePrefix` не задано, відповіді в чаті із самим собою за замовчуванням мають формат `[{identity.name}]` або `[openclaw]`
|
||||
|
||||
## Нормалізація повідомлень і контекст
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Inbound envelope + reply context">
|
||||
Вхідні повідомлення WhatsApp загортаються в спільний вхідний envelope.
|
||||
<Accordion title="Вхідний envelope + контекст відповіді">
|
||||
Вхідні повідомлення WhatsApp обгортаються у спільний вхідний envelope.
|
||||
|
||||
Якщо існує цитована відповідь, контекст додається в такій формі:
|
||||
|
||||
@ -298,8 +298,8 @@ WhatsApp не транслює вхідні payload-и хука `message_receive
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Media placeholders and location/contact extraction">
|
||||
Вхідні повідомлення лише з медіа нормалізуються із placeholder-ами, такими як:
|
||||
<Accordion title="Плейсхолдери медіа та витягування локацій/контактів">
|
||||
Вхідні повідомлення лише з медіа нормалізуються з такими плейсхолдерами:
|
||||
|
||||
- `<media:image>`
|
||||
- `<media:video>`
|
||||
@ -307,32 +307,32 @@ WhatsApp не транслює вхідні payload-и хука `message_receive
|
||||
- `<media:document>`
|
||||
- `<media:sticker>`
|
||||
|
||||
Авторизовані групові голосові нотатки транскрибуються перед обмеженням згадки, коли
|
||||
тіло містить лише `<media:audio>`, тому вимовлена згадка бота в голосовій нотатці може
|
||||
Авторизовані групові голосові нотатки транскрибуються перед перевіркою згадки, коли
|
||||
тіло містить лише `<media:audio>`, тож вимовлена згадка бота в голосовій нотатці може
|
||||
запустити відповідь. Якщо транскрипт усе одно не згадує бота, він
|
||||
зберігається в очікуваній історії групи замість сирого placeholder-а.
|
||||
зберігається в очікуваній історії групи замість сирого плейсхолдера.
|
||||
|
||||
Тіла локацій використовують стислий координатний текст. Мітки/коментарі локацій і деталі контактів/vCard рендеряться як огороджені недовірені метадані, а не як inline-текст prompt.
|
||||
Тіла локацій використовують стислий координатний текст. Підписи/коментарі до локацій і деталі контакту/vCard відображаються як fenced ненадійні метадані, а не як inline-текст prompt.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Pending group history injection">
|
||||
Для груп необроблені повідомлення можуть буферизуватися й ін’єктуватися як контекст, коли бота нарешті запущено.
|
||||
<Accordion title="Вставлення очікуваної історії групи">
|
||||
Для груп необроблені повідомлення можуть буферизуватися й вставлятися як контекст, коли бот нарешті спрацює.
|
||||
|
||||
- стандартний ліміт: `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">
|
||||
Сповіщення про прочитання ввімкнено за замовчуванням для прийнятих вхідних повідомлень WhatsApp.
|
||||
<Accordion title="Сповіщення про прочитання">
|
||||
Сповіщення про прочитання ввімкнені за замовчуванням для прийнятих вхідних повідомлень WhatsApp.
|
||||
|
||||
Вимкнути глобально:
|
||||
|
||||
@ -367,51 +367,67 @@ WhatsApp не транслює вхідні payload-и хука `message_receive
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## Доставлення, розбиття на фрагменти й медіа
|
||||
## Доставлення, фрагментація та медіа
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Text chunking">
|
||||
<Accordion title="Фрагментація тексту">
|
||||
- стандартний ліміт фрагмента: `channels.whatsapp.textChunkLimit = 4000`
|
||||
- `channels.whatsapp.chunkMode = "length" | "newline"`
|
||||
- режим `newline` віддає перевагу межам абзаців (порожнім рядкам), а потім переходить до безпечного за довжиною розбиття
|
||||
- режим `newline` надає перевагу межам абзаців (порожнім рядкам), а потім переходить до фрагментації, безпечної за довжиною
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Поведінка вихідних медіа">
|
||||
- підтримує зображення, відео, аудіо (голосову нотатку PTT) і документні payload-и
|
||||
- аудіомедіа надсилається через payload Baileys `audio` з `ptt: true`, тому клієнти WhatsApp відображають його як голосову нотатку push-to-talk
|
||||
- reply payload-и зберігають `audioAsVoice`; виведення голосових нотаток TTS для WhatsApp залишається на цьому шляху PTT, навіть коли провайдер повертає MP3 або WebM
|
||||
- підтримує зображення, відео, аудіо (голосову нотатку PTT) і документні корисні навантаження
|
||||
- аудіомедіа надсилаються через корисне навантаження Baileys `audio` з `ptt: true`, тому клієнти WhatsApp відображають його як голосову нотатку push-to-talk
|
||||
- корисні навантаження відповідей зберігають `audioAsVoice`; вихід голосової нотатки TTS для WhatsApp залишається на цьому шляху PTT, навіть коли провайдер повертає MP3 або WebM
|
||||
- нативне аудіо Ogg/Opus надсилається як `audio/ogg; codecs=opus` для сумісності з голосовими нотатками
|
||||
- аудіо не у форматі Ogg, зокрема виведення Microsoft Edge TTS MP3/WebM, перекодовується за допомогою `ffmpeg` у моно Ogg/Opus 48 кГц перед доставкою PTT
|
||||
- `/tts latest` надсилає останню відповідь асистента як одну голосову нотатку та пригнічує повторні надсилання для тієї самої відповіді; `/tts chat on|off|default` керує автоматичним TTS для поточного чату WhatsApp
|
||||
- аудіо не у форматі Ogg, зокрема вихід TTS Microsoft Edge MP3/WebM, перекодовується за допомогою `ffmpeg` у моно Ogg/Opus 48 кГц перед доставленням PTT
|
||||
- `/tts latest` надсилає останню відповідь асистента як одну голосову нотатку й пригнічує повторні надсилання для тієї самої відповіді; `/tts chat on|off|default` керує автоматичним TTS для поточного чату WhatsApp
|
||||
- відтворення анімованих GIF підтримується через `gifPlayback: true` під час надсилання відео
|
||||
- підписи застосовуються до першого медіаелемента під час надсилання reply payload-ів із кількома медіа, за винятком голосових нотаток PTT: аудіо надсилається першим, а видимий текст окремо, оскільки клієнти WhatsApp непослідовно відображають підписи до голосових нотаток
|
||||
- підписи застосовуються до першого медіаелемента під час надсилання корисних навантажень відповідей із кількома медіа, за винятком голосових нотаток PTT: аудіо надсилається першим, а видимий текст окремо, бо клієнти WhatsApp не відображають підписи до голосових нотаток узгоджено
|
||||
- джерелом медіа може бути HTTP(S), `file://` або локальні шляхи
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Обмеження розміру медіа та резервна поведінка">
|
||||
- ліміт збереження вхідних медіа: `channels.whatsapp.mediaMaxMb` (типово `50`)
|
||||
- ліміт надсилання вихідних медіа: `channels.whatsapp.mediaMaxMb` (типово `50`)
|
||||
<Accordion title="Обмеження розміру медіа та поведінка резервного варіанта">
|
||||
- обмеження збереження вхідних медіа: `channels.whatsapp.mediaMaxMb` (типово `50`)
|
||||
- обмеження надсилання вихідних медіа: `channels.whatsapp.mediaMaxMb` (типово `50`)
|
||||
- перевизначення для окремого облікового запису використовують `channels.whatsapp.accounts.<accountId>.mediaMaxMb`
|
||||
- зображення автоматично оптимізуються (зміна розміру/підбір якості), щоб вкладатися в ліміти
|
||||
- у разі помилки надсилання медіа резервна поведінка для першого елемента надсилає текстове попередження замість мовчазного відкидання відповіді
|
||||
- зображення автоматично оптимізуються (зміна розміру/перебір якості), щоб відповідати обмеженням
|
||||
- у разі помилки надсилання медіа резервний варіант для першого елемента надсилає текстове попередження замість тихого відкидання відповіді
|
||||
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## Цитування відповідей
|
||||
## Видимість помилок
|
||||
|
||||
`channels.whatsapp.exposeErrorText` керує тим, чи текст помилки агента/провайдера доставляється назад у WhatsApp. Типове значення — `true`. Установіть його в `false`, щоб помилки у WhatsApp залишалися тихими, зберігаючи поведінку інших каналів.
|
||||
|
||||
```json5
|
||||
{
|
||||
channels: {
|
||||
whatsapp: {
|
||||
exposeErrorText: false,
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
Перевизначення для окремого облікового запису використовують `channels.whatsapp.accounts.<id>.exposeErrorText`.
|
||||
|
||||
## Цитування відповіді
|
||||
|
||||
WhatsApp підтримує нативне цитування відповідей, коли вихідні відповіді видимо цитують вхідне повідомлення. Керуйте цим за допомогою `channels.whatsapp.replyToMode`.
|
||||
|
||||
| Значення | Поведінка |
|
||||
| ----------- | --------------------------------------------------------------------- |
|
||||
| `"off"` | Ніколи не цитувати; надсилати як звичайне повідомлення |
|
||||
| `"first"` | Цитувати лише перший фрагмент вихідної відповіді |
|
||||
| `"all"` | Цитувати кожен фрагмент вихідної відповіді |
|
||||
| Значення | Поведінка |
|
||||
| ----------- | -------------------------------------------------------------------- |
|
||||
| `"off"` | Ніколи не цитувати; надсилати як звичайне повідомлення |
|
||||
| `"first"` | Цитувати лише перший фрагмент вихідної відповіді |
|
||||
| `"all"` | Цитувати кожен фрагмент вихідної відповіді |
|
||||
| `"batched"` | Цитувати поставлені в чергу пакетні відповіді, залишаючи негайні відповіді без цитування |
|
||||
|
||||
Типово: `"off"`. Перевизначення для окремого облікового запису використовують `channels.whatsapp.accounts.<id>.replyToMode`.
|
||||
Типове значення — `"off"`. Перевизначення для окремого облікового запису використовують `channels.whatsapp.accounts.<id>.replyToMode`.
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -425,14 +441,14 @@ WhatsApp підтримує нативне цитування відповіде
|
||||
|
||||
## Рівень реакцій
|
||||
|
||||
`channels.whatsapp.reactionLevel` керує тим, наскільки широко агент використовує emoji-реакції у WhatsApp:
|
||||
`channels.whatsapp.reactionLevel` керує тим, наскільки широко агент використовує емодзі-реакції у WhatsApp:
|
||||
|
||||
| Рівень | Ack-реакції | Реакції, ініційовані агентом | Опис |
|
||||
| ------------- | ----------- | ---------------------------- | ------------------------------------------------ |
|
||||
| `"off"` | Ні | Ні | Жодних реакцій |
|
||||
| `"ack"` | Так | Ні | Лише Ack-реакції (підтвердження перед відповіддю) |
|
||||
| `"minimal"` | Так | Так (консервативно) | Ack + реакції агента з консервативними вказівками |
|
||||
| `"extensive"` | Так | Так (заохочується) | Ack + реакції агента із заохочувальними вказівками |
|
||||
| Рівень | Реакції підтвердження | Реакції, ініційовані агентом | Опис |
|
||||
| ------------- | --------------------- | ----------------------------- | -------------------------------------------------------- |
|
||||
| `"off"` | Ні | Ні | Жодних реакцій |
|
||||
| `"ack"` | Так | Ні | Лише реакції підтвердження (квитанція перед відповіддю) |
|
||||
| `"minimal"` | Так | Так (обережно) | Підтвердження + реакції агента з обережними настановами |
|
||||
| `"extensive"` | Так | Так (заохочується) | Підтвердження + реакції агента із заохочувальними настановами |
|
||||
|
||||
Типово: `"minimal"`.
|
||||
|
||||
@ -450,8 +466,8 @@ WhatsApp підтримує нативне цитування відповіде
|
||||
|
||||
## Реакції підтвердження
|
||||
|
||||
WhatsApp підтримує негайні ack-реакції після отримання вхідного повідомлення через `channels.whatsapp.ackReaction`.
|
||||
Ack-реакції обмежуються `reactionLevel` — вони пригнічуються, коли `reactionLevel` дорівнює `"off"`.
|
||||
WhatsApp підтримує негайні реакції підтвердження після отримання вхідного повідомлення через `channels.whatsapp.ackReaction`.
|
||||
Реакції підтвердження обмежуються `reactionLevel` — вони пригнічуються, коли `reactionLevel` дорівнює `"off"`.
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -467,34 +483,34 @@ Ack-реакції обмежуються `reactionLevel` — вони приг
|
||||
}
|
||||
```
|
||||
|
||||
Примітки щодо поведінки:
|
||||
Нотатки щодо поведінки:
|
||||
|
||||
- надсилається негайно після прийняття вхідного повідомлення (перед відповіддю)
|
||||
- помилки журналюються, але не блокують звичайну доставку відповіді
|
||||
- груповий режим `mentions` реагує на ходи, запущені згадкою; активація групи `always` діє як обхід цієї перевірки
|
||||
- надсилаються одразу після прийняття вхідного повідомлення (перед відповіддю)
|
||||
- помилки записуються в журнал, але не блокують звичайне доставлення відповіді
|
||||
- груповий режим `mentions` реагує на ходи, запущені згадкою; групова активація `always` діє як обхід цієї перевірки
|
||||
- WhatsApp використовує `channels.whatsapp.ackReaction` (застаріле `messages.ackReaction` тут не використовується)
|
||||
|
||||
## Кілька облікових записів і облікові дані
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Вибір облікового запису та типові значення">
|
||||
- ідентифікатори облікових записів беруться з `channels.whatsapp.accounts`
|
||||
- типовий вибір облікового запису: `default`, якщо він наявний, інакше перший налаштований ідентифікатор облікового запису (відсортований)
|
||||
- ідентифікатори облікових записів походять із `channels.whatsapp.accounts`
|
||||
- типовий вибір облікового запису: `default`, якщо наявний, інакше перший налаштований ідентифікатор облікового запису (відсортований)
|
||||
- ідентифікатори облікових записів внутрішньо нормалізуються для пошуку
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Шляхи до облікових даних і сумісність із застарілими варіантами">
|
||||
- поточний шлях автентифікації: `~/.openclaw/credentials/whatsapp/<accountId>/creds.json`
|
||||
<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 для цього облікового запису.
|
||||
`openclaw channels logout --channel whatsapp [--account <id>]` очищає стан авторизації WhatsApp для цього облікового запису.
|
||||
|
||||
У застарілих каталогах автентифікації `oauth.json` зберігається, а файли автентифікації Baileys видаляються.
|
||||
У застарілих каталогах авторизації `oauth.json` зберігається, тоді як файли авторизації Baileys видаляються.
|
||||
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
@ -502,16 +518,16 @@ Ack-реакції обмежуються `reactionLevel` — вони приг
|
||||
## Інструменти, дії та записи конфігурації
|
||||
|
||||
- Підтримка інструментів агента включає дію реакції WhatsApp (`react`).
|
||||
- Обмеження дій:
|
||||
- Обмежувачі дій:
|
||||
- `channels.whatsapp.actions.reactions`
|
||||
- `channels.whatsapp.actions.polls`
|
||||
- Записи конфігурації, ініційовані каналом, увімкнені типово (вимикаються через `channels.whatsapp.configWrites=false`).
|
||||
|
||||
## Усунення несправностей
|
||||
## Усунення неполадок
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Не пов’язано (потрібен QR)">
|
||||
Симптом: статус каналу повідомляє, що його не пов’язано.
|
||||
<Accordion title="Не прив’язано (потрібен QR)">
|
||||
Симптом: стан каналу повідомляє, що його не прив’язано.
|
||||
|
||||
Виправлення:
|
||||
|
||||
@ -522,14 +538,14 @@ Ack-реакції обмежуються `reactionLevel` — вони приг
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Пов’язано, але від’єднано / цикл повторного підключення">
|
||||
Симптом: пов’язаний обліковий запис із повторними від’єднаннями або спробами повторного підключення.
|
||||
<Accordion title="Прив’язано, але від’єднано / цикл повторного підключення">
|
||||
Симптом: прив’язаний обліковий запис із повторними від’єднаннями або спробами повторного підключення.
|
||||
|
||||
Тихі облікові записи можуть залишатися підключеними після звичайного тайм-ауту повідомлень; watchdog
|
||||
перезапускається, коли активність транспорту WhatsApp Web зупиняється, сокет закривається або
|
||||
активність на рівні застосунку залишається відсутньою довше за триваліше захисне вікно.
|
||||
Тихі облікові записи можуть залишатися підключеними після звичайного тайм-ауту повідомлень; сторожовий процес
|
||||
перезапускається, коли транспортна активність WhatsApp Web зупиняється, сокет закривається або
|
||||
активність на рівні застосунку залишається тихою довше за розширене безпечне вікно.
|
||||
|
||||
Якщо журнали показують повторюване `status=408 Request Time-out Connection was lost`, налаштуйте
|
||||
Якщо журнали показують повторюваний `status=408 Request Time-out Connection was lost`, налаштуйте
|
||||
таймінги сокета Baileys у `web.whatsapp`. Почніть зі скорочення
|
||||
`keepAliveIntervalMs` нижче за тайм-аут простою вашої мережі та збільшення
|
||||
`connectTimeoutMs` на повільних або нестабільних з’єднаннях:
|
||||
@ -553,70 +569,70 @@ Ack-реакції обмежуються `reactionLevel` — вони приг
|
||||
openclaw logs --follow
|
||||
```
|
||||
|
||||
За потреби повторно пов’яжіть за допомогою `channels login`.
|
||||
За потреби повторно прив’яжіть за допомогою `channels login`.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Вхід за QR завершується тайм-аутом за проксі">
|
||||
Симптом: `openclaw channels login --channel whatsapp` завершується помилкою до показу придатного QR-коду з `status=408 Request Time-out` або від’єднанням TLS-сокета.
|
||||
Симптом: `openclaw channels login --channel whatsapp` завершується помилкою перед показом придатного QR-коду з `status=408 Request Time-out` або розривом TLS-сокета.
|
||||
|
||||
Вхід у WhatsApp Web використовує стандартне проксі-середовище хоста Gateway (`HTTPS_PROXY`, `HTTP_PROXY`, варіанти в нижньому регістрі та `NO_PROXY`). Перевірте, що процес Gateway успадковує проксі-env і що `NO_PROXY` не відповідає `mmg.whatsapp.net`.
|
||||
Вхід у WhatsApp Web використовує стандартне проксі-середовище хоста Gateway (`HTTPS_PROXY`, `HTTP_PROXY`, варіанти в нижньому регістрі та `NO_PROXY`). Переконайтеся, що процес Gateway успадковує середовище проксі й що `NO_PROXY` не відповідає `mmg.whatsapp.net`.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Немає активного слухача під час надсилання">
|
||||
Вихідні надсилання швидко завершуються помилкою, коли для цільового облікового запису немає активного слухача Gateway.
|
||||
|
||||
Переконайтеся, що Gateway запущено, а обліковий запис пов’язано.
|
||||
Переконайтеся, що Gateway працює, а обліковий запис прив’язано.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Групові повідомлення неочікувано ігноруються">
|
||||
<Accordion title="Групові повідомлення несподівано ігноруються">
|
||||
Перевірте в такому порядку:
|
||||
|
||||
- `groupPolicy`
|
||||
- `groupAllowFrom` / `allowFrom`
|
||||
- записи allowlist `groups`
|
||||
- обмеження за згадками (`requireMention` + шаблони згадок)
|
||||
- дублікати ключів у `openclaw.json` (JSON5): пізніші записи перевизначають раніші, тому тримайте один `groupPolicy` для кожної області
|
||||
- записи списку дозволених у `groups`
|
||||
- обмеження згадками (`requireMention` + шаблони згадок)
|
||||
- дубльовані ключі в `openclaw.json` (JSON5): пізніші записи перевизначають попередні, тому залишайте один `groupPolicy` для кожної області
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Попередження runtime Bun">
|
||||
Runtime Gateway WhatsApp має використовувати Node. Bun позначається як несумісний для стабільної роботи Gateway WhatsApp/Telegram.
|
||||
<Accordion title="Попередження середовища виконання Bun">
|
||||
Середовище виконання Gateway WhatsApp має використовувати Node. Bun позначається як несумісний для стабільної роботи Gateway WhatsApp/Telegram.
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## Системні підказки
|
||||
## Системні промпти
|
||||
|
||||
WhatsApp підтримує системні підказки в стилі Telegram для груп і прямих чатів через мапи `groups` і `direct`.
|
||||
WhatsApp підтримує системні промпти в стилі Telegram для груп і прямих чатів через мапи `groups` і `direct`.
|
||||
|
||||
Ієрархія розв’язання для групових повідомлень:
|
||||
|
||||
Ефективна мапа `groups` визначається першою: якщо обліковий запис визначає власну `groups`, вона повністю замінює кореневу мапу `groups` (без глибокого злиття). Потім пошук підказки виконується на отриманій єдиній мапі:
|
||||
Ефективна мапа `groups` визначається першою: якщо обліковий запис визначає власні `groups`, вона повністю замінює кореневу мапу `groups` (без глибокого злиття). Потім пошук промпта виконується на отриманій єдиній мапі:
|
||||
|
||||
1. **Системна підказка для конкретної групи** (`groups["<groupId>"].systemPrompt`): використовується, коли конкретний запис групи існує в мапі **і** його ключ `systemPrompt` визначено. Якщо `systemPrompt` є порожнім рядком (`""`), wildcard пригнічується й системна підказка не застосовується.
|
||||
2. **Wildcard-системна підказка групи** (`groups["*"].systemPrompt`): використовується, коли конкретний запис групи повністю відсутній у мапі або коли він існує, але не визначає ключ `systemPrompt`.
|
||||
1. **Системний промпт для конкретної групи** (`groups["<groupId>"].systemPrompt`): використовується, коли конкретний груповий запис існує в мапі **і** його ключ `systemPrompt` визначено. Якщо `systemPrompt` є порожнім рядком (`""`), wildcard пригнічується й системний промпт не застосовується.
|
||||
2. **Wildcard-системний промпт для групи** (`groups["*"].systemPrompt`): використовується, коли конкретний груповий запис повністю відсутній у мапі або коли він існує, але не визначає ключ `systemPrompt`.
|
||||
|
||||
Ієрархія розв’язання для прямих повідомлень:
|
||||
|
||||
Ефективна мапа `direct` визначається першою: якщо обліковий запис визначає власну `direct`, вона повністю замінює кореневу мапу `direct` (без глибокого злиття). Потім пошук підказки виконується на отриманій єдиній мапі:
|
||||
Ефективна мапа `direct` визначається першою: якщо обліковий запис визначає власні `direct`, вона повністю замінює кореневу мапу `direct` (без глибокого злиття). Потім пошук промпта виконується на отриманій єдиній мапі:
|
||||
|
||||
1. **Системна підказка для конкретного прямого чату** (`direct["<peerId>"].systemPrompt`): використовується, коли конкретний запис peer існує в мапі **і** його ключ `systemPrompt` визначено. Якщо `systemPrompt` є порожнім рядком (`""`), wildcard пригнічується й системна підказка не застосовується.
|
||||
2. **Wildcard-системна підказка прямого чату** (`direct["*"].systemPrompt`): використовується, коли конкретний запис peer повністю відсутній у мапі або коли він існує, але не визначає ключ `systemPrompt`.
|
||||
1. **Системний промпт для конкретного прямого чату** (`direct["<peerId>"].systemPrompt`): використовується, коли конкретний запис співрозмовника існує в мапі **і** його ключ `systemPrompt` визначено. Якщо `systemPrompt` є порожнім рядком (`""`), wildcard пригнічується й системний промпт не застосовується.
|
||||
2. **Wildcard-системний промпт для прямого чату** (`direct["*"].systemPrompt`): використовується, коли конкретний запис співрозмовника повністю відсутній у мапі або коли він існує, але не визначає ключ `systemPrompt`.
|
||||
|
||||
<Note>
|
||||
`dms` залишається легким контейнером перевизначень історії для окремих DM (`dms.<id>.historyLimit`). Перевизначення підказок розміщуються в `direct`.
|
||||
`dms` залишається легким контейнером перевизначень історії для окремих DM (`dms.<id>.historyLimit`). Перевизначення промптів розміщуються в `direct`.
|
||||
</Note>
|
||||
|
||||
**Відмінність від поведінки Telegram з кількома обліковими записами:** У Telegram коренева `groups` навмисно пригнічується для всіх облікових записів у налаштуванні з кількома обліковими записами — навіть для облікових записів, які не визначають власної `groups`, — щоб запобігти отриманню ботом групових повідомлень із груп, до яких він не належить. WhatsApp не застосовує цей захист: кореневі `groups` і `direct` завжди успадковуються обліковими записами, які не визначають перевизначення на рівні облікового запису, незалежно від кількості налаштованих облікових записів. У налаштуванні WhatsApp із кількома обліковими записами, якщо потрібні групові або прямі підказки для кожного облікового запису, явно визначайте повну мапу під кожним обліковим записом, а не покладайтеся на типові значення кореневого рівня.
|
||||
**Відмінність від поведінки кількох облікових записів Telegram:** У Telegram кореневі `groups` навмисно пригнічуються для всіх облікових записів у налаштуванні з кількома обліковими записами — навіть для облікових записів, які не визначають власних `groups`, — щоб запобігти отриманню ботом групових повідомлень для груп, до яких він не належить. WhatsApp не застосовує цей захист: кореневі `groups` і кореневі `direct` завжди успадковуються обліковими записами, які не визначають перевизначення на рівні облікового запису, незалежно від кількості налаштованих облікових записів. У налаштуванні WhatsApp із кількома обліковими записами, якщо вам потрібні групові або прямі промпти для кожного облікового запису, явно визначте повну мапу під кожним обліковим записом, а не покладайтеся на типові значення кореневого рівня.
|
||||
|
||||
Важлива поведінка:
|
||||
|
||||
- `channels.whatsapp.groups` є одночасно мапою конфігурації для окремих груп і allowlist груп на рівні чату. У кореневій області або області облікового запису `groups["*"]` означає "усі групи допускаються" для цієї області.
|
||||
- Додавайте wildcard-групу `systemPrompt` лише тоді, коли вже хочете, щоб ця область допускала всі групи. Якщо ви все ще хочете, щоб придатним був лише фіксований набір ідентифікаторів груп, не використовуйте `groups["*"]` для типового значення підказки. Натомість повторіть підказку в кожному явно доданому до allowlist записі групи.
|
||||
- Допуск групи та авторизація відправника є окремими перевірками. `groups["*"]` розширює набір груп, які можуть потрапити до обробки груп, але сам по собі не авторизує кожного відправника в цих групах. Доступ відправників усе ще окремо контролюється `channels.whatsapp.groupPolicy` і `channels.whatsapp.groupAllowFrom`.
|
||||
- `channels.whatsapp.direct` не має такого самого побічного ефекту для DM. `direct["*"]` лише надає типову конфігурацію прямого чату після того, як DM уже допущено через `dmPolicy` плюс `allowFrom` або правила сховища зв’язування.
|
||||
- `channels.whatsapp.groups` є водночас мапою конфігурації для кожної групи та списком дозволених груп на рівні чату. На кореневому рівні або рівні облікового запису `groups["*"]` означає «усі групи допускаються» для цієї області.
|
||||
- Додавайте wildcard-груповий `systemPrompt` лише тоді, коли ви вже хочете, щоб ця область допускала всі групи. Якщо ви все ще хочете, щоб придатним був лише фіксований набір ідентифікаторів груп, не використовуйте `groups["*"]` для типового промпта. Натомість повторіть промпт у кожному явно дозволеному записі групи.
|
||||
- Допуск групи та авторизація відправника є окремими перевірками. `groups["*"]` розширює набір груп, які можуть досягти обробки груп, але сам по собі не авторизує кожного відправника в цих групах. Доступ відправників усе ще окремо контролюється `channels.whatsapp.groupPolicy` і `channels.whatsapp.groupAllowFrom`.
|
||||
- `channels.whatsapp.direct` не має такого самого побічного ефекту для DM. `direct["*"]` лише надає типову конфігурацію прямого чату після того, як DM уже допущено правилами `dmPolicy` плюс `allowFrom` або сховища парування.
|
||||
|
||||
Приклад:
|
||||
|
||||
@ -658,7 +674,7 @@ WhatsApp підтримує системні підказки в стилі Tele
|
||||
}
|
||||
```
|
||||
|
||||
## Покажчики довідника конфігурації
|
||||
## Вказівники довідника конфігурації
|
||||
|
||||
Основний довідник:
|
||||
|
||||
@ -667,7 +683,7 @@ WhatsApp підтримує системні підказки в стилі Tele
|
||||
Ключові поля WhatsApp:
|
||||
|
||||
- доступ: `dmPolicy`, `allowFrom`, `groupPolicy`, `groupAllowFrom`, `groups`
|
||||
- доставка: `textChunkLimit`, `chunkMode`, `mediaMaxMb`, `sendReadReceipts`, `ackReaction`, `reactionLevel`
|
||||
- доставка: `textChunkLimit`, `chunkMode`, `mediaMaxMb`, `sendReadReceipts`, `ackReaction`, `reactionLevel`, `exposeErrorText`
|
||||
- кілька облікових записів: `accounts.<id>.enabled`, `accounts.<id>.authDir`, перевизначення на рівні облікового запису
|
||||
- операції: `configWrites`, `debounceMs`, `web.enabled`, `web.heartbeatSeconds`, `web.reconnect.*`, `web.whatsapp.*`
|
||||
- поведінка сеансу: `session.dmScope`, `historyLimit`, `dmHistoryLimit`, `dms.<id>.historyLimit`
|
||||
@ -679,5 +695,5 @@ WhatsApp підтримує системні підказки в стилі Tele
|
||||
- [Групи](/uk/channels/groups)
|
||||
- [Безпека](/uk/gateway/security)
|
||||
- [Маршрутизація каналів](/uk/channels/channel-routing)
|
||||
- [Маршрутизація кількох агентів](/uk/concepts/multi-agent)
|
||||
- [Маршрутизація між агентами](/uk/concepts/multi-agent)
|
||||
- [Усунення несправностей](/uk/channels/troubleshooting)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user