Платформы обмена сообщениями

Zalo Personal

Статус: экспериментальный. Эта интеграция автоматизирует личный аккаунт Zalo через нативный zca-js внутри OpenClaw.

Предупреждение: Это неофициальная интеграция и может привести к блокировке/бану аккаунта. Используйте на свой страх и риск.

Требуется плагин

Zalo Personal поставляется как плагин и не входит в базовую установку.

  • Установка через CLI: openclaw plugins install @openclaw/zalouser
  • Или из исходного кода: openclaw plugins install ./extensions/zalouser
  • Подробности: Плагины

Внешний бинарный файл zca/openzca CLI не требуется.

Быстрая настройка (для начинающих)

  1. Установите плагин (см. выше).
  2. Войдите (QR-код, на машине с Gateway):
    • openclaw channels login --channel zalouser
    • Отсканируйте QR-код в мобильном приложении Zalo.
  3. Включите канал:
{
  channels: {
    zalouser: {
      enabled: true,
      dmPolicy: "pairing",
    },
  },
}
  1. Перезапустите Gateway (или завершите первоначальную настройку).
  2. Доступ к личным сообщениям по умолчанию требует сопряжения; подтвердите код сопряжения при первом контакте.

Что это такое

  • Полностью работает внутри процесса через 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 zalouser
  • openclaw 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-бинарников.

ZaloСопряжение