Statut : expérimental. Cette intégration automatise un compte Zalo personnel viaDocumentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
zca-js natif dans OpenClaw.
Plugin intégré
Zalo Personal est fourni comme Plugin intégré dans les versions actuelles d’OpenClaw ; les builds empaquetés normaux ne nécessitent donc pas d’installation séparée. Si vous utilisez un ancien build ou une installation personnalisée qui exclut Zalo Personal, installez directement le package npm :- Installer via la CLI :
openclaw plugins install @openclaw/zalouser - Version épinglée :
openclaw plugins install @openclaw/zalouser@2026.5.2 - Ou depuis un checkout source :
openclaw plugins install ./path/to/local/zalouser-plugin - Détails : Plugins
zca/openzca n’est requis.
Configuration rapide (débutant)
- Vérifiez que le Plugin Zalo Personal est disponible.
- Les versions OpenClaw empaquetées actuelles l’intègrent déjà.
- Les installations plus anciennes/personnalisées peuvent l’ajouter manuellement avec les commandes ci-dessus.
- Connectez-vous (QR, sur la machine du Gateway) :
openclaw channels login --channel zalouser- Scannez le code QR avec l’application mobile Zalo.
- Activez le canal :
- Redémarrez le Gateway (ou terminez la configuration).
- L’accès DM utilise le jumelage par défaut ; approuvez le code de jumelage au premier contact.
Ce que c’est
- S’exécute entièrement dans le processus via
zca-js. - Utilise des écouteurs d’événements natifs pour recevoir les messages entrants.
- Envoie les réponses directement via l’API JS (texte/média/lien).
- Conçu pour les cas d’usage de « compte personnel » lorsque l’API Zalo Bot n’est pas disponible.
Nommage
L’id de canal estzalouser pour indiquer explicitement que cela automatise un compte utilisateur Zalo personnel (non officiel). Nous réservons zalo à une éventuelle future intégration officielle de l’API Zalo.
Trouver les ID (répertoire)
Utilisez la CLI de répertoire pour découvrir les pairs/groupes et leurs ID :Limites
- Le texte sortant est découpé en segments d’environ 2000 caractères (limites du client Zalo).
- Le streaming est bloqué par défaut.
Contrôle d’accès (DM)
channels.zalouser.dmPolicy prend en charge : pairing | allowlist | open | disabled (par défaut : pairing).
channels.zalouser.allowFrom doit utiliser des ID utilisateur Zalo stables. Il peut aussi référencer des groupes d’accès d’expéditeurs statiques (accessGroup:<name>). Pendant la configuration interactive, les noms saisis peuvent être résolus en ID à l’aide de la recherche de contacts en cours de processus du Plugin.
Si un nom brut reste dans la configuration, le démarrage ne le résout que lorsque channels.zalouser.dangerouslyAllowNameMatching: true est activé. Sans cette option explicite, les vérifications d’expéditeur à l’exécution se font uniquement par ID et les noms bruts sont ignorés pour l’autorisation.
Approuvez via :
openclaw pairing list zalouseropenclaw pairing approve zalouser <code>
Accès aux groupes (facultatif)
- Par défaut :
channels.zalouser.groupPolicy = "open"(groupes autorisés). Utilisezchannels.defaults.groupPolicypour remplacer la valeur par défaut lorsqu’elle n’est pas définie. - Restreindre à une liste d’autorisation avec :
channels.zalouser.groupPolicy = "allowlist"channels.zalouser.groups(les clés doivent être des ID de groupe stables ; les noms sont résolus en ID au démarrage uniquement lorsquechannels.zalouser.dangerouslyAllowNameMatching: trueest activé)channels.zalouser.groupAllowFrom(contrôle quels expéditeurs dans les groupes autorisés peuvent déclencher le bot ; les groupes d’accès d’expéditeurs statiques peuvent être référencés avecaccessGroup:<name>)
- Bloquer tous les groupes :
channels.zalouser.groupPolicy = "disabled". - L’assistant de configuration peut demander des listes d’autorisation de groupes.
- Au démarrage, OpenClaw résout les noms de groupes/utilisateurs dans les listes d’autorisation en ID et journalise la correspondance uniquement lorsque
channels.zalouser.dangerouslyAllowNameMatching: trueest activé. - La correspondance de liste d’autorisation de groupes se fait uniquement par ID par défaut. Les noms non résolus sont ignorés pour l’authentification, sauf si
channels.zalouser.dangerouslyAllowNameMatching: trueest activé. channels.zalouser.dangerouslyAllowNameMatching: trueest un mode de compatibilité de dernier recours qui réactive la résolution de noms mutable au démarrage et la correspondance des noms de groupe à l’exécution.- Si
groupAllowFromn’est pas défini, l’exécution se rabat surallowFrompour les vérifications des expéditeurs de groupe. - Les vérifications d’expéditeur s’appliquent à la fois aux messages de groupe normaux et aux commandes de contrôle (par exemple
/new,/reset).
Garde par mention dans les groupes
channels.zalouser.groups.<group>.requireMentioncontrôle si les réponses de groupe nécessitent une mention.- Ordre de résolution : id/nom de groupe exact -> slug de groupe normalisé ->
*-> valeur par défaut (true). - Cela s’applique à la fois aux groupes sur liste d’autorisation et au mode groupe ouvert.
- Citer un message du bot compte comme une mention implicite pour l’activation de groupe.
- Les commandes de contrôle autorisées (par exemple
/new) peuvent contourner la garde par mention. - Lorsqu’un message de groupe est ignoré parce qu’une mention est requise, OpenClaw l’enregistre comme historique de groupe en attente et l’inclut dans le prochain message de groupe traité.
- La limite d’historique de groupe utilise par défaut
messages.groupChat.historyLimit(repli50). Vous pouvez la remplacer par compte avecchannels.zalouser.historyLimit.
Multi-compte
Les comptes correspondent aux profilszalouser dans l’état d’OpenClaw. Exemple :
Saisie, réactions et accusés de livraison
- OpenClaw envoie un événement de saisie avant d’envoyer une réponse (au mieux).
- L’action de réaction de message
reactest prise en charge pourzalouserdans les actions de canal.- Utilisez
remove: truepour retirer un emoji de réaction spécifique d’un message. - Sémantique des réactions : Réactions
- Utilisez
- Pour les messages entrants qui incluent des métadonnées d’événement, OpenClaw envoie des accusés de livraison + de lecture (au mieux).
Dépannage
La connexion ne persiste pas :openclaw channels status --probe- Reconnexion :
openclaw channels logout --channel zalouser && openclaw channels login --channel zalouser
- Utilisez des ID numériques dans
allowFrom/groupAllowFromet des ID de groupe stables dansgroups. Si vous avez intentionnellement besoin de noms exacts d’amis/groupes, activezchannels.zalouser.dangerouslyAllowNameMatching: true.
- Supprimez toute ancienne hypothèse liée à un processus
zcaexterne. - Le canal s’exécute désormais entièrement dans OpenClaw sans binaires CLI externes.
Associé
- Vue d’ensemble des canaux — tous les canaux pris en charge
- Jumelage — authentification DM et flux de jumelage
- Groupes — comportement des discussions de groupe et garde par mention
- Routage de canal — routage de session pour les messages
- Sécurité — modèle d’accès et renforcement