Regional platforms

Zalo persoonlijk

Status: experimenteel. Deze integratie automatiseert een **persoonlijk Zalo-account** via native `zca-js` binnen OpenClaw.

Status: experimenteel. Deze integratie automatiseert een persoonlijk Zalo-account via native zca-js binnen OpenClaw.

Gebundelde Plugin

Zalo Personal wordt als gebundelde Plugin meegeleverd in huidige OpenClaw-releases, dus normale gepackageerde builds hebben geen afzonderlijke 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)

  1. Zorg dat de Zalo Personal-Plugin beschikbaar is.
    • Huidige gepackageerde OpenClaw-releases bundelen deze al.
    • Oudere/aangepaste installaties kunnen deze handmatig toevoegen met de bovenstaande commando's.
  2. Inloggen (QR, op de Gateway-machine):
    • openclaw channels login --channel zalouser
    • Scan de QR-code met de mobiele Zalo-app.
  3. Schakel het kanaal in:
json5
{  channels: {    zalouser: {      enabled: true,      dmPolicy: "pairing",    },  },}
  1. Herstart de Gateway (of rond de setup af).
  2. DM-toegang gebruikt standaard koppelen; keur de koppelcode 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

De 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:

bash
openclaw directory self --channel zalouseropenclaw directory peers list --channel zalouser --query "name"openclaw directory groups list --channel zalouser --query "work"

Limieten

  • Uitgaande tekst wordt opgedeeld in stukken van ongeveer 2000 tekens (limieten van de Zalo-client).
  • 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. Het kan ook verwijzen naar statische afzenderstoegangsgroepen (accessGroup:<name>). Tijdens interactieve setup kunnen ingevoerde namen worden omgezet naar ID's via de in-process contactlookup van de Plugin.

Als er een ruwe naam in de configuratie blijft staan, wordt die bij het opstarten alleen omgezet wanneer channels.zalouser.dangerouslyAllowNameMatching: true is ingeschakeld. Zonder die opt-in zijn runtime-afzendercontroles uitsluitend op ID gebaseerd en worden ruwe namen genegeerd voor autorisatie.

Goedkeuren via:

  • openclaw pairing list zalouser
  • openclaw pairing approve zalouser <code>

Groepstoegang (optioneel)

  • Standaard: channels.zalouser.groupPolicy = "open" (groepen toegestaan). Gebruik channels.defaults.groupPolicy om de standaardwaarde 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 het opstarten alleen naar ID's omgezet wanneer channels.zalouser.dangerouslyAllowNameMatching: true is ingeschakeld)
    • channels.zalouser.groupAllowFrom (bepaalt welke afzenders in toegestane groepen de bot kunnen activeren; statische afzenderstoegangsgroepen kunnen worden gerefereerd met accessGroup:<name>)
  • Alle groepen blokkeren: channels.zalouser.groupPolicy = "disabled".
  • De configuratiewizard kan vragen om allowlists voor groepen.
  • Bij het opstarten zet OpenClaw groeps-/gebruikersnamen in allowlists om naar ID's en logt de mapping alleen wanneer channels.zalouser.dangerouslyAllowNameMatching: true is ingeschakeld.
  • Matching van groeps-allowlists is standaard uitsluitend op ID gebaseerd. Niet-opgeloste namen worden genegeerd voor auth, tenzij channels.zalouser.dangerouslyAllowNameMatching: true is ingeschakeld.
  • channels.zalouser.dangerouslyAllowNameMatching: true is een break-glass-compatibiliteitsmodus die veranderlijke naamresolutie bij het opstarten en runtime-matching op groepsnaam opnieuw inschakelt.
  • Als groupAllowFrom niet is ingesteld, valt runtime terug op allowFrom voor afzendercontroles in groepen.
  • Afzendercontroles gelden voor zowel normale groepsberichten als controlecommando's (bijvoorbeeld /new, /reset).

Voorbeeld:

json5
{  channels: {    zalouser: {      groupPolicy: "allowlist",      groupAllowFrom: ["1471383327500481391"],      groups: {        "123456789": { allow: true },        "Work Chat": { allow: true },      },    },  },}

Gate voor groepsvermeldingen

  • channels.zalouser.groups.<group>.requireMention bepaalt of groepsantwoorden een vermelding vereisen.
  • Resolutievolgorde: exacte groeps-id/naam -> genormaliseerde groepsslug -> * -> standaard (true).
  • Dit geldt zowel voor groepen in de allowlist als voor de open groepsmodus.
  • Het citeren van een botbericht telt als een impliciete vermelding voor groepsactivatie.
  • Geautoriseerde controlecommando's (bijvoorbeeld /new) kunnen de vermeldingsgate omzeilen.
  • Wanneer een groepsbericht wordt overgeslagen omdat een vermelding vereist is, slaat OpenClaw het op als wachtende groepsgeschiedenis en neemt het op in het volgende verwerkte groepsbericht.
  • De limiet voor groepsgeschiedenis is standaard messages.groupChat.historyLimit (fallback 50). Je kunt dit per account overschrijven met channels.zalouser.historyLimit.

Voorbeeld:

json5
{  channels: {    zalouser: {      groupPolicy: "allowlist",      groups: {        "*": { allow: true, requireMention: true },        "Work Chat": { allow: true, requireMention: false },      },    },  },}

Meerdere accounts

Accounts mappen naar zalouser-profielen in de OpenClaw-status. Voorbeeld:

json5
{  channels: {    zalouser: {      enabled: true,      defaultAccount: "default",      accounts: {        work: { enabled: true, profile: "work" },      },    },  },}

Typen, reacties en ontvangstbevestigingen

  • OpenClaw stuurt een typgebeurtenis voordat een antwoord wordt verzonden (best-effort).
  • De berichtreactieactie react wordt ondersteund voor zalouser in kanaalacties.
    • Gebruik remove: true om een specifieke reactie-emoji uit een bericht te verwijderen.
    • Reactiesemantiek: Reacties
  • Voor inkomende berichten die eventmetadata bevatten, stuurt OpenClaw afgeleverd- en gezien-bevestigingen (best-effort).

Problemen oplossen

Inloggen blijft niet behouden:

  • openclaw channels status --probe
  • Opnieuw inloggen: openclaw channels logout --channel zalouser && openclaw channels login --channel zalouser

Allowlist-/groepsnaam is niet omgezet:

  • Gebruik numerieke ID's in allowFrom/groupAllowFrom en stabiele groeps-ID's in groups. Als je bewust exacte vriend-/groepsnamen nodig hebt, schakel dan channels.zalouser.dangerouslyAllowNameMatching: true in.

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

Was this useful?