Zalo Personal (неофіційно)
Стан: експериментально. Ця інтеграція автоматизує особистий обліковий запис Zalo через нативнийzca-js всередині OpenClaw.
Попередження: Це неофіційна інтеграція, яка може призвести до призупинення або блокування облікового запису. Використовуйте на власний ризик.
Вбудований плагін
Zalo Personal постачається як вбудований плагін у поточних випусках OpenClaw, тому звичайні зібрані збірки не потребують окремого встановлення. Якщо ви використовуєте старішу збірку або нестандартне встановлення без Zalo Personal, установіть його вручну:- Установлення через CLI:
openclaw plugins install @openclaw/zalouser - Або з checkout вихідного коду:
openclaw plugins install ./path/to/local/zalouser-plugin - Докладніше: Плагіни
zca/openzca не потрібен.
Швидке налаштування (для початківців)
- Переконайтеся, що плагін Zalo Personal доступний.
- Поточні зібрані випуски OpenClaw уже містять його в комплекті.
- У старіших/нестандартних установленнях його можна додати вручну за допомогою наведених вище команд.
- Увійдіть (QR, на машині Gateway):
openclaw channels login --channel zalouser- Відскануйте QR-код у мобільному застосунку Zalo.
- Увімкніть канал:
- Перезапустіть Gateway (або завершіть налаштування).
- Доступ до приватних повідомлень типово використовує прив’язку; підтвердьте код прив’язки під час першого контакту.
Що це таке
- Повністю працює в межах процесу через
zca-js. - Використовує нативні слухачі подій для отримання вхідних повідомлень.
- Надсилає відповіді безпосередньо через JS API (текст/медіа/посилання).
- Призначено для сценаріїв використання з “особистим обліковим записом”, де Zalo Bot API недоступний.
Іменування
ID каналу —zalouser, щоб чітко показати, що це автоматизація особистого облікового запису користувача Zalo (неофіційно). Назву zalo ми залишаємо зарезервованою для потенційної майбутньої офіційної інтеграції Zalo API.
Пошук ID (directory)
Використовуйте CLI directory, щоб знаходити співрозмовників/групи та їхні ID:Обмеження
- Вихідний текст розбивається на фрагменти приблизно по 2000 символів (обмеження клієнта Zalo).
- Streaming типово заблоковано.
Керування доступом (приватні повідомлення)
channels.zalouser.dmPolicy підтримує: pairing | allowlist | open | disabled (типово: pairing).
channels.zalouser.allowFrom приймає ID користувачів або імена. Під час налаштування імена зіставляються з ID за допомогою внутрішньопроцесного пошуку контактів плагіна.
Підтвердження:
openclaw pairing list zalouseropenclaw pairing approve zalouser <code>
Доступ до груп (необов’язково)
- Типово:
channels.zalouser.groupPolicy = "open"(групи дозволено). Використовуйтеchannels.defaults.groupPolicy, щоб перевизначити типове значення, коли його не задано. - Обмеження через allowlist:
channels.zalouser.groupPolicy = "allowlist"channels.zalouser.groups(ключами мають бути стабільні ID груп; імена за можливості зіставляються з ID під час запуску)channels.zalouser.groupAllowFrom(керує тим, які відправники в дозволених групах можуть запускати бота)
- Заблокувати всі групи:
channels.zalouser.groupPolicy = "disabled". - Майстер налаштування може запитувати allowlist груп.
- Під час запуску OpenClaw зіставляє імена груп/користувачів в allowlist з ID і записує це зіставлення в журнал.
- Зіставлення групового allowlist типово працює лише за ID. Нерозпізнані імена ігноруються для автентифікації, якщо не ввімкнено
channels.zalouser.dangerouslyAllowNameMatching: true. channels.zalouser.dangerouslyAllowNameMatching: true— це аварійний режим сумісності, який знову вмикає зіставлення за змінною назвою групи.- Якщо
groupAllowFromне задано, під час виконання для перевірок групових відправників використовується резервний перехід доallowFrom. - Перевірки відправника застосовуються як до звичайних групових повідомлень, так і до керівних команд (наприклад,
/new,/reset).
Керування згадками в групах
channels.zalouser.groups.<group>.requireMentionвизначає, чи потрібна згадка для відповідей у групі.- Порядок визначення: точний id/назва групи -> нормалізований slug групи ->
*-> типове значення (true). - Це застосовується як до груп у allowlist, так і до відкритого режиму груп.
- Авторизовані керівні команди (наприклад,
/new) можуть обходити вимогу згадки. - Коли групове повідомлення пропускається через обов’язкову згадку, OpenClaw зберігає його як відкладену історію групи й додає до наступного обробленого групового повідомлення.
- Ліміт історії групи типово дорівнює
messages.groupChat.historyLimit(резервне значення50). Його можна перевизначити для кожного облікового запису черезchannels.zalouser.historyLimit.
Кілька облікових записів
Облікові записи зіставляються з профілямиzalouser у стані OpenClaw. Приклад:
Друкування, реакції та підтвердження доставки
- OpenClaw надсилає подію друкування перед відправленням відповіді (best-effort).
- Дія реакції на повідомлення
reactпідтримується дляzalouserу діях каналу.- Використовуйте
remove: true, щоб видалити конкретний emoji реакції з повідомлення. - Семантика реакцій: Reactions
- Використовуйте
- Для вхідних повідомлень, які містять метадані події, OpenClaw надсилає підтвердження доставки й перегляду (best-effort).
Усунення несправностей
Вхід не зберігається:openclaw channels status --probe- Повторний вхід:
openclaw channels logout --channel zalouser && openclaw channels login --channel zalouser
- Використовуйте числові ID в
allowFrom/groupAllowFrom/groupsабо точні імена друзів/груп.
- Видаліть будь-які старі припущення про зовнішній процес
zca. - Тепер канал повністю працює в OpenClaw без зовнішніх бінарних файлів CLI.
Пов’язане
- Огляд каналів — усі підтримувані канали
- Прив’язка — автентифікація приватних повідомлень і сценарій прив’язки
- Групи — поведінка групового чату та керування згадками
- Маршрутизація каналів — маршрутизація сесій для повідомлень
- Безпека — модель доступу та посилення захисту