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
  • Докладніше: Плагіни

Швидке налаштування

  1. Створіть токен бота на https://bot.zaloplatforms.com (увійдіть, створіть бота, налаштуйте параметри). Токен має формат numeric_id:secret; для ботів Marketplace придатний до використання токен середовища виконання може міститися у вітальному повідомленні бота.
  2. Задайте токен як змінну середовища ZALO_BOT_TOKEN=... (лише для облікового запису за замовчуванням) або в конфігурації.
  3. Перезапустіть Gateway.
  4. Підтвердьте код сполучення під час першого контакту через прямі повідомлення (типова політика прямих повідомлень — сполучення).

Мінімальна конфігурація:

json5
{  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 zalo
    • openclaw pairing approve zalo &lt;CODE&gt;
    • Докладніше: Сполучення
  • 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)

Використовуйте ідентифікатор чату як ціль:

bash
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=... визначає токен лише для облікового запису за замовчуванням.

Повʼязані матеріали

Was this useful?
On this page

On this page