通过OpenClaw实现副业收入《OpenClaw赚钱实录从“养龙虾“到可持续变现的实践指南》Quick setup (beginner)安装 Zalo 插件从源码检出安装openclaw plugins install ./extensions/zalo从 npm 安装如果已发布openclaw plugins install openclaw/zalo或者在新手引导中选择Zalo并确认安装提示设置令牌环境变量ZALO_BOT_TOKEN...或者配置文件channels.zalo.botToken: ...重启网关或完成新手引导。私聊默认需要配对首次联系时需批准配对码。最小配置示例{ channels: { zalo: { enabled: true, botToken: 12345689:abc-xyz, dmPolicy: pairing, }, }, }What it isZalo 是一款以越南市场为主的消息应用其机器人 API 允许网关运行机器人进行一对一对话。它非常适合需要确定性路由回 Zalo 的场景例如支持或通知。由网关拥有的 Zalo 机器人 API 通道。确定性路由回复会回到 Zalo模型不会选择其他通道。私聊共享智能体的主会话。群组支持策略控制groupPolicygroupAllowFrom默认为 fail‑closed 的允许列表模式。Setup (fast path)1) 创建机器人令牌Zalo 机器人平台访问 https://bot.zaloplatforms.com 并登录。创建一个新机器人并配置其设置。复制机器人令牌格式12345689:abc-xyz。2) 配置令牌环境变量或配置文件示例{ channels: { zalo: { enabled: true, botToken: 12345689:abc-xyz, dmPolicy: pairing, }, }, }环境变量方式ZALO_BOT_TOKEN...仅适用于默认账户。多账户支持使用channels.zalo.accounts每个账户有自己的令牌和可选的name。重启网关。当令牌解析成功来自环境变量或配置文件后Zalo 通道即启动。私聊默认需要配对。首次联系机器人时批准配对码。How it works (behavior)入站消息被标准化为共享的通道信封包含媒体占位符。回复总是路由回同一个 Zalo 聊天。默认使用长轮询可通过channels.zalo.webhookUrl启用 Webhook 模式。Limits出站文本被分块为 2000 个字符Zalo API 限制。媒体下载/上传大小受channels.zalo.mediaMaxMb限制默认 5 MB。由于 2000 字符限制使流式传输作用不大默认禁用流式传输。Access control (DMs)私聊访问默认channels.zalo.dmPolicy pairing。未知发送者会收到配对码消息在被批准前会被忽略配对码一小时后过期。批准方式openclaw pairing list zaloopenclaw pairing approve zalo 用户ID配对是默认的令牌交换机制。详情配对 → 实际链接已替换为 https://blog.csdn.net/hy592070616/article/details/81707766channels.zalo.allowFrom接受数字用户 ID不支持用户名查找。Access control (Groups)channels.zalo.groupPolicy控制群组入站处理open | allowlist | disabled。默认行为是 fail‑closedallowlist。channels.zalo.groupAllowFrom限制哪些发送者 ID 可以在群组中触发机器人。如果未设置groupAllowFromZalo 会回退到allowFrom进行发送者检查。groupPolicy: disabled阻止所有群组消息。groupPolicy: open允许任何群组成员需要 提及。运行时注意如果channels.zalo完全缺失运行时会出于安全考虑回退到groupPolicyallowlist。Long-polling vs webhook默认长轮询无需公共 URL。Webhook 模式设置channels.zalo.webhookUrl和channels.zalo.webhookSecret。Webhook 密钥长度必须为 8‑256 个字符。Webhook URL 必须使用 HTTPS。Zalo 发送事件时会附带X-Bot-Api-Secret-Token头用于验证。网关 HTTP 服务在channels.zalo.webhookPath默认使用 Webhook URL 的路径处理 Webhook 请求。请求必须使用Content-Type: application/json或json媒体类型。在短时间防重窗口内重复事件event_name message_id会被忽略。突发流量会按路径/源进行速率限制可能返回 HTTP 429。注意根据 Zalo API 文档getUpdates轮询和 Webhook 互斥。Supported message types文本消息完全支持自动分块为 2000 字符。图片消息下载并处理入站图片通过sendPhoto发送图片。贴纸记录日志但不完全处理智能体不会响应。不支持的类型记录日志例如来自受保护用户的消息。Capabilities功能状态私聊✅ 支持群组⚠️ 支持带策略控制默认为允许列表媒体图片✅ 支持消息回应❌ 不支持消息线程❌ 不支持投票❌ 不支持原生命令❌ 不支持流式传输⚠️ 已屏蔽2000 字符限制Delivery targets (CLI/cron)使用聊天 ID 作为目标。示例openclaw message send --channel zalo --target 123456789 --message hiTroubleshooting机器人没有响应检查令牌是否有效openclaw channels status --probe确认发送者已获批准配对或 allowFrom查看网关日志openclaw logs --followWebhook 收不到事件确保 Webhook URL 使用 HTTPS确认密钥长度为 8‑256 个字符确认网关 HTTP 端点可在配置的路径上访问检查 getUpdates 轮询是否未运行两者互斥Configuration reference (Zalo)完整配置配置 → 实际链接已替换为 https://blog.csdn.net/hy592070616/article/details/81707766提供方选项channels.zalo.enabled启用/禁用通道启动。channels.zalo.botToken来自 Zalo 机器人平台的机器人令牌。channels.zalo.tokenFile从普通文件路径读取令牌。拒绝符号链接。channels.zalo.dmPolicypairing | allowlist | open | disabled默认pairing。channels.zalo.allowFrom私聊允许列表用户 ID。open需要*。向导会要求输入数字 ID。channels.zalo.groupPolicyopen | allowlist | disabled默认allowlist。channels.zalo.groupAllowFrom群组发送者允许列表用户 ID。未设置时回退到allowFrom。channels.zalo.mediaMaxMb入站/出站媒体大小上限MB默认 5。channels.zalo.webhookUrl启用 Webhook 模式需要 HTTPS。channels.zalo.webhookSecretWebhook 密钥8‑256 字符。channels.zalo.webhookPath网关 HTTP 服务器上的 Webhook 路径。channels.zalo.proxyAPI 请求的代理 URL。多账户选项channels.zalo.accounts.name.botToken每个账户的令牌。channels.zalo.accounts.name.tokenFile每个账户的普通令牌文件。拒绝符号链接。channels.zalo.accounts.name.name显示名称。channels.zalo.accounts.name.enabled启用/禁用账户。channels.zalo.accounts.name.dmPolicy每个账户的私聊策略。channels.zalo.accounts.name.allowFrom每个账户的允许列表。channels.zalo.accounts.name.groupPolicy每个账户的群组策略。channels.zalo.accounts.name.groupAllowFrom每个账户的群组发送者允许列表。channels.zalo.accounts.name.webhookUrl每个账户的 Webhook URL。channels.zalo.accounts.name.webhookSecret每个账户的 Webhook 密钥。channels.zalo.accounts.name.webhookPath每个账户的 Webhook 路径。channels.zalo.accounts.name.proxy每个账户的代理 URL。