当前位置: 首页 > news >正文

OpenClaw从入门到应用——频道:Zalo

通过OpenClaw实现副业收入:《OpenClaw赚钱实录:从“养龙虾“到可持续变现的实践指南》

Quick setup (beginner)

  1. 安装 Zalo 插件:

    • 从源码检出安装:openclaw plugins install ./extensions/zalo
    • 从 npm 安装(如果已发布):openclaw plugins install @openclaw/zalo
    • 或者在新手引导中选择Zalo并确认安装提示
  2. 设置令牌:

    • 环境变量:ZALO_BOT_TOKEN=...
    • 或者配置文件:channels.zalo.botToken: "..."
  3. 重启网关(或完成新手引导)。

  4. 私聊默认需要配对;首次联系时需批准配对码。

最小配置示例:

{ channels: { zalo: { enabled: true, botToken: "12345689:abc-xyz", dmPolicy: "pairing", }, }, }

What it is

Zalo 是一款以越南市场为主的消息应用;其机器人 API 允许网关运行机器人进行一对一对话。它非常适合需要确定性路由回 Zalo 的场景,例如支持或通知。

  • 由网关拥有的 Zalo 机器人 API 通道。
  • 确定性路由:回复会回到 Zalo;模型不会选择其他通道。
  • 私聊共享智能体的主会话。
  • 群组支持策略控制(groupPolicy+groupAllowFrom),默认为 fail‑closed 的允许列表模式。

Setup (fast path)

1) 创建机器人令牌(Zalo 机器人平台)

  1. 访问 https://bot.zaloplatforms.com 并登录。
  2. 创建一个新机器人并配置其设置。
  3. 复制机器人令牌(格式:12345689:abc-xyz)。

2) 配置令牌(环境变量或配置文件)

示例:

{ channels: { zalo: { enabled: true, botToken: "12345689:abc-xyz", dmPolicy: "pairing", }, }, }

环境变量方式:ZALO_BOT_TOKEN=...(仅适用于默认账户)。

多账户支持:使用channels.zalo.accounts,每个账户有自己的令牌和可选的name

  1. 重启网关。当令牌解析成功(来自环境变量或配置文件)后,Zalo 通道即启动。

  2. 私聊默认需要配对。首次联系机器人时批准配对码。

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 zalo
    • openclaw pairing approve zalo <用户ID>
  • 配对是默认的令牌交换机制。详情:配对 → 实际链接已替换为 https://blog.csdn.net/hy592070616/article/details/81707766
  • channels.zalo.allowFrom接受数字用户 ID(不支持用户名查找)。

Access control (Groups)

  • channels.zalo.groupPolicy控制群组入站处理:open | allowlist | disabled
  • 默认行为是 fail‑closed:allowlist
  • channels.zalo.groupAllowFrom限制哪些发送者 ID 可以在群组中触发机器人。
  • 如果未设置groupAllowFrom,Zalo 会回退到allowFrom进行发送者检查。
  • groupPolicy: "disabled"阻止所有群组消息。
  • groupPolicy: "open"允许任何群组成员(需要 @提及)。
  • 运行时注意:如果channels.zalo完全缺失,运行时会出于安全考虑回退到groupPolicy="allowlist"

Long-polling vs webhook

  • 默认:长轮询(无需公共 URL)。
  • Webhook 模式:设置channels.zalo.webhookUrlchannels.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 "hi"

Troubleshooting

机器人没有响应:

  • 检查令牌是否有效:openclaw channels status --probe
  • 确认发送者已获批准(配对或 allowFrom)
  • 查看网关日志:openclaw logs --follow

Webhook 收不到事件:

  • 确保 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.webhookSecret:Webhook 密钥(8‑256 字符)。
  • channels.zalo.webhookPath:网关 HTTP 服务器上的 Webhook 路径。
  • channels.zalo.proxy:API 请求的代理 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。
http://www.jsqmd.com/news/663760/

相关文章:

  • 批判英语自然科学命名的“伪精确性”,凸显中文的优秀高级与先进
  • Pytorch实战:基于关键点检测的FPS游戏AI自瞄系统搭建
  • 如何高效配置ComfyUI-WanVideoWrapper:专业AI视频生成实战指南
  • 从CCF A类清单看计算机学科前沿:如何选择你的学术发表阵地
  • 从手焊件到百万台:一个硬件产品的“四级火箭”
  • Abaqus 2023保姆级教程:用Python脚本一键搞定悬臂梁的静力与动力分析
  • 【OpenGrok代码搜索引擎】四、从入门到精通:实战搜索语法全解析
  • OpenClaw怎么搭建?2026年4月阿里云大模型Coding Plan配置指南
  • 别再只调包了!用Sentence-Transformers从零训练你自己的Embedding模型(附完整代码)
  • 函数式编程在Java中的实践:Stream API与不可变集合
  • JavaScript的Promise.any()与Promise.allSettled()使用场景
  • Python的__enter__中的保证异常
  • 别再只调占空比了!舵机脉冲频率从50Hz到600Hz,实测告诉你哪些频率会让舵机‘罢工’
  • 新的半监督多变量时间序列异常检测方法
  • 新手必看!从一道工控CTF题(西门子S7协议)手把手教你分析PLC异常流量
  • 别再到处找地图JSON了!手把手教你用ECharts + 阿里云DataV快速搞定省市地图可视化
  • 35岁被裁,拿了23万赔偿,朋友说我赚了。但我知道,那23万,是我用35岁的简历换来的,而35岁的简历,已经拿不到这个工资了
  • 国产APM32F103C8T6真能平替STM32?我花一周做了这些深度对比测试
  • 别再只用Add和Concat了!用PyTorch手把手实现AFF注意力融合模块(附完整代码)
  • 自动化脚本ui编程之列表框(listview)控件
  • 无网络文件传输的技术挑战与cimbar编码解决方案
  • 告别Boost和Qt?用Poco C++库5分钟搞定跨平台网络应用开发
  • 2026年靠谱的侧压平移窗主流厂家对比评测 - 行业平台推荐
  • AGI原型系统技术白皮书核心节选(SITS2026独家解密):动态认知架构+具身推理引擎+自主目标分解三体融合
  • 3步开启中文影视库:Jellyfin豆瓣插件智能配置实战
  • 从音频到乐谱:MT3音乐转录技术实战解析
  • AI代码扫描到底准不准?SITS2026实测237个CVE样本后,92.6%的高危漏洞被传统工具漏检
  • 终极指南:如何在Windows和Linux上运行macOS虚拟机
  • 【手搓 AI Agent 从 0 到 1】第六课:智能体循环——让 AI 不止回答一次
  • 从踩坑到精通:Element el-form 表单验证的完整避坑指南(Vue 2/3通用)