Zalo Personnel
Statut : expérimental. Cette intégration automatise un compte Zalo personnel via zca-js natif à l'intérieur d'OpenClaw.
Avertissement : Il s'agit d'une intégration non officielle et peut entraîner une suspension/ban du compte. Utilisez à vos propres risques.
Plugin requis
Zalo Personnel est fourni sous forme de plugin et n'est pas inclus dans l'installation de base.
- Installation via CLI :
openclaw plugins install @openclaw/zalouser - Ou depuis un dépôt source :
openclaw plugins install ./extensions/zalouser - Détails : Plugins
Aucun binaire CLI externe zca/openzca n'est requis.
Configuration rapide (débutant)
- Installez le plugin (voir ci-dessus).
- Connectez-vous (QR, sur la machine de la Gateway) :
openclaw channels login --channel zalouser- Scannez le code QR avec l'application mobile Zalo.
- Activez le canal :
{
channels: {
zalouser: {
enabled: true,
dmPolicy: "pairing",
},
},
}
- Redémarrez la Gateway (ou terminez l'intégration).
- L'accès en MP est par défaut en mode appairage ; approuvez le code d'appairage au premier contact.
Ce que c'est
- Fonctionne entièrement en 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" où l'API Bot Zalo n'est pas disponible.
Nommage
L'identifiant du canal est zalouser pour indiquer explicitement qu'il automatise un compte utilisateur Zalo personnel (non officiel). Nous réservons zalo pour une future intégration potentielle de l'API officielle Zalo.
Trouver les identifiants (annuaire)
Utilisez le CLI d'annuaire pour découvrir les pairs/groupes et leurs identifiants :
openclaw directory self --channel zalouser
openclaw directory peers list --channel zalouser --query "name"
openclaw directory groups list --channel zalouser --query "work"
Limites
- Le texte sortant est découpé en morceaux d'environ 2000 caractères (limites du client Zalo).
- Le streaming est bloqué par défaut.
Contrôle d'accès (MP)
channels.zalouser.dmPolicy prend en charge : pairing | allowlist | open | disabled (par défaut : pairing). channels.zalouser.allowFrom accepte des identifiants ou noms d'utilisateur. Pendant l'intégration, les noms sont résolus en identifiants en utilisant la recherche de contacts en processus du plugin. Approuvez via :
openclaw pairing list zalouseropenclaw pairing approve zalouser <code>
Accès aux groupes (optionnel)
- 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 autorisée avec :
channels.zalouser.groupPolicy = "allowlist"channels.zalouser.groups(les clés sont des identifiants ou noms de groupe)
- Bloquer tous les groupes :
channels.zalouser.groupPolicy = "disabled". - L'assistant de configuration peut demander les listes autorisées de groupes.
- Au démarrage, OpenClaw résout les noms de groupes/utilisateurs dans les listes autorisées en identifiants et enregistre le mappage ; les entrées non résolues sont conservées telles qu'elles sont saisies.
Exemple :
{
channels: {
zalouser: {
groupPolicy: "allowlist",
groups: {
"123456789": { allow: true },
"Work Chat": { allow: true },
},
},
},
}
Gestion des mentions dans les groupes
channels.zalouser.groups.<group>.requireMentioncontrôle si les réponses dans un groupe nécessitent une mention.- Ordre de résolution : identifiant/nom exact du groupe -> slug de groupe normalisé ->
*-> valeur par défaut (true). - Cela s'applique à la fois aux groupes en liste autorisée et au mode groupe ouvert.
Exemple :
{
channels: {
zalouser: {
groupPolicy: "allowlist",
groups: {
"*": { allow: true, requireMention: true },
"Work Chat": { allow: true, requireMention: false },
},
},
},
}
Multi-compte
Les comptes sont mappés aux profils zalouser dans l'état d'OpenClaw. Exemple :
{
channels: {
zalouser: {
enabled: true,
defaultAccount: "default",
accounts: {
work: { enabled: true, profile: "work" },
},
},
},
}
Indicateur de saisie, réactions et accusés de réception
- OpenClaw envoie un événement de saisie avant d'envoyer une réponse (au mieux).
- L'action de réaction aux messages
reactest prise en charge pourzalouserdans les actions de canal.- Utilisez
remove: truepour supprimer un émoji 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 réception de livraison et de lecture (au mieux).
Dépannage
La connexion ne persiste pas :
openclaw channels status --probe- Reconnectez-vous :
openclaw channels logout --channel zalouser && openclaw channels login --channel zalouser
Le nom dans la liste autorisée/du groupe n'a pas été résolu :
- Utilisez des identifiants numériques dans
allowFrom/groups, ou les noms exacts d'amis/groupes.
Mis à niveau depuis une ancienne configuration basée sur CLI :
- Supprimez toute ancienne hypothèse de processus externe
zca. - Le canal s'exécute désormais entièrement dans OpenClaw sans binaires CLI externes.