Zalo Personal (no oficial)
Estado: experimental. Esta integración automatiza una cuenta personal de Zalo mediantezca-js nativo dentro de OpenClaw.
Advertencia: Esta es una integración no oficial y puede provocar la suspensión o el bloqueo de la cuenta. Úsela bajo su propia responsabilidad.
Plugin incluido
Zalo Personal se incluye como un plugin integrado en las versiones actuales de OpenClaw, por lo que las compilaciones empaquetadas normales no necesitan una instalación separada. Si usa una compilación anterior o una instalación personalizada que excluye Zalo Personal, instálelo manualmente:- Instalar mediante CLI:
openclaw plugins install @openclaw/zalouser - O desde una extracción del código fuente:
openclaw plugins install ./path/to/local/zalouser-plugin - Detalles: Plugins
zca/openzca.
Configuración rápida (principiante)
- Asegúrese de que el plugin de Zalo Personal esté disponible.
- Las versiones empaquetadas actuales de OpenClaw ya lo incluyen.
- Las instalaciones antiguas o personalizadas pueden agregarlo manualmente con los comandos anteriores.
- Inicie sesión (QR, en la máquina Gateway):
openclaw channels login --channel zalouser- Escanee el código QR con la aplicación móvil de Zalo.
- Habilite el canal:
- Reinicie el Gateway (o termine la configuración).
- El acceso por DM usa
pairingde forma predeterminada; apruebe el código de emparejamiento en el primer contacto.
Qué es
- Se ejecuta completamente en proceso mediante
zca-js. - Usa detectores de eventos nativos para recibir mensajes entrantes.
- Envía respuestas directamente mediante la API de JS (texto/medios/enlace).
- Diseñado para casos de uso de “cuenta personal” donde la API de bots de Zalo no está disponible.
Nombres
El id del canal eszalouser para dejar claro que esto automatiza una cuenta personal de usuario de Zalo (no oficial). Mantenemos zalo reservado para una posible integración futura con la API oficial de Zalo.
Buscar IDs (directorio)
Use la CLI del directorio para descubrir contactos/grupos y sus IDs:Límites
- El texto saliente se divide en fragmentos de ~2000 caracteres (límites del cliente de Zalo).
- La transmisión en streaming está bloqueada de forma predeterminada.
Control de acceso (DM)
channels.zalouser.dmPolicy admite: pairing | allowlist | open | disabled (predeterminado: pairing).
channels.zalouser.allowFrom acepta IDs o nombres de usuario. Durante la configuración, los nombres se resuelven a IDs usando la búsqueda de contactos en proceso del plugin.
Apruebe mediante:
openclaw pairing list zalouseropenclaw pairing approve zalouser <code>
Acceso a grupos (opcional)
- Predeterminado:
channels.zalouser.groupPolicy = "open"(grupos permitidos). Usechannels.defaults.groupPolicypara reemplazar el valor predeterminado cuando no esté establecido. - Restrínjalo a una lista de permitidos con:
channels.zalouser.groupPolicy = "allowlist"channels.zalouser.groups(las claves deben ser IDs de grupo estables; los nombres se resuelven a IDs al iniciar cuando es posible)channels.zalouser.groupAllowFrom(controla qué remitentes en los grupos permitidos pueden activar el bot)
- Bloquee todos los grupos:
channels.zalouser.groupPolicy = "disabled". - El asistente de configuración puede solicitar listas de permitidos para grupos.
- Al iniciar, OpenClaw resuelve los nombres de grupo/usuario en las listas de permitidos a IDs y registra la asignación.
- La coincidencia de la lista de permitidos de grupos es solo por ID de forma predeterminada. Los nombres no resueltos se ignoran para la autenticación a menos que
channels.zalouser.dangerouslyAllowNameMatching: trueesté habilitado. channels.zalouser.dangerouslyAllowNameMatching: truees un modo de compatibilidad de emergencia que vuelve a habilitar la coincidencia por nombre de grupo mutable.- Si
groupAllowFromno está establecido, el tiempo de ejecución usaallowFromcomo alternativa para las comprobaciones de remitentes en grupos. - Las comprobaciones de remitentes se aplican tanto a los mensajes normales de grupo como a los comandos de control (por ejemplo,
/new,/reset).
Restricción de menciones en grupos
channels.zalouser.groups.<group>.requireMentioncontrola si las respuestas en grupos requieren una mención.- Orden de resolución: id/nombre exacto del grupo -> slug normalizado del grupo ->
*-> predeterminado (true). - Esto se aplica tanto a los grupos en la lista de permitidos como al modo de grupo abierto.
- Citar un mensaje del bot cuenta como una mención implícita para la activación del grupo.
- Los comandos de control autorizados (por ejemplo,
/new) pueden omitir la restricción de mención. - Cuando se omite un mensaje de grupo porque se requiere mención, OpenClaw lo almacena como historial de grupo pendiente y lo incluye en el siguiente mensaje de grupo procesado.
- El límite del historial de grupo usa de forma predeterminada
messages.groupChat.historyLimit(alternativa:50). Puede reemplazarlo por cuenta conchannels.zalouser.historyLimit.
Varias cuentas
Las cuentas se asignan a perfileszalouser en el estado de OpenClaw. Ejemplo:
Escritura, reacciones y confirmaciones de entrega
- OpenClaw envía un evento de escritura antes de despachar una respuesta (mejor esfuerzo).
- La acción de reacción de mensaje
reactes compatible conzalouseren las acciones del canal.- Use
remove: truepara eliminar un emoji de reacción específico de un mensaje. - Semántica de reacciones: Reacciones
- Use
- Para los mensajes entrantes que incluyen metadatos de evento, OpenClaw envía confirmaciones de entregado + visto (mejor esfuerzo).
Solución de problemas
El inicio de sesión no se mantiene:openclaw channels status --probe- Vuelva a iniciar sesión:
openclaw channels logout --channel zalouser && openclaw channels login --channel zalouser
- Use IDs numéricos en
allowFrom/groupAllowFrom/groups, o nombres exactos de amigos/grupos.
- Elimine cualquier suposición anterior sobre procesos externos de
zca. - El canal ahora se ejecuta completamente dentro de OpenClaw sin binarios externos de CLI.
Relacionado
- Descripción general de los canales — todos los canales compatibles
- Emparejamiento — autenticación por DM y flujo de emparejamiento
- Grupos — comportamiento del chat grupal y restricción de menciones
- Enrutamiento de canales — enrutamiento de sesiones para mensajes
- Seguridad — modelo de acceso y refuerzo