实操审校说明

本文属于自动化实操教程。涉及采集、Webhook、消息推送或第三方平台时,请优先使用官方 API,并遵守 robots、服务条款、频率限制和数据隐私要求。请勿用于绕过风控、批量骚扰或未授权采集。


企业微信自动回复机器人教程:FastAPI 接收消息并调用 AI 回复

📅 更新时间:2026 年 6 月
🔧 参考环境:企业微信 API v3 / Python 3.11+ / FastAPI
👤 适合人群:想自动化处理企业微信消息的运营/开发者
⏱ 预计完成时间:1 小时

一、先明确使用边界

企业微信自动回复应只用于自有企业、已授权客户沟通和内部运营。涉及用户消息、手机号、订单等个人信息时,需要遵守隐私政策和数据最小化原则。

二、能实现什么?

  • 客户发消息 → 自动识别意图 → AI 回复
  • 关键词触发 → 自动发送预设话术
  • 未识别的问题 → 转人工客服
  • 每天定时推送报告/提醒

二、准备工作

材料说明
企业微信账号需要管理员权限(创建应用)
服务器(可选)本地开发可以先用 ngrok 暴露本地端口
Python 3.11+运行后端代码

三、创建企业微信应用

步骤1:登录企业微信管理后台

  1. 访问:https://work.weixin.qq.com/
  2. 用管理员账号登录

步骤2:创建自建应用

  1. 应用管理自建创建应用
  2. 填写:

- 应用名称:AI 客服助手

- 应用 Logo:上传图片

- 可见范围:选择需要使用的部门/成员

  1. 创建完成后,记录:

- AgentId(应用 ID)

- Secret(应用密钥,点击「查看」获取)

步骤3:配置接收消息服务器

  1. 在应用详情页 → 接收消息设置 API 接收
  2. 需要填写:

- URL:http://你的服务器IP:8000/wecom/callback(后面写代码实现)

- Token:随便填一个字符串(如 mywecomtoken

- EncodingAESKey:点击「随机生成」

  1. 先不保存(等代码写好后再填真实 URL)

四、写自动回复代码

安装依赖

pip install fastapi uvicorn requests pycryptodome

核心代码(wecom_bot.py)

from fastapi import FastAPI, Request
import requests
import hashlib
import time
import xml.etree.ElementTree as ET

app = FastAPI()

# === 配置(替换成你自己的) ===
CORPID = "wwxxxxxxxxxx"          # 企业 ID(在「我的企业」里查看)
CORPSECRET = "xxxxxxxxxx"        # 应用 Secret
AGENTID = 1000002               # 应用 AgentId
DEEPSEEK_API_KEY = "sk-xxxx"    # DeepSeek API Key

# === 获取 Access Token ===
access_token = None
token_expiry = 0

def get_access_token():
    global access_token, token_expiry
    if access_token and time.time() < token_expiry:
        return access_token

    url = f"https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={CORPID}&corpsecret={CORPSECRET}"
    resp = requests.get(url).json()
    access_token = resp["access_token"]
    token_expiry = time.time() + 7200  # 2 小时有效期
    return access_token

# === 调用 DeepSeek 生成回复 ===
def ai_reply(user_msg: str) -> str:
    url = "https://api.deepseek.com/v1/chat/completions"
    headers = {"Authorization": f"Bearer {DEEPSEEK_API_KEY}"}
    data = {
        "model": "deepseek-v4-flash",
        "messages": [
            {"role": "system", "content": "你是一个企业客服助手,回答简洁专业。"},
            {"role": "user", "content": user_msg}
        ]
    }
    resp = requests.post(url, headers=headers, json=data).json()
    return resp["choices"][0]["message"]["content"]

# === 发送消息给企业微信 ===
def send_message(userid: str, content: str):
    token = get_access_token()
    url = f"https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token={token}"
    data = {
        "touser": userid,
        "msgtype": "text",
        "agentid": AGENTID,
        "text": {"content": content}
    }
    requests.post(url, json=data)

# === 接收用户消息(Webhook 回调) ===
@app.post("/wecom/callback")
async def wecom_callback(request: Request):
    body = await request.body()
    xml_data = ET.fromstring(body)

    user_msg = xml_data.find("Content").text
    from_user = xml_data.find("FromUserName").text

    # 调用 AI 生成回复
    reply = ai_reply(user_msg)

    # 发送回复
    send_message(from_user, reply)

    return "success"

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

五、本地测试(用 ngrok 暴露端口)

# 安装 ngrok
# 访问 https://ngrok.com/download 下载

# 启动隧道(把本地 8000 端口暴露到公网)
ngrok http 8000

# 复制生成的 URL(如 https://xxxx.ngrok-free.app)
# 回到企业微信后台,配置接收消息:
# URL: https://xxxx.ngrok-free.app/wecom/callback
# Token: mywecomtoken(和代码里一致)
# EncodingAESKey: (点击随机生成,复制到代码里)

六、部署到服务器

# 1. 上传代码到服务器
scp wecom_bot.py root@你的服务器IP:/root/

# 2. SSH 登录服务器
ssh root@你的服务器IP

# 3. 安装依赖
pip3 install fastapi uvicorn requests pycryptodome

# 4. 后台运行
nohup python3 wecom_bot.py &

# 5. 配置企业微信后台的 URL
# http://你的服务器IP:8000/wecom/callback

七、增强功能

功能1:关键词触发(不走 AI)

KEYWORDS = {
    "价格": "我们的价格是 XX,详情请查看:https://...",
    "客服": "人工客服请加微信:xxxxx",
    "退款": "退款政策:7 天内无理由退款...",
}

def get_reply(msg: str) -> str:
    for kw, reply in KEYWORDS.items():
        if kw in msg:
            return reply
    # 没有匹配关键词,调用 AI
    return ai_reply(msg)

功能2:接入知识库(RAG)

# 结合 AnythingLLM 或 Dify 的知识库功能
# 用户提问 → 先查知识库 → 没有再调用 AI
def get_reply_with_kb(msg: str) -> str:
    # 调用 AnythingLLM API 查询知识库
    kb_reply = query_knowledge_base(msg)
    if kb_reply:
        return kb_reply
    return ai_reply(msg)

八、企业微信 vs 普通微信

对比项企业微信普通微信
官方 API✅ 有❌ 没有(需第三方工具)
自动回复✅ 支持⚠️ 有封号风险
适合场景企业客服个人号

结论:企业客服用企业微信,个人号自动回复需谨慎(容易封号)。


九、常见问题

❌ 问题1:消息接收不到

原因:URL 配置错误 或 服务器端口没开放

解决

  1. 用 Postman 测试你的 Webhook URL 是否能访问
  2. 检查服务器防火墙(开放 8000 端口)

❌ 问题2:Access Token 过期

解决:代码里已经处理了自动刷新(2 小时有效期),确保 get_access_token() 函数正确实现。

❌ 问题3:AI 回复慢

解决:用更快的模型(DeepSeek V4 Flash 响应较快),或加消息队列异步处理。


*企业微信机器人适合做售后客服、内部问答等场景,可以大大减少人工成本。*