我花了大概两天时间,把 OpenClaw 接入了 WhatsApp

接入之前,我每天要手动盯着好几个窗口:客户消息、工单系统、定时提醒、团队通知,全靠人肉切换。接入之后,这些事情大部分都自动跑了。这篇文章记录完整的配置过程,以及我觉得真正改变工作方式的几个场景。


为什么选择 OpenClaw + WhatsApp 这个组合?

先说背景。我需要一个能统一处理消息的中枢——既能接收 WhatsApp 上的客户消息,又能主动推送通知,还要跟内部的工单系统打通。调研了几个方案之后,最终选了 OpenClaw 作为核心处理层,原因有三:

  • OpenClaw 自带 Webhook 支持,可以直接接收和发送 HTTP 请求,不需要额外开发
  • 配合 n8n 做中转,可以把各种服务串联起来,不写代码也能配置
  • 通过 Twilio 对接 WhatsApp Business API,消息收发稳定,支持模板消息和自由文本

整体架构是:WhatsApp → Twilio → n8n → OpenClaw Webhook → 业务逻辑处理 → 回传结果


接入架构总览

在开始配置之前,先理清楚各个组件的分工:

  • WhatsApp Business API:消息的入口和出口,负责与用户的实际通信
  • Twilio:作为 WhatsApp Business API 的托管平台,处理号码注册、消息收发和模板审核
  • n8n:自动化中转层,负责把 Twilio 的 Webhook 事件路由到 OpenClaw,以及把 OpenClaw 的结果推回 WhatsApp
  • OpenClaw Webhook:核心处理层,接收结构化数据,触发业务逻辑

第一步:配置 Twilio + WhatsApp Business API

1.1 注册 Twilio 账号并申请 WhatsApp 号码

  1. 前往 twilio.com 注册账号,完成手机号验证。
  2. 进入控制台,找到 Messaging → Senders → WhatsApp Senders
  3. 按照引导提交 WhatsApp Business 号码申请,需要提供企业 Facebook Business Manager 账号。
  4. 审核通过后,你会得到一个可用于发送 WhatsApp 消息的号码。

💡 测试阶段可以使用 Twilio 提供的 Sandbox 号码,无需等待审核,适合先把流程跑通再切换正式号码。

1.2 配置 Twilio Webhook 地址

  1. 在 Twilio 控制台进入 Messaging → Settings → WhatsApp Sandbox Settings(测试阶段)或正式号码的配置页。
  2. When a message comes in 填入你的 n8n Webhook 地址(下一步配置后填入)。
  3. HTTP 方法选择 POST

第二步:在 n8n 中搭建自动化流程

2.1 创建接收 Twilio 消息的 Webhook 节点

  1. 打开 n8n,新建一个 Workflow。
  2. 添加 Webhook 节点,方法选 POST,路径自定义(例如 /whatsapp-in)。
  3. 复制生成的 Webhook URL,填回 Twilio 控制台的配置项里。

2.2 解析消息内容并路由

Twilio 发过来的 POST 数据包含发送者号码、消息正文等字段。在 n8n 里用 Function 节点提取关键字段:

// 提取发送者和消息内容
const from = $json["body"]["From"];
const body = $json["body"]["Body"];

return [{ json: { from, body } }];

2.3 转发到 OpenClaw Webhook

  1. 添加 HTTP Request 节点
  2. Method 选 POST,URL 填入 OpenClaw 的 Webhook 地址。
  3. Body 传入解析后的消息数据(JSON 格式)。

2.4 把 OpenClaw 的处理结果回传 WhatsApp

  1. OpenClaw 处理完成后,通过另一个 Webhook 回调 n8n。
  2. n8n 再调用 Twilio 的发送消息 API,把结果推给对应的 WhatsApp 用户。

第三步:配置 OpenClaw Webhook

  1. 在 OpenClaw 后台进入 设置 → Webhook(或对应的集成配置页面)。
  2. 新增一条 Webhook 规则,填入触发条件和接收 URL。
  3. 开启签名验证,把生成的 Secret 同步填入 n8n 的 HTTP Request 节点 Header 里(X-OpenClaw-Signature),防止伪造请求。
  4. 保存并用 n8n 发一条测试消息,确认 OpenClaw 能正常接收到数据。

四个真正改变工作方式的场景

场景一:收到消息自动回复

客户发来常见问题(价格、营业时间、订单状态),OpenClaw 匹配关键词后自动生成回复,通过 n8n 推回 WhatsApp。95% 的重复性问题不再需要人工介入,响应时间从平均 20 分钟缩短到几秒钟。

场景二:客户和工单通知

工单系统产生新事件时(新工单、状态变更、超时预警),OpenClaw Webhook 触发,n8n 自动把结构化通知推送到指定 WhatsApp 号码或群组。再也不用刷新工单系统的邮件通知,重要事件第一时间到手机

场景三:定时报告和提醒

在 n8n 里配置 Cron 节点,每天早上 9 点自动拉取 OpenClaw 的数据汇总,生成日报通过 WhatsApp 推给相关人员。开会前不用再临时整理数据,数据直接送到人

场景四:内部团队协同

团队内部的任务分配、审批提醒、截止日期预警,全部通过 WhatsApp 群组推送。减少了大量”你看到了吗”的确认消息,信息传递链路变短了一半


踩过的坑,帮你提前避开

坑一:Twilio Sandbox 号码有白名单限制

测试阶段只有加入白名单的号码才能收到消息。正式上线前务必切换到已审核的正式号码,否则用户会直接收不到推送。

坑二:WhatsApp 模板消息需要提前审核

主动推送给用户的消息(非用户先发起的对话)必须使用经过 Meta 审核的模板消息,审核周期约 1~3 个工作日。自由文本只能在用户主动发起的 24 小时会话窗口内使用。

坑三:n8n 的 Webhook 节点默认只监听一次

测试时注意:n8n 免费版的 Webhook 节点在”测试模式”下触发一次后会自动停止监听。正式运行需要激活(Activate)整个 Workflow,切换到生产模式。

坑四:OpenClaw Webhook 签名验证格式

签名验证使用 HMAC-SHA256,需要把请求 Body 的原始字符串(不能经过再次序列化)和 Secret 一起做哈希。在 n8n 里直接传 JSON 对象会导致签名不匹配,需要显式转成字符串再传。


总结

整套方案跑通之后,最大的感受是:信息不再需要我去找,它自己找到我

OpenClaw + WhatsApp Business API + Twilio + n8n 这个组合,对于中小团队来说性价比很高——Twilio 按量计费,n8n 可以自部署免费使用,OpenClaw 的 Webhook 配置也不复杂。

如果你也在考虑把业务系统和 WhatsApp 打通,这套方案值得参考。有问题欢迎评论区交流,我会持续更新踩坑记录。