Regional platforms
Zalo
状态:实验性。私信和群聊均已实现;下方的能力表反映了在 Zalo Bot Creator / Marketplace 机器人上验证过的行为。
内置插件
在当前 OpenClaw 版本中,Zalo 作为内置插件提供,因此打包构建无需单独安装。
对于旧版构建或排除了 Zalo 的自定义安装,请直接安装 npm 软件包:
- 安装:
openclaw plugins install @openclaw/zalo - 固定版本:
openclaw plugins install @openclaw/zalo@2026.6.11 - 从本地检出安装:
openclaw plugins install ./path/to/local/zalo-plugin - 详情:插件
快速设置
- 在 https://bot.zaloplatforms.com 创建机器人令牌(登录、创建机器人并配置设置)。令牌为
numeric_id:secret;对于 Marketplace 机器人,可用的运行时令牌可能会出现在机器人的欢迎消息中。 - 设置令牌:可以通过环境变量
ZALO_BOT_TOKEN=...(仅适用于默认账户)设置,也可以在配置中设置。 - 重启 Gateway 网关。
- 首次通过私信联系时批准配对码(默认私信策略为配对)。
最小配置:
{ channels: { zalo: { enabled: true, accounts: { default: { botToken: "12345689:abc-xyz", dmPolicy: "pairing", }, }, }, },}多账户:在 channels.zalo.accounts.<id> 下添加更多条目,每个条目都有自己的 botToken/name。channels.zalo.botToken(扁平结构,不含 accounts)是旧版单账户简写;新配置应优先使用 accounts.<id>.*。
简介
Zalo 是一款面向越南市场的消息应用。其 Bot API 允许 Gateway 网关为 1:1 对话和群聊运行机器人,并以确定性方式将消息路由回 Zalo(模型绝不会选择渠道)。
本页介绍 Zalo Bot Creator / Marketplace 机器人。Zalo Official Account (OA) 机器人属于不同的产品界面,其行为可能不同;本页不予介绍。
工作原理
- 入站消息会连同媒体占位符一起规范化为共享渠道信封。
- 回复始终路由回同一个 Zalo 聊天;不使用引用回复(
replyToMode固定为关闭)。 - 默认使用长轮询(
getUpdates);也可以通过channels.zalo.webhookUrl使用 webhook 模式。 - 群组必须 @提及机器人才能触发;无法按渠道配置此行为。
限制
| 限制 | 值 |
|---|---|
| 出站文本分块大小 | 2000 个字符(Zalo API 限制) |
| 媒体大小(入站/出站) | channels.zalo.mediaMaxMb,默认 5 MB |
| Webhook 请求正文 | 1 MB,读取超时 30 秒 |
| Webhook 速率限制 | 每个路径 + 客户端 IP 每 60 秒 120 个请求,之后返回 HTTP 429 |
| Webhook 重放墓碑 | 30 天,每个账户最多 20,000 个已完成事件(以消息 ID 为键) |
访问控制
私信
channels.zalo.dmPolicy:pairing(默认)|allowlist|open|disabled。- 配对:未知发送者会收到配对码;在获得批准之前,消息将被忽略。配对码会在 1 小时后过期。
openclaw pairing list zaloopenclaw pairing approve zalo <CODE>- 详情:配对
channels.zalo.allowFrom接受数字形式的 Zalo 用户 ID(不支持用户名查询)。open要求配置"*"。
群组
该插件支持群聊(chatTypes: ["direct", "group"]),并通过提及和群组策略进行限制:
channels.zalo.groupPolicy:open|allowlist|disabled。channels.zalo.groupAllowFrom限制哪些发送者 ID 可以在群组中触发机器人;未设置时回退到allowFrom。- 默认解析:配置
channels.zalo后,未设置的groupPolicy会解析为open。如果完全缺少channels.zalo,运行时将以关闭方式失败并采用allowlist。 - 实际使用中报告的注意事项:在某些 Marketplace 机器人设置中,机器人可能根本无法添加到群组。如果遇到此问题,请在机器人的 Zalo Bot Platform 设置中验证;这是平台端限制,并非 OpenClaw 策略。
长轮询与 webhook
- 默认:长轮询(无需公共 URL)。
- Webhook 模式:设置
channels.zalo.webhookUrl和channels.zalo.webhookSecret。- Webhook URL 必须使用 HTTPS。
- Webhook 密钥必须为 8-256 个字符。
- Zalo 通过
X-Bot-Api-Secret-Token请求头发送事件,并使用恒定时间比较进行检查。 - Gateway 网关 HTTP 在
channels.zalo.webhookPath处理 webhook 请求(默认为 webhook URL 的路径)。 - 请求必须使用
Content-Type: application/json(或+json媒体类型)。 - 只有在原始事件已持久存储后才会返回 HTTP 200;存储失败时返回 HTTP 500。
- 根据 Zalo API 文档,getUpdates 轮询与 webhook 互斥。
支持的消息类型
- 文本:完全支持,按 2000 个字符分块。
- 媒体:支持入站和出站,受
mediaMaxMb限制。 - 表情回应、话题串、投票、原生命令:插件不支持。
- 流式传输:插件声明支持分块流式传输能力,但 Zalo 没有专门的出站队列或文本合并调优选项(不同于其他一些区域性渠道);如果这对你的用例很重要,请在你的环境中验证当前行为。
能力
| 功能 | 状态 |
|---|---|
| 私信 | 支持 |
| 群组 | 支持(需要提及) |
| 媒体(入站/出站) | 支持,受 mediaMaxMb 限制 |
| 表情回应 | 不支持 |
| 话题串 | 不支持 |
| 投票 | 不支持 |
| 原生命令 | 不支持 |
| 回复至/引用 | 不使用(固定为关闭) |
投递目标(CLI/定时任务)
使用聊天 ID 作为目标:
openclaw message send --channel zalo --target 123456789 --message "hi"故障排查
机器人无响应:
- 检查令牌:
openclaw channels status --probe - 验证发送者是否已获批准(通过配对或
allowFrom) - 检查 Gateway 网关日志:
openclaw logs --follow
Webhook 未接收事件:
- 确认 webhook URL 使用 HTTPS
- 确认密钥为 8-256 个字符
- 确认可通过配置的路径访问 Gateway 网关 HTTP 端点
- 确认 getUpdates 轮询没有同时运行(两者互斥)
- 突发请求可能返回 HTTP 429(每个路径 + IP 每 60 秒 120 个请求);请退避后重试
配置参考
完整配置:配置
| 设置 | 说明 | 默认值 |
|---|---|---|
channels.zalo.enabled |
启用/禁用渠道启动 | true |
channels.zalo.accounts.<id>.botToken |
来自 Zalo Bot Platform 的机器人令牌 | - |
channels.zalo.accounts.<id>.tokenFile |
从文件读取令牌(拒绝符号链接) | - |
channels.zalo.accounts.<id>.name |
显示名称 | - |
channels.zalo.accounts.<id>.enabled |
启用/禁用此账户 | true |
channels.zalo.accounts.<id>.dmPolicy |
每账户私信策略 | pairing |
channels.zalo.accounts.<id>.allowFrom |
私信允许列表(用户 ID) | - |
channels.zalo.accounts.<id>.groupPolicy |
每账户群组策略 | 参见群组 |
channels.zalo.accounts.<id>.groupAllowFrom |
群组发送者允许列表;回退到 allowFrom |
- |
channels.zalo.accounts.<id>.mediaMaxMb |
入站/出站媒体上限(MB) | 5 |
channels.zalo.accounts.<id>.webhookUrl |
启用 webhook 模式(要求 HTTPS) | - |
channels.zalo.accounts.<id>.webhookSecret |
Webhook 密钥(8-256 个字符) | - |
channels.zalo.accounts.<id>.webhookPath |
Gateway 网关 HTTP 服务器上的 webhook 路径 | webhook URL 路径 |
channels.zalo.accounts.<id>.proxy |
API 请求的代理 URL | - |
channels.zalo.accounts.<id>.responsePrefix |
覆盖出站响应前缀 | - |
channels.zalo.defaultAccount |
配置多个账户时的默认账户 | default |
channels.zalo.botToken、channels.zalo.dmPolicy 和其他扁平顶层键是上述字段的旧版单账户简写;两种形式均受支持。
环境变量选项:ZALO_BOT_TOKEN=... 仅解析默认账户的令牌。
相关内容
Was this useful?