Regional platforms
Zalo persoonlijk
Status: experimenteel. Deze integratie automatiseert een persoonlijk Zalo-account via native zca-js binnen OpenClaw.
Gebundelde Plugin
Zalo Personal wordt geleverd als gebundelde Plugin in huidige OpenClaw-releases, dus normale pakketbuilds hebben geen aparte installatie nodig.
Als je een oudere build gebruikt of een aangepaste installatie die Zalo Personal uitsluit, installeer dan het npm-pakket rechtstreeks:
- Installeren via CLI:
openclaw plugins install @openclaw/zalouser - Vastgezette versie:
openclaw plugins install @openclaw/[email protected] - Of vanuit een source-checkout:
openclaw plugins install ./path/to/local/zalouser-plugin - Details: Plugins
Er is geen externe zca/openzca CLI-binary vereist.
Snelle setup (beginner)
- Zorg dat de Zalo Personal-Plugin beschikbaar is.
- Huidige verpakte OpenClaw-releases bundelen deze al.
- Oudere/aangepaste installaties kunnen deze handmatig toevoegen met de bovenstaande opdrachten.
- Log in (QR, op de Gateway-machine):
openclaw channels login --channel zalouser- Scan de QR-code met de mobiele Zalo-app.
- Schakel het kanaal in:
{
channels: {
zalouser: {
enabled: true,
dmPolicy: "pairing",
},
},
}
- Herstart de Gateway (of rond de setup af).
- DM-toegang gebruikt standaard koppeling; keur de koppelingscode goed bij het eerste contact.
Wat het is
- Draait volledig in-process via
zca-js. - Gebruikt native eventlisteners om inkomende berichten te ontvangen.
- Stuurt antwoorden rechtstreeks via de JS-API (tekst/media/link).
- Ontworpen voor gebruikssituaties met een "persoonlijk account" waarin de Zalo Bot API niet beschikbaar is.
Naamgeving
Kanaal-id is zalouser om expliciet te maken dat dit een persoonlijk Zalo-gebruikersaccount automatiseert (onofficieel). We houden zalo gereserveerd voor een mogelijke toekomstige officiële Zalo API-integratie.
ID's vinden (directory)
Gebruik de directory-CLI om peers/groepen en hun ID's te ontdekken:
openclaw directory self --channel zalouser
openclaw directory peers list --channel zalouser --query "name"
openclaw directory groups list --channel zalouser --query "work"
Limieten
- Uitgaande tekst wordt opgesplitst in stukken van ~2000 tekens (Zalo-clientlimieten).
- Streaming is standaard geblokkeerd.
Toegangscontrole (DM's)
channels.zalouser.dmPolicy ondersteunt: pairing | allowlist | open | disabled (standaard: pairing).
channels.zalouser.allowFrom moet stabiele Zalo-gebruikers-ID's gebruiken. Tijdens interactieve setup kunnen ingevoerde namen worden omgezet naar ID's met de in-process contactlookup van de Plugin.
Als een ruwe naam in de configuratie blijft staan, lost startup deze alleen op wanneer channels.zalouser.dangerouslyAllowNameMatching: true is ingeschakeld. Zonder die opt-in zijn runtime-afzendercontroles alleen op ID gebaseerd en worden ruwe namen genegeerd voor autorisatie.
Goedkeuren via:
openclaw pairing list zalouseropenclaw pairing approve zalouser <code>
Groepstoegang (optioneel)
- Standaard:
channels.zalouser.groupPolicy = "open"(groepen toegestaan). Gebruikchannels.defaults.groupPolicyom de standaard te overschrijven wanneer deze niet is ingesteld. - Beperk tot een allowlist met:
channels.zalouser.groupPolicy = "allowlist"channels.zalouser.groups(sleutels moeten stabiele groeps-ID's zijn; namen worden bij startup alleen naar ID's omgezet wanneerchannels.zalouser.dangerouslyAllowNameMatching: trueis ingeschakeld)channels.zalouser.groupAllowFrom(bepaalt welke afzenders in toegestane groepen de bot kunnen activeren)
- Blokkeer alle groepen:
channels.zalouser.groupPolicy = "disabled". - De configuratiewizard kan om groeps-allowlists vragen.
- Bij startup zet OpenClaw groeps-/gebruikersnamen in allowlists om naar ID's en logt de mapping alleen wanneer
channels.zalouser.dangerouslyAllowNameMatching: trueis ingeschakeld. - Groeps-allowlistmatching is standaard alleen op ID gebaseerd. Niet-opgeloste namen worden genegeerd voor autorisatie, tenzij
channels.zalouser.dangerouslyAllowNameMatching: trueis ingeschakeld. channels.zalouser.dangerouslyAllowNameMatching: trueis een noodcompatibiliteitsmodus die veranderlijke startup-naamresolutie en runtime-groepsnaammatching opnieuw inschakelt.- Als
groupAllowFromniet is ingesteld, valt runtime terug opallowFromvoor groepsafzendercontroles. - Afzendercontroles zijn van toepassing op zowel normale groepsberichten als controleopdrachten (bijvoorbeeld
/new,/reset).
Voorbeeld:
{
channels: {
zalouser: {
groupPolicy: "allowlist",
groupAllowFrom: ["1471383327500481391"],
groups: {
"123456789": { allow: true },
"Work Chat": { allow: true },
},
},
},
}
Groepsvermelding-gating
channels.zalouser.groups.<group>.requireMentionbepaalt of groepsantwoorden een vermelding vereisen.- Resolutievolgorde: exacte groeps-id/naam -> genormaliseerde groepsslug ->
*-> standaard (true). - Dit geldt voor zowel allowlist-groepen als open groepsmodus.
- Het citeren van een botbericht telt als een impliciete vermelding voor groepsactivering.
- Geautoriseerde controleopdrachten (bijvoorbeeld
/new) kunnen vermelding-gating omzeilen. - Wanneer een groepsbericht wordt overgeslagen omdat een vermelding vereist is, slaat OpenClaw dit op als wachtende groepsgeschiedenis en neemt het dit op in het volgende verwerkte groepsbericht.
- De limiet voor groepsgeschiedenis is standaard
messages.groupChat.historyLimit(fallback50). Je kunt dit per account overschrijven metchannels.zalouser.historyLimit.
Voorbeeld:
{
channels: {
zalouser: {
groupPolicy: "allowlist",
groups: {
"*": { allow: true, requireMention: true },
"Work Chat": { allow: true, requireMention: false },
},
},
},
}
Meerdere accounts
Accounts worden gekoppeld aan zalouser-profielen in de OpenClaw-status. Voorbeeld:
{
channels: {
zalouser: {
enabled: true,
defaultAccount: "default",
accounts: {
work: { enabled: true, profile: "work" },
},
},
},
}
Typen, reacties en bezorgbevestigingen
- OpenClaw stuurt een type-event voordat een antwoord wordt verzonden (best-effort).
- Berichtreactieactie
reactwordt ondersteund voorzalouserin kanaalacties.- Gebruik
remove: trueom een specifieke reactie-emoji uit een bericht te verwijderen. - Reactiesemantiek: Reacties
- Gebruik
- Voor inkomende berichten die eventmetadata bevatten, stuurt OpenClaw bezorgd- + gezien-bevestigingen (best-effort).
Probleemoplossing
Login blijft niet behouden:
openclaw channels status --probe- Opnieuw inloggen:
openclaw channels logout --channel zalouser && openclaw channels login --channel zalouser
Allowlist-/groepsnaam is niet opgelost:
- Gebruik numerieke ID's in
allowFrom/groupAllowFromen stabiele groeps-ID's ingroups. Als je bewust exacte vriend-/groepsnamen nodig hebt, schakel danchannels.zalouser.dangerouslyAllowNameMatching: truein.
Geüpgraded vanaf oude CLI-gebaseerde setup:
- Verwijder alle oude aannames over externe
zca-processen. - Het kanaal draait nu volledig in OpenClaw zonder externe CLI-binaries.
Gerelateerd
- Kanalenoverzicht — alle ondersteunde kanalen
- Koppeling — DM-authenticatie en koppelingsflow
- Groepen — groepschatgedrag en vermelding-gating
- Kanaalroutering — sessieroutering voor berichten
- Beveiliging — toegangsmodel en hardening