Regional platforms
Zalo persoonlijk
Status: experimenteel. Deze integratie automatiseert een persoonlijk Zalo-account via native zca-js, in-process, zonder externe CLI-binary.
Installeren
Zalo Personal is een officiële externe Plugin en is niet gebundeld in de kern. Installeer deze vóór gebruik:
openclaw plugins install @openclaw/zalouser- Een versie vastzetten:
openclaw plugins install @openclaw/zalouser@<version> - Vanuit een broncheckout:
openclaw plugins install ./path/to/local/zalouser-plugin - Details: Plugins
Snel instellen
- Installeer de Plugin (hierboven).
- 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", }, },}- Start de Gateway opnieuw (of voltooi de installatie).
- DM-toegang gebruikt standaard koppeling; keur de koppelingscode bij het eerste contact goed.
Wat het is
- Draait volledig in-process via de bibliotheek
zca-js(geen externe binaryzca/openzca). - Gebruikt native eventlisteners (
message,error) om inkomende berichten te ontvangen. - Verstuurt antwoorden rechtstreeks via de JS-API (tekst/media/link).
- Ontworpen voor gebruiksscenario's met een 'persoonlijk account' waarin de Zalo Bot API niet beschikbaar is.
Naamgeving
De kanaal-id is zalouser om duidelijk te maken dat hiermee een persoonlijk Zalo-gebruikersaccount wordt geautomatiseerd (onofficieel). zalo is gereserveerd voor een mogelijke toekomstige officiële Zalo-API-integratie.
ID's vinden (directory)
openclaw directory self --channel zalouseropenclaw directory peers list --channel zalouser --query "name"openclaw directory groups list --channel zalouser --query "work"Limieten
- Uitgaande tekst wordt opgesplitst in delen van 2000 tekens (limiet van de Zalo-client).
- Streaming wordt niet ondersteund.
- ID's van voltooide inkomende berichten worden 30 dagen bewaard, met een maximum van de 1000 meest recente vermeldingen per account.
Duurzaamheid van inkomende berichten
OpenClaw slaat elke onbewerkte zca-js-berichtcallback op voordat deze wordt verwerkt. Berichten in behandeling worden na een herstart van de Gateway hervat vanuit de accountwachtrij en de verwerking blijft per rechtstreeks gesprek of groep geserialiseerd.
De socketlistener zca-js biedt geen ontvangstbevestiging en speelt oude berichten na opnieuw verbinden niet automatisch opnieuw af. De duurzame wachtrij beschermt daarom tegen het lokale crashvenster nadat een callback OpenClaw heeft bereikt; een bericht dat nooit door de socket is afgeleverd, kan hiermee niet worden hersteld. Tombstones voor opnieuw afspelen dienen vooral als beveiliging tegen een herhaalde callback met dezelfde Zalo-bericht-id.
Toegangsbeheer (DM's)
channels.zalouser.dmPolicy: pairing | allowlist | open | disabled (standaard: pairing).
channels.zalouser.allowFrom moet stabiele Zalo-gebruikers-ID's gebruiken. Er kan ook worden verwezen naar statische toegangsgroepen voor afzenders (accessGroup:<name>). Tijdens de interactieve configuratie kunnen ingevoerde namen via de in-process contactzoekfunctie van de Plugin naar ID's worden omgezet.
Als een onbewerkte naam in de configuratie blijft staan, wordt deze bij het opstarten alleen omgezet wanneer channels.zalouser.dangerouslyAllowNameMatching: true is ingeschakeld. Zonder die expliciete inschakeling controleren runtimecontroles voor afzenders uitsluitend ID's en worden onbewerkte namen voor autorisatie genegeerd.
Goedkeuren via:
openclaw pairing list zalouseropenclaw pairing approve zalouser <code>
Groepstoegang (optioneel)
- Standaard:
channels.zalouser.groupPolicy = "allowlist"(groepen vereisen een expliciete vermelding in de toelatingslijst). - Alle groepen openen:
channels.zalouser.groupPolicy = "open". - Alle groepen blokkeren:
channels.zalouser.groupPolicy = "disabled". - Met
groupPolicy = "allowlist":- Sleutels voor
channels.zalouser.groupsmoeten stabiele groeps-ID's zijn; namen worden bij het opstarten alleen naar ID's omgezet wanneerchannels.zalouser.dangerouslyAllowNameMatching: trueis ingeschakeld. channels.zalouser.groupAllowFrombepaalt welke afzenders in toegestane groepen de bot kunnen activeren; metaccessGroup:<name>kan naar statische toegangsgroepen voor afzenders worden verwezen.
- Sleutels voor
- De configuratiewizard kan om groepstoelatingslijsten vragen.
- Overeenkomsten met de groepstoelatingslijst worden standaard uitsluitend op basis van ID bepaald. Niet-omgezette namen worden voor autorisatie genegeerd, tenzij
channels.zalouser.dangerouslyAllowNameMatching: trueis ingeschakeld. channels.zalouser.dangerouslyAllowNameMatching: trueis een noodcompatibiliteitsmodus die veranderlijke naamomzetting bij het opstarten en runtimevergelijking van groepsnamen opnieuw inschakelt.groupAllowFromvalt voor normale groepsberichten niet terug opallowFrom: als deze waarde voor een groep op de toelatingslijst leeg blijft, wordt die groep voor elke afzender geopend. Geautoriseerde beheeropdrachten (bijvoorbeeld/new) vormen de uitzondering; controles van de afzender van opdrachten vallen terug opallowFromwanneergroupAllowFromleeg is.
Voorbeeld:
{ channels: { zalouser: { groupPolicy: "allowlist", groupAllowFrom: ["1471383327500481391"], groups: { "123456789": { enabled: true }, "Work Chat": { enabled: true }, }, }, },}Vermeldingsvereiste voor groepen
channels.zalouser.groups.<group>.requireMentionbepaalt of voor groepsantwoorden een vermelding vereist is.- Volgorde van omzetting: groeps-id -> alias
group:<id>-> groepsnaam/slug (kandidaten op basis van namen zijn alleen van toepassing wanneerdangerouslyAllowNameMatching: true) ->*-> standaard (true). - Geldt zowel voor groepen op de toelatingslijst als voor de open groepsmodus.
- Het citeren van een botbericht geldt als een impliciete vermelding voor groepsactivering.
- Geautoriseerde beheeropdrachten (bijvoorbeeld
/new) kunnen de vermeldingsvereiste omzeilen. - Wanneer een groepsbericht wordt overgeslagen omdat een vermelding vereist is, slaat OpenClaw het op als groepsgeschiedenis in behandeling en neemt het op in het volgende verwerkte groepsbericht.
- Limiet voor groepsgeschiedenis:
channels.zalouser.historyLimit, vervolgensmessages.groupChat.historyLimit, en daarna een terugvalwaarde van50.
Voorbeeld:
{ channels: { zalouser: { groupPolicy: "allowlist", groups: { "*": { enabled: true, requireMention: true }, "Work Chat": { enabled: true, requireMention: false }, }, }, },}Meerdere accounts
Accounts worden toegewezen aan zalouser-profielen in de OpenClaw-status. Voorbeeld:
{ channels: { zalouser: { enabled: true, defaultAccount: "default", accounts: { work: { enabled: true, profile: "work" }, }, }, },}Omgevingsvariabelen
Profielselectie kan ook uit omgevingsvariabelen komen:
| Variabele | Doel |
|---|---|
ZALOUSER_PROFILE |
Profielnaam die wordt gebruikt wanneer geen profile is ingesteld in de kanaal- of accountconfiguratie. |
ZCA_PROFILE |
Verouderde terugvalwaarde, alleen gebruikt wanneer ZALOUSER_PROFILE niet is ingesteld. |
Profielnamen selecteren de opgeslagen Zalo-inloggegevens in de OpenClaw-status. Volgorde van omzetting:
- Expliciete
profilein de configuratie. ZALOUSER_PROFILE.ZCA_PROFILE.- De account-id voor niet-standaardaccounts, of
defaultvoor het standaardaccount.
Voor configuraties met meerdere accounts verdient het de voorkeur om profile voor elk account in de configuratie in te stellen, zodat één omgevingsvariabele er niet toe leidt dat meerdere accounts dezelfde inlogsessie delen.
Typen, reacties en ontvangstbevestigingen
- OpenClaw verzendt een typegebeurtenis voordat een antwoord wordt verstuurd (naar beste vermogen).
- De berichtreactieactie
reactwordt ondersteund voorzalouserin kanaalacties.- Gebruik
remove: trueom een specifieke reactie-emoji van een bericht te verwijderen. - Semantiek van reacties: Reacties
- Gebruik
- Voor inkomende berichten die gebeurtenismetadata bevatten, verzendt OpenClaw bevestigingen voor afgeleverd + gezien (naar beste vermogen).
Probleemoplossing
Inloggen blijft niet behouden:
openclaw channels status --probe- Opnieuw inloggen:
openclaw channels logout --channel zalouser && openclaw channels login --channel zalouser
Naam in toelatingslijst/groepsnaam is niet omgezet:
- Gebruik numerieke ID's in
allowFrom/groupAllowFromen stabiele groeps-ID's ingroups. Als je bewust exacte namen van vrienden/groepen nodig hebt, schakel jechannels.zalouser.dangerouslyAllowNameMatching: truein.
Geüpgraded vanaf een oude externe zca-installatie/installatie op basis van de CLI:
- Verwijder alle aannames over een extern
zca-proces; het kanaal draait nu volledig in-process viazca-js, zonder externe CLI-binary.
Gerelateerd
- Overzicht van kanalen - alle ondersteunde kanalen
- Koppeling - DM-authenticatie en koppelingsflow
- Groepen - gedrag van groepschats en vermeldingsvereiste
- Kanaalroutering - sessieroutering voor berichten
- Beveiliging - toegangsmodel en beveiliging aanscherpen