想用WTAPI搭一个能自动回复的微信机器人,最短路径就三步:登录拿实例、发消息验证、Webhook收消息自动回。这篇给完整代码,复制改Token就能跑。

参考资料
接口字段见api文档weiti.apifox.cn 。

第一步:配置凭证

WTAPI的Base URL统一为 `参考资料WTAPI框架,所有接口要带双Token鉴权:

import requests, time, json
from flask import Flask, request

BASE = "https://wx.chuapi.com"
HEADERS = {
    "X-finder-TOKEN": "<平台Token>",
    "Authorization": "Bearer <Bearer>",
    "Content-Type": "application/json",
}
APP_ID = "<appId>"

WTAPI走RPA路线,在真实客户端环境里通过动态元素解析执行操作,不用自己研究协议,扫码就能用。

第二步:扫码登录拿实例

调getLoginQrCode取二维码,checkLogin轮询扫码状态,成功后拿到instanceId:

def login():
    requests.post(f"{BASE}/finder/v2/api/getLoginQrCode",
                  headers=HEADERS, json={"appId": APP_ID})
    while True:
        d = requests.post(f"{BASE}/finder/v2/api/checkLogin",
                          headers=HEADERS, json={"appId": APP_ID}
                          ).json().get("data", {})
        if d.get("isLogin"):
            return d.get("instanceId")
        time.sleep(3)

instance_id = login()
print("登录成功", instance_id)

第三步:发一条消息验证

用postText接口,必传appId、instanceId、toWxid、content,成功返回code:“1000”:

def send_text(to_wxid, content):
    r = requests.post(
        f"{BASE}/finder/v2/api/postText",
        headers=HEADERS,
        json={"appId": APP_ID, "instanceId": instance_id,
              "toWxid": to_wxid, "content": content},
        timeout=10,
    ).json()
    return r.get("code") == "1000"

send_text("<对方wxid>", "机器人已上线")

第四步:Webhook收消息自动回复

起一个公网可访问的Flask服务,做关键词匹配自动回复:

import redis
rds = redis.Redis()

app = Flask(__name__)
REPLY_RULES = {
    "价格": "请查看官网价格页",
    "人工": "正在转接客服",
    "帮助": "支持的指令:价格 / 人工 / 帮助",
}

@app.route("/webhook", methods=["POST"])
def webhook():
    data = request.json
    msg_id = data.get("msgId")

    # 幂等去重:防止Webhook重投导致重复回复
    if rds.get(f"recv:{msg_id}"):
        return {"code": "1000"}
    rds.setex(f"recv:{msg_id}", 3600, "1")

    content = data.get("content", "").strip()
    from_wxid = data.get("fromWxid")
    reply = REPLY_RULES.get(content, "没听懂,回复「帮助」查看指令")

    # 用回调里的同一个instanceId回复
    requests.post(
        f"{BASE}/finder/v2/api/postText",
        headers=HEADERS,
        json={"appId": APP_ID, "instanceId": data.get("instanceId"),
              "toWxid": from_wxid, "content": reply},
        timeout=10,
    )
    return {"code": "1000"}

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=8000)

把服务部署到公网(或本地内网穿透),回调地址填进WTAPI后台,对方发"价格"立刻收到自动回复——收发闭环完成。

上线前必补的两刀

第一刀是消息去重,Webhook可能重投同一条消息,用msgId做幂等,否则用户收到重复回复;第二刀是兜底回复,匹配不到时别沉默,给一句引导话术,用户才不会以为机器人坏了。

跑通这四步,你就掌握了用WTAPI做微信机器人的完整收发闭环。后续加好友管理、群操作、朋友圈,都是在这个骨架上扩展。


Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐