打通 ERP 与微信:手把手教你用 OpenClaw 实现“发货即催款”自动化
在企业日常运营中,销售与财务的衔接往往存在时间差。当仓库刚刚完成发货,销售人员如果能第一时间收到提醒并跟进收款,将极大缩短企业的资金回笼周期。今天,我们就来实战一个高价值的“业财一体化”自动化场景:当 ERP 系统生成发货单后,自动通过微信服务号向对应的销售人员推送精美的催款卡片消息。本文将带你基于 OpenClaw(龙虾)智能体,从权限配置、链路打通到核心代码编写,完整落地这套自动化方案。
在企业日常运营中,销售与财务的衔接往往存在时间差。当仓库刚刚完成发货,销售人员如果能第一时间收到提醒并跟进收款,将极大缩短企业的资金回笼周期。今天,我们就来实战一个高价值的“业财一体化”自动化场景:当 ERP 系统生成发货单后,自动通过微信服务号向对应的销售人员推送精美的催款卡片消息。
本文将带你基于 OpenClaw(龙虾)智能体,从权限配置、链路打通到核心代码编写,完整落地这套自动化方案。
🛠️ 第一步:微信服务号的准备与配置
要实现向特定用户发送结构化的卡片消息,我们需要使用微信官方的 “模板消息” 接口。在开始写代码前,请先确保你的微信服务号已完成企业认证,并完成以下基础配置:
- 申请模板消息:登录微信公众平台,进入「功能」->「订阅通知」(或旧版的「模板消息」)。在公共模板库中搜索适合的场景,例如“发货提醒”或“待办事项通知”。添加成功后,请务必记录下这个模板ID (Template ID)。
- 获取开发凭证:在「设置与开发」->「基本配置」页面,获取公众号的
AppID和AppSecret。 - 配置 IP 白名单:为了防止接口被恶意调用,微信要求配置服务器 IP。请将你部署 OpenClaw 的服务器公网 IP 填入后台的 IP 白名单中。
⚙️ 第二步:打通 ERP 到 OpenClaw 的触发链路
自动化的第一步是让 OpenClaw “感知”到发货动作。根据你所使用的 ERP 系统能力,通常有两种成熟的对接方式:
- Webhook 推送(强烈推荐):如果你的 ERP 支持 Webhook 或回调功能,可以直接在后台配置规则。当“发货单审核通过”时,ERP 会自动向 OpenClaw 暴露的
/hooks/agent接口发送一个包含{订单号, 客户名, 金额, 销售员OpenID}的 JSON 数据包。这种方式实时性最强。 - 定时轮询数据库:如果 ERP 较为老旧不支持对外推送,可以在 OpenClaw 中编写一个简单的 Python Skill,每隔几分钟去查询一次 ERP 的底层数据库(如 PostgreSQL),看看有没有新增且状态为“已发货”的记录。

💻 第三步:编写 OpenClaw 技能,调用微信接口发消息
这是整个流程的核心环节。我们需要在 OpenClaw 中编写一个专属技能(Skill),负责接收发货信息,并将其转换成微信模板消息精准发送给对应的销售。
首先,在 Ubuntu 终端安装必要的 HTTP 请求库:
pip install requests
接着,在 ~/.openclaw/workspace/skills/wechat_payment_reminder/ 目录下创建 __init__.py 文件,并填入以下核心逻辑代码:
import requests
from openclaw import Skill, SkillResult
class WechatPaymentReminderSkill(Skill):
"""微信服务号催款提醒技能"""
name = "wechat_payment_reminder"
description = "根据发货信息,向指定销售人员的微信服务号发送催款模板消息"
# 定义 AI 需要提取的参数
parameters = {
"sales_openid": {"type": "string", "description": "销售人员在服务号下的唯一标识 OpenID"},
"order_no": {"type": "string", "description": "ERP 发货单号"},
"customer_name": {"type": "string", "description": "客户名称"},
"amount": {"type": "number", "description": "应收货款金额"}
}
async def execute(self, sales_openid: str, order_no: str, customer_name: str, amount: float) -> SkillResult:
# ⚠️ 生产环境中建议使用环境变量存储敏感信息
app_id = "你的服务号AppID"
app_secret = "你的服务号AppSecret"
template_id = "你申请的模板消息ID"
try:
# 1. 获取微信全局 Access Token (实际生产中建议加 Redis 缓存,避免频繁请求导致超限)
token_url = f"https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={app_id}&secret={app_secret}"
token_res = requests.get(token_url).json()
access_token = token_res.get("access_token")
if not access_token:
return SkillResult(success=False, message="获取微信 Access Token 失败")
# 2. 组装模板消息数据(具体字段需与你公众号后台的模板保持一致)
msg_data = {
"touser": sales_openid,
"template_id": template_id,
"data": {
"first": {"value": f"【发货提醒】{customer_name} 已发货,请及时跟进收款!", "color": "#173177"},
"keyword1": {"value": order_no, "color": "#173177"},
"keyword2": {"value": f"{amount} 元", "color": "#FF0000"},
"remark": {"value": "点击详情可查看发货单据,祝早日回款~", "color": "#173177"}
}
}
# 3. 调用微信发送模板消息接口
send_url = f"https://api.weixin.qq.com/cgi-bin/message/template/send?access_token={access_token}"
response = requests.post(send_url, json=msg_data).json()
if response.get("errcode") == 0:
return SkillResult(success=True, message=f"已向销售(OpenID:{sales_openid})成功发送催款提醒。")
else:
return SkillResult(success=False, message=f"微信接口报错: {response.get('errmsg')}")
except Exception as e:
return SkillResult(success=False, message=f"执行催款提醒时发生异常: {str(e)}")
skill_instance = WechatPaymentReminderSkill()
🚀 第四步:串联全链路与关键问题解答
完成上述配置后,重启 OpenClaw 服务,整个自动化闭环就正式跑通了:
- ERP 系统产生一张新的发货单。
- ERP 自动触发 Webhook,将订单数据推送到 OpenClaw。
- OpenClaw 接收到指令,自动提取出该订单对应销售人员的
OpenID,并调用你刚刚编写的wechat_payment_reminder技能。 - 销售人员的微信服务号对话框里,立刻就会收到一条精美的催款卡片消息。
💡 核心难点解答:如何获取销售人员的 OpenID?
这是实现此场景最关键的一环。因为微信的模板消息必须指定接收者的 OpenID。最稳妥的做法是建立一个简单的内部映射表(可以放在 ERP 或独立的数据库中),维护好 “员工姓名/工号 <-> 微信 OpenID” 的对应关系。
你可以让员工先扫描公众号的一个专属二维码进行绑定,或者在企业内部系统中录入他们的微信号。当用户关注公众号并与公众号产生交互(如点击菜单、发送消息)时,微信后台就能获取到该用户的 OpenID,将其与员工账号绑定存入数据库即可。后续 OpenClaw 在处理发货单时,只需拿着销售的名字去查这张表,就能拿到精准的 OpenID 进行推送。
更多推荐


所有评论(0)