企业如何用Claude Code 或小龙虾发送 WhatsApp 消息?保姆级教程
阿里云 Chat App 最近发布了一个消息发送 Skill,能让用户在 Claude Code、龙虾、Qoderwork 这类 AI Agent 工具里,用自然语言完成 WhatsApp 消息的发送、模板查询和会话管理,不用再频繁切控制台,也不用手写 JSON 调 API。
它把 WhatsApp 的模板查询、消息发送、批量触达封装成了 Agent 可调用的能力:你说一句"用 order_shipped 模板给这批客户发发货通知",查模板、填变量、发消息、解析失败原因就都交给 Agent。
这篇从环境配置到发出第一条消息,带你完整跑一遍。
一、它能干什么
Skill 当前提供七项核心能力,围绕 WhatsApp 消息的查询和发送:
二、前提条件(不齐后面一定报错)
发消息前,账号侧要备齐这些:
- 子账号 AccessKey:主账号在 RAM 控制台创建子用户,授予 CAMS 相关权限,拿到 AccessKey ID 和 Secret。
- 开通 Chat App 消息服务,并完成:
- 绑定 WhatsApp Business Account(WABA)
- 注册并审核通过发送方手机号(From)
- 创建并审核通过消息模板(发模板消息时必须)
补充一句:WhatsApp Business API 需要完成企业认证。
三、安装 Skill
按你用的工具选一种。
阿里云技能市场(推荐):访问阿里云技能市场,搜索"ChatApp 消息发送"安装。
ClawHub:访问 ClawHub 平台,搜索"alibabacloud-chatapp-message-send",查看说明并安装。
Claude Code:把下载的技能压缩包解压后,移进技能目录:
bash
# 全局生效(所有项目) ~/.claude/skills/ # 仅当前项目生效 项目根路径/.claude/skills/移好后重启 Claude Code 生效。(参考 Claude Code 技能文档)
OpenClaw:解压后复制技能目录路径,在 OpenClaw 里输入路径,直接对话:
帮我安装一下这个目录下的技能四、环境配置(核心,按顺序来)
1. 安装 Aliyun CLI(需 ≥ 3.3.3)
先查版本:
bash
aliyun version没装或版本低,一键安装/升级:
bash
# macOS / Linux curl -fsSL https://aliyuncli.alicdn.com/setup.sh | bash # 再次验证(需 >= 3.3.3) aliyun version2. 开启自动插件安装与 AI-Mode
调用任何 CLI 前,先开启这几项:
bash
aliyun configure set --auto-plugin-install true aliyun plugin update aliyun configure ai-mode enable aliyun configure ai-mode set-user-agent \ --user-agent "AlibabaCloud-Agent-Skills/alibabacloud-chatapp-message-send"⚠️ 这一步很重要:会话结束、任务完成或异常退出,任何退出路径都要关掉 AI-Mode,否则可能影响后续使用:
bash
aliyun configure ai-mode disable
3. 安装 cams 插件
bash
aliyun plugin install --names aliyun-cli-cams4. 验证凭证(注意安全规则)
凭证检查只用这一条命令,看输出里有没有有效的 profile:
bash
aliyun configure list5. 配置 RAM 权限
Skill 需要这几个 Action:发送消息、批量发送、查模板列表、查模板详情、查消息列表。最小权限策略:
json
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "cams:SendChatappMessage", "cams:SendChatappMassMessage", "cams:ListChatappTemplate", "cams:GetChatappTemplateDetail", "cams:ListChatappMessage" ], "Resource": "*" } ] }五、实操:发出第一条 WhatsApp 消息
环境通了就能用了,全程自然语言。
先查可用模板:
查询我已审核通过的 WhatsApp 模板列表对应底层命令是list-chatapp-template --audit-status pass,Agent 会自动调用。需要看某个模板的变量结构时,再让它查模板详情,它会引导你逐项填参。
发模板消息(可跨 24 小时窗口,适合主动触达):
用模板 order_shipped(语言 en)给 8613867404376 发订单发货通知, 变量 1=订单号 SO12345,2=物流单号 SF998877注意:手机号要用纯数字、不带 +(API 只接受纯数字)。模板变量按编号顺序填(1=、2=、3=),数量和格式要和模板对上。
批量发送(给一批客户发个性化模板消息):
给这批客户发订单发货通知,用模板 order_shipped(语言 en), 名单在 /Users/xxx/orders.xlsx,每行是手机号+订单号+物流单号Agent 会解析名单、逐条匹配变量、自动校验号码格式和模板匹配度,完成分批发送,并返回成功数、失败数和失败原因摘要。
发自定义消息(仅 24 小时窗口内,适合客服实时回复):
给 8613867404376 发一条 text 自定义消息,内容是"您的工单已处理完成"自定义消息支持 text、image、video、audio、document、interactive、location 七种类型。
会话窗口会自动判断:如果用户已经超出 24 小时窗口,自定义消息会报SessionWindowExpired,Skill 会自动切回模板消息流程,不用你手动判断。
六、必须搞懂的规则:24 小时会话窗口
这是 WhatsApp 最容易踩的点,单独说一下。
WhatsApp 把企业能发的消息分两类,规则不同:
- 模板消息:经过 Meta 审核的固定结构消息,任何时候都能发,用于主动触达(订单通知、营销、验证码)。
- 自定义消息:自由文本/图片等,只能在用户最近一次给你发消息后的 24 小时内发,用于会话中的实时回复。超时就报
SessionWindowExpired。
所以客服回访场景里,客户主动来过、还在窗口内,就用自定义消息直接回;超窗了就得用模板消息。Agent 会帮你判断该用哪种,减少人工判断和失败重发。
另外提醒:模板消息仍需提前在控制台完成 Meta 审核,Skill 不会缩短审核周期,它优化的是审核通过之后的调用效率。
七、常见错误码速查
发送失败时对着这张表排查:
| 错误码 | 含义 | 解决 |
|---|---|---|
| InvalidParameter.FromOnlyNumeric | 手机号带了 + | 去掉 +,用纯数字,如 8613867404376 |
| TemplateNotFound | 模板不存在 | 核对 template-code 和 biz-language |
| TemplateParamInvalid | 模板变量错误 | 检查变量数量和格式是否和模板匹配 |
| SessionWindowExpired | 24h 会话窗口超时 | 切换到模板消息流程 |
| PhoneNumberNotRegistered | 发送方未注册 | 在控制台完成手机号注册和审核 |
| Forbidden.RAM | RAM 权限不足 | 按第四步补齐 RAM 权限 |
| InvalidAccessKeyId.NotFound | AccessKey ID 错误 | 检查 AK ID |
| SignatureDoesNotMatch | AccessKey Secret 错误 | 检查 AK Secret |
操作指南可查看:Chat App 消息发送 Skill 操作手册-Chat App 消息服务(Chat App)-阿里云帮助中心
Skill 地址:阿里云chatapp消息发送skill - alibabacloud-chatapp-message-send - Agent SKILL详情 - 阿里云 Agent Skills 门户
