Zalo Personal
Статус: экспериментальный. Эта интеграция автоматизирует личный аккаунт Zalo через нативный zca-js внутри OpenClaw.
Предупреждение: Это неофициальная интеграция и может привести к блокировке/бану аккаунта. Используйте на свой страх и риск.
Требуется плагин
Zalo Personal поставляется как плагин и не входит в базовую установку.
- Установка через CLI:
openclaw plugins install @openclaw/zalouser - Или из исходного кода:
openclaw plugins install ./extensions/zalouser - Подробности: Плагины
Внешний бинарный файл zca/openzca CLI не требуется.
Быстрая настройка (для начинающих)
- Установите плагин (см. выше).
- Войдите (QR-код, на машине с Gateway):
openclaw channels login --channel zalouser- Отсканируйте QR-код в мобильном приложении Zalo.
- Включите канал:
{
channels: {
zalouser: {
enabled: true,
dmPolicy: "pairing",
},
},
}
- Перезапустите Gateway (или завершите первоначальную настройку).
- Доступ к личным сообщениям по умолчанию требует сопряжения; подтвердите код сопряжения при первом контакте.
Что это такое
- Полностью работает внутри процесса через
zca-js. - Использует нативные слушатели событий для получения входящих сообщений.
- Отправляет ответы напрямую через JS API (текст/медиа/ссылки).
- Предназначен для сценариев использования личного аккаунта, где официальный Zalo Bot API недоступен.
Именование
Идентификатор канала — zalouser, чтобы явно указать, что это автоматизация личного аккаунта пользователя Zalo (неофициальная). Мы оставляем zalo зарезервированным для потенциальной будущей официальной интеграции с Zalo API.
Поиск ID (справочник)
Используйте CLI справочника для поиска пользователей/групп и их ID:
openclaw directory self --channel zalouser
openclaw directory peers list --channel zalouser --query "name"
openclaw directory groups list --channel zalouser --query "work"
Ограничения
- Исходящий текст разбивается на части по ~2000 символов (ограничения клиента Zalo).
- Потоковая передача заблокирована по умолчанию.
Контроль доступа (личные сообщения)
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, чтобы переопределить значение по умолчанию, если оно не задано. - Ограничьте доступ белым списком с помощью:
channels.zalouser.groupPolicy = "allowlist"channels.zalouser.groups(ключи — это ID групп или их названия)
- Заблокировать все группы:
channels.zalouser.groupPolicy = "disabled". - Мастер настройки может запросить белые списки групп.
- При запуске OpenClaw преобразует имена групп/пользователей в белых списках в ID и логирует соответствие; нераспознанные записи сохраняются как введённые.
Пример:
{
channels: {
zalouser: {
groupPolicy: "allowlist",
groups: {
"123456789": { allow: true },
"Work Chat": { allow: true },
},
},
},
}
Условие ответа по упоминанию в группе
channels.zalouser.groups.<group>.requireMentionопределяет, требуется ли для ответов в группе упоминание бота.- Порядок разрешения: точный ID/название группы -> нормализованный слаг группы ->
*-> значение по умолчанию (true). - Применяется как к группам в белом списке, так и в режиме открытых групп.
Пример:
{
channels: {
zalouser: {
groupPolicy: "allowlist",
groups: {
"*": { allow: true, requireMention: true },
"Work Chat": { allow: true, requireMention: false },
},
},
},
}
Мультиаккаунтность
Аккаунты сопоставляются с профилями zalouser в состоянии OpenClaw. Пример:
{
channels: {
zalouser: {
enabled: true,
defaultAccount: "default",
accounts: {
work: { enabled: true, profile: "work" },
},
},
},
}
Индикатор набора, реакции и подтверждения доставки
- OpenClaw отправляет событие "печатает" перед отправкой ответа (по возможности).
- Действие реакции на сообщение
reactподдерживается дляzalouserв действиях канала.- Используйте
remove: true, чтобы убрать конкретную эмодзи-реакцию с сообщения. - Семантика реакций: Реакции
- Используйте
- Для входящих сообщений, которые включают метаданные событий, OpenClaw отправляет подтверждения о доставке и прочтении (по возможности).
Устранение неполадок
Вход не сохраняется:
openclaw channels status --probe- Повторный вход:
openclaw channels logout --channel zalouser && openclaw channels login --channel zalouser
Имя в белом списке/группе не распозналось:
- Используйте числовые ID в
allowFrom/groupsили точные имена друзей/групп.
Обновление со старой CLI-настройки:
- Удалите все предположения о старом внешнем процессе
zca. - Теперь канал работает полностью внутри OpenClaw без внешних CLI-бинарников.