OpenClaw Zalo Personal Channel
Connect OpenClaw to your personal Zalo account using the unofficial zca-cli tool. Unlike the Zalo Bot Platform integration, this channel lets your AI assistant operate through a real Zalo personal account — with support for group chats, media, and friend lists. Authenticate by scanning a QR code, just like linking a new device.
Zalo Personal Supported Features
Text Messages
Supported
Media & Files
Supported
Reactions
Not Supported
Threads
Not Supported
Voice Messages
Not Supported
Group Chat
Supported
Zalo Personal Prerequisites
- A personal Zalo account (standard account, not an Official Account)
- The zca binary installed and available in your system PATH
- OpenClaw Gateway running and configured
- Zalo mobile app for QR code scanning during login
Zalo Personal Quick Setup
Install the zalouser plugin and zca-cli
Install the OpenClaw plugin with 'openclaw plugins install @openclaw/zalouser'. Then install the zca-cli tool and ensure it's in your PATH. Verify with 'zca --version'.
Login via QR code
Run 'openclaw channels login --channel zalouser' to display a QR code in your terminal. Open the Zalo app on your phone and scan the QR code to authenticate the session.
Configure and start chatting
Add the zalouser channel configuration to ~/.openclaw/openclaw.json with your preferred dmPolicy and groupPolicy. Start the Gateway with 'openclaw start' and send a message to your Zalo account to test.
Zalo Personal Configuration Example
{
"channels": {
"zalouser": {
"enabled": true,
"dmPolicy": "pairing",
"groupPolicy": "open"
}
}
}
Zalo Personal Deep Dive
Architecture Overview
Installing zca-cli
zca --version
QR Code Authentication
# Login
openclaw channels login --channel zalouser
# If login doesn't persist, re-authenticate
openclaw channels logout --channel zalouser
openclaw channels login --channel zalouser
DM Policies
{
"channels": {
"zalouser": {
"dmPolicy": "allowlist",
"allowFrom": ["123456789", "Friend Name"]
}
}
}
Group Chat Management
{
"channels": {
"zalouser": {
"groupPolicy": "allowlist",
"groups": {
"123456789": { "allow": true },
"Work Chat": { "allow": true }
}
}
}
}
Message Handling
Multi-Account Setup
{
"channels": {
"zalouser": {
"enabled": true,
"defaultAccount": "default",
"accounts": {
"work": {
"enabled": true,
"profile": "work"
},
"personal": {
"enabled": true,
"profile": "personal"
}
}
}
}
}
Directory & Discovery
# View your profile
openclaw directory self --channel zalouser
# Search friends
openclaw directory peers list --channel zalouser --query "name"
# Search groups
openclaw directory groups list --channel zalouser --query "work"
Zalo Personal Configuration Reference
| Key | Type | Default | Description |
|---|---|---|---|
| enabled | boolean | false | Enable or disable the Zalo Personal channel |
| dmPolicy | string | "pairing" | Controls who can DM the bot. Options: pairing, allowlist, open, disabled |
| allowFrom | string[] | [] | User IDs or names allowed to message the bot (when dmPolicy is allowlist) |
| groupPolicy | string | "open" | Controls group chat behavior. Options: open, allowlist, disabled |
| groups | object | {} | Map of group IDs or names to permission objects (when groupPolicy is allowlist) |
| defaultAccount | string | "default" | The default zca profile name to use |
| accounts.<id>.enabled | boolean | true | Enable or disable a specific account in multi-account mode |
| accounts.<id>.profile | string | "" | The zca profile name for a specific account |
Enable or disable the Zalo Personal channel
Controls who can DM the bot. Options: pairing, allowlist, open, disabled
User IDs or names allowed to message the bot (when dmPolicy is allowlist)
Controls group chat behavior. Options: open, allowlist, disabled
Map of group IDs or names to permission objects (when groupPolicy is allowlist)
The default zca profile name to use
Enable or disable a specific account in multi-account mode
The zca profile name for a specific account
Zalo Personal Frequently Asked Questions
Zalo Personal Troubleshooting
The zca-cli binary is not installed or not in your system PATH.
The Zalo session may have expired or the initial authentication was incomplete.
groupPolicy may be set to 'disabled' or 'allowlist' without the group being listed.
The zca listen process may not be running, or the session has expired.
Zalo detected unofficial automation on the account.