Regional platforms
Zalo
Статус: експериментальний. Реалізовано як прямі повідомлення, так і групові чати; наведена нижче таблиця Можливості відображає перевірену поведінку ботів Zalo Bot Creator / Marketplace.
Вбудований плагін
У поточних випусках OpenClaw Zalo постачається як вбудований плагін, тому для пакетних збірок окреме встановлення не потрібне.
У старішій збірці або спеціальній інсталяції, з якої виключено Zalo, установіть пакет npm безпосередньо:
- Установлення:
openclaw plugins install @openclaw/zalo - Закріплена версія:
openclaw plugins install @openclaw/zalo@2026.6.11 - З локальної робочої копії:
openclaw plugins install ./path/to/local/zalo-plugin - Докладніше: Плагіни
Швидке налаштування
- Створіть токен бота на https://bot.zaloplatforms.com (увійдіть, створіть бота, налаштуйте параметри). Токен має формат
numeric_id:secret; для ботів Marketplace придатний до використання токен середовища виконання може міститися у вітальному повідомленні бота. - Задайте токен як змінну середовища
ZALO_BOT_TOKEN=...(лише для облікового запису за замовчуванням) або в конфігурації. - Перезапустіть Gateway.
- Підтвердьте код сполучення під час першого контакту через прямі повідомлення (типова політика прямих повідомлень — сполучення).
Мінімальна конфігурація:
{ channels: { zalo: { enabled: true, accounts: { default: { botToken: "12345689:abc-xyz", dmPolicy: "pairing", }, }, }, },}Кілька облікових записів: додайте записи в channels.zalo.accounts.<id>, кожен із власними botToken/name. channels.zalo.botToken (плоска форма без accounts) — застарочене скорочення для одного облікового запису; для нових конфігурацій віддавайте перевагу accounts.<id>.*.
Що це таке
Zalo — орієнтований на Вʼєтнам застосунок для обміну повідомленнями. Його Bot API дає змогу Gateway запускати бота як для розмов один на один, так і для групових чатів, із детермінованою маршрутизацією відповідей назад до Zalo (модель ніколи не вибирає канали).
Ця сторінка стосується ботів Zalo Bot Creator / Marketplace. Боти Zalo Official Account (OA) належать до іншої продуктової поверхні й можуть поводитися інакше; ця сторінка їх не охоплює.
Як це працює
- Вхідні повідомлення нормалізуються в спільний конверт каналу із заповнювачами для медіафайлів.
- Відповіді завжди маршрутизуються назад до того самого чату Zalo; відповідь із цитуванням не використовується (
replyToModeзавжди вимкнено). - За замовчуванням використовується тривале опитування (
getUpdates); режим Webhook доступний черезchannels.zalo.webhookUrl. - У групах для запуску бота потрібна @згадка; це не можна налаштувати окремо для каналу.
Обмеження
| Обмеження | Значення |
|---|---|
| Розмір фрагмента вихідного тексту | 2000 символів (обмеження Zalo API) |
| Розмір медіафайлів (вхідних/вихідних) | channels.zalo.mediaMaxMb, за замовчуванням 5 МБ |
| Тіло запиту Webhook | 1 МБ, тайм-аут читання 30 с |
| Обмеження частоти запитів Webhook | 120 запитів / 60 с для кожної комбінації шляху й IP-адреси клієнта, після чого повертається HTTP 429 |
| Вікно повторюваних подій Webhook | 5 хвилин (ключ: шлях + обліковий запис + назва події + чат + відправник + ідентифікатор повідомлення) |
Керування доступом
Прямі повідомлення
channels.zalo.dmPolicy:pairing(за замовчуванням) |allowlist|open|disabled.- Сполучення: невідомі відправники отримують код сполучення; повідомлення ігноруються до підтвердження. Термін дії кодів спливає через 1 годину.
openclaw pairing list zaloopenclaw pairing approve zalo <CODE>- Докладніше: Сполучення
channels.zalo.allowFromприймає числові ідентифікатори користувачів Zalo (пошук за іменем користувача не підтримується). Дляopenпотрібно вказати"*".
Групи
Групові чати підтримуються плагіном (chatTypes: ["direct", "group"]), а доступ до них контролюється згадкою та груповою політикою:
channels.zalo.groupPolicy:open|allowlist|disabled.channels.zalo.groupAllowFromобмежує ідентифікатори відправників, які можуть запускати бота в групах; якщо значення не задано, використовуєтьсяallowFrom.- Типове визначення: якщо
channels.zaloналаштовано, незадане значенняgroupPolicyвизначається якopen. Якщоchannels.zaloповністю відсутнє, середовище виконання безпечно відмовляє в доступі, використовуючиallowlist. - Відоме застереження з практичного використання: у деяких конфігураціях ботів Marketplace бота взагалі не вдавалося додати до групи. Якщо ви зіткнулися з цим, перевірте налаштування свого бота в Zalo Bot Platform; це обмеження платформи, а не політика OpenClaw.
Тривале опитування чи Webhook
- За замовчуванням: тривале опитування (публічна URL-адреса не потрібна).
- Режим Webhook: задайте
channels.zalo.webhookUrlіchannels.zalo.webhookSecret.- URL-адреса Webhook має використовувати HTTPS.
- Секрет Webhook має містити 8–256 символів.
- Zalo надсилає події із заголовком
X-Bot-Api-Secret-Token, який перевіряється порівнянням зі сталим часом виконання. - HTTP-сервер Gateway обробляє запити Webhook за шляхом
channels.zalo.webhookPath(за замовчуванням використовується шлях з URL-адреси Webhook). - Запити мають використовувати
Content-Type: application/json(або тип медіа з суфіксом+json). - Відповідно до документації Zalo API, опитування getUpdates і Webhook є взаємовиключними.
Підтримувані типи повідомлень
- Текст: повна підтримка з поділом на фрагменти по 2000 символів.
- Медіафайли: вхідні й вихідні, з обмеженням
mediaMaxMb. - Реакції, гілки, опитування, вбудовані команди: не підтримуються плагіном.
- Потокове передавання: плагін заявляє можливість блокового потокового передавання, але Zalo не має спеціальних параметрів налаштування вихідної черги чи обʼєднання тексту (на відміну від деяких інших регіональних каналів); якщо це важливо для вашого сценарію використання, перевірте поточну поведінку у своєму середовищі.
Можливості
| Функція | Статус |
|---|---|
| Прямі повідомлення | Підтримуються |
| Групи | Підтримуються (потрібна згадка) |
| Медіафайли (вхідні/вихідні) | Підтримуються, обмежені mediaMaxMb |
| Реакції | Не підтримуються |
| Гілки | Не підтримуються |
| Опитування | Не підтримуються |
| Вбудовані команди | Не підтримуються |
| Відповідь на повідомлення / цитата | Не використовується (завжди вимкнено) |
Цілі доставлення (CLI/cron)
Використовуйте ідентифікатор чату як ціль:
openclaw message send --channel zalo --target 123456789 --message "hi"Усунення несправностей
Бот не відповідає:
- Перевірте токен:
openclaw channels status --probe - Переконайтеся, що відправника схвалено (через сполучення або
allowFrom) - Перевірте журнали Gateway:
openclaw logs --follow
Webhook не отримує події:
- Переконайтеся, що URL-адреса Webhook використовує HTTPS
- Переконайтеся, що секрет містить 8–256 символів
- Переконайтеся, що кінцева точка HTTP-сервера Gateway доступна за налаштованим шляхом
- Переконайтеся, що опитування getUpdates не виконується одночасно (вони є взаємовиключними)
- Сплеск запитів може призвести до відповіді HTTP 429 (120 запитів / 60 с для кожної комбінації шляху й IP-адреси); збільште інтервал і повторіть спробу
Довідник конфігурації
Повна конфігурація: Конфігурація
| Параметр | Опис | Значення за замовчуванням |
|---|---|---|
channels.zalo.enabled |
Увімкнення/вимкнення запуску каналу | true |
channels.zalo.accounts.<id>.botToken |
Токен бота із Zalo Bot Platform | - |
channels.zalo.accounts.<id>.tokenFile |
Читання токена з файлу (символічні посилання відхиляються) | - |
channels.zalo.accounts.<id>.name |
Відображуване імʼя | - |
channels.zalo.accounts.<id>.enabled |
Увімкнення/вимкнення цього облікового запису | true |
channels.zalo.accounts.<id>.dmPolicy |
Політика прямих повідомлень для облікового запису | pairing |
channels.zalo.accounts.<id>.allowFrom |
Список дозволених для прямих повідомлень (ідентифікатори користувачів) | - |
channels.zalo.accounts.<id>.groupPolicy |
Групова політика для облікового запису | див. Групи |
channels.zalo.accounts.<id>.groupAllowFrom |
Список дозволених відправників у групах; резервно використовується allowFrom |
- |
channels.zalo.accounts.<id>.mediaMaxMb |
Обмеження вхідних/вихідних медіафайлів (МБ) | 5 |
channels.zalo.accounts.<id>.webhookUrl |
Увімкнення режиму Webhook (потрібен HTTPS) | - |
channels.zalo.accounts.<id>.webhookSecret |
Секрет Webhook (8–256 символів) | - |
channels.zalo.accounts.<id>.webhookPath |
Шлях Webhook на HTTP-сервері Gateway | шлях URL-адреси Webhook |
channels.zalo.accounts.<id>.proxy |
URL-адреса проксі для запитів API | - |
channels.zalo.accounts.<id>.responsePrefix |
Перевизначення префікса вихідної відповіді | - |
channels.zalo.defaultAccount |
Обліковий запис за замовчуванням, коли налаштовано кілька | default |
channels.zalo.botToken, channels.zalo.dmPolicy та інші плоскі ключі верхнього рівня є застароченими скороченнями для одного облікового запису, що відповідають наведеним вище полям; підтримуються обидві форми.
Змінна середовища: ZALO_BOT_TOKEN=... визначає токен лише для облікового запису за замовчуванням.
Повʼязані матеріали
- Огляд каналів — усі підтримувані канали
- Сполучення — автентифікація прямих повідомлень і процес сполучення
- Групи — поведінка групових чатів і обмеження за згадкою
- Маршрутизація каналів — маршрутизація сеансів для повідомлень
- Безпека — модель доступу й посилення захисту