在企业日常运营中,销售与财务的衔接往往存在时间差。当仓库刚刚完成发货,销售人员如果能第一时间收到提醒并跟进收款,将极大缩短企业的资金回笼周期。今天,我们就来实战一个高价值的“业财一体化”自动化场景:当 ERP 系统生成发货单后,自动通过微信服务号向对应的销售人员推送精美的催款卡片消息。

本文将带你基于 OpenClaw(龙虾)智能体,从权限配置、链路打通到核心代码编写,完整落地这套自动化方案。

🛠️ 第一步:微信服务号的准备与配置

要实现向特定用户发送结构化的卡片消息,我们需要使用微信官方的 “模板消息” 接口。在开始写代码前,请先确保你的微信服务号已完成企业认证,并完成以下基础配置:

  1. 申请模板消息:登录微信公众平台,进入「功能」->「订阅通知」(或旧版的「模板消息」)。在公共模板库中搜索适合的场景,例如“发货提醒”或“待办事项通知”。添加成功后,请务必记录下这个模板ID (Template ID)
  2. 获取开发凭证:在「设置与开发」->「基本配置」页面,获取公众号的 AppIDAppSecret
  3. 配置 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 服务,整个自动化闭环就正式跑通了:

  1. ERP 系统产生一张新的发货单。
  2. ERP 自动触发 Webhook,将订单数据推送到 OpenClaw。
  3. OpenClaw 接收到指令,自动提取出该订单对应销售人员的 OpenID,并调用你刚刚编写的 wechat_payment_reminder 技能。
  4. 销售人员的微信服务号对话框里,立刻就会收到一条精美的催款卡片消息。

💡 核心难点解答:如何获取销售人员的 OpenID?
这是实现此场景最关键的一环。因为微信的模板消息必须指定接收者的 OpenID。最稳妥的做法是建立一个简单的内部映射表(可以放在 ERP 或独立的数据库中),维护好 “员工姓名/工号 <-> 微信 OpenID” 的对应关系。

你可以让员工先扫描公众号的一个专属二维码进行绑定,或者在企业内部系统中录入他们的微信号。当用户关注公众号并与公众号产生交互(如点击菜单、发送消息)时,微信后台就能获取到该用户的 OpenID,将其与员工账号绑定存入数据库即可。后续 OpenClaw 在处理发货单时,只需拿着销售的名字去查这张表,就能拿到精准的 OpenID 进行推送。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐