#7142: Add Free Zalo Personal Channel Plugin Using zca-js
docs
This PR introduces a new Zalo Personal channel plugin that uses the open-source zca-js library instead of the paid zca-cli. The existing zalouser plugin requires the commercial zca-cli, which costs around $130 USD per machine/account. I wanted to use Zalo integration but found that price too expensive for a single machine or account, so I decided to create this free alternative using zca-js.
This new plugin, called zalouser-free, provides the same functionality for connecting personal Zalo accounts but uses the free and open-source zca-js library as the underlying implementation.
Changes Made
• Added zalouser-free plugin in the extensions/zalouser-free directory
• Implemented all essential features equivalent to the original zalouser plugin:
• QR code login and session persistence
• Send/receive text messages
• Direct messages and group messages
• Added proper configuration schema and documentation
• Included access control options (whitelist, mention, etc.)
Benefits
• Completely free to use (no paid dependencies)
• Open source implementation using zca-js
• Lower barrier to entry for users wanting to integrate Zalo
Testing
The plugin has been tested and verified to work with:
• QR code login and authentication
• Normal message sending and receiving
• Session persistence across restarts
• Multi-account support
Motivation
I wanted to use Zalo integration in OpenClaw but found the original zalouser plugin's requirement for zca-cli too expensive at approximately $130 USD per machine or account. This PR provides a free alternative that maintains the same basic functionality.
<!-- greptile_comment -->
<h2>Greptile Overview</h2>
<h3>Greptile Summary</h3>
This PR adds a new `zalouser-free` extension that integrates Zalo Personal accounts via the free/unofficial `zca-js` library (QR login + session persistence, basic message send/receive, access control) along with onboarding hooks and docs entries under `docs/channels` and `docs/plugins`.
The plugin follows the existing extension pattern (`extensions/*/index.ts` registering a channel plugin) and introduces a session manager to persist credentials under `~/.openclaw/zalouser-free/sessions.json`, then dispatches inbound messages through the OpenClaw channel routing/session/reply pipeline.
<h3>Confidence Score: 2/5</h3>
- This PR is not safe to merge as-is due to a couple of high-likelihood routing/runtime issues in message dispatch and receipt sending.
- Score is reduced because `peer.kind` is hardcoded to `group` (breaking DM routing), `msg.raw` is accessed unsafely, and the receipt APIs (`sendSeenEvent`) appear to be called with incorrect arguments. There are also configuration/schema mismatches that can lead to confusing setup and non-functional onboarding status checks.
- extensions/zalouser-free/src/channel.ts, extensions/zalouser-free/src/session-manager.ts, extensions/zalouser-free/openclaw.plugin.json, extensions/zalouser-free/src/onboarding.ts, extensions/zalouser-free/package.json
<!-- greptile_other_comments_section -->
<sub>(2/5) Greptile learns from your feedback when you react with thumbs up/down!</sub>
<!-- /greptile_comment -->
Most Similar PRs
#14551: docs(zalouser): add OpenZCA as free alternative to zca-cli
by darkamenosa · 2026-02-12
77.7%
#22308: feat(zulip): add Zulip channel plugin
by emadomedher · 2026-02-21
73.0%
#15051: feat: Zulip channel plugin with concurrent message processing
by FtlC-ian · 2026-02-12
71.2%
#9477: feat(qqbot): add QQ Bot channel extension
by sliverp · 2026-02-05
68.1%
#19030: feat(simplex): add SimpleX Chat channel plugin
by Bladerunner-hue · 2026-02-17
67.3%
#22260: feat(extensions/deltachat): add Delta.Chat channel extension
by alanz · 2026-02-20
67.1%
#13576: P2P Chia blockchain wallet monitoring
by Koba42Corp · 2026-02-10
67.0%
#9594: feat: add SimpleX messaging channel
by dangoldbj · 2026-02-05
66.8%
#12619: Add Synology Chat channel integration
by MikeWang0316tw · 2026-02-09
66.7%
#21015: # feat(xmpp): Complete XMPP Channel Implementation
by toughworm · 2026-02-19
66.2%