实操审校说明
本文属于自动化实操教程。涉及采集、Webhook、消息推送或第三方平台时,请优先使用官方 API,并遵守 robots、服务条款、频率限制和数据隐私要求。请勿用于绕过风控、批量骚扰或未授权采集。
企业微信自动回复机器人教程:FastAPI 接收消息并调用 AI 回复
📅 更新时间:2026 年 6 月
🔧 参考环境:企业微信 API v3 / Python 3.11+ / FastAPI
👤 适合人群:想自动化处理企业微信消息的运营/开发者
⏱ 预计完成时间:1 小时
一、先明确使用边界
企业微信自动回复应只用于自有企业、已授权客户沟通和内部运营。涉及用户消息、手机号、订单等个人信息时,需要遵守隐私政策和数据最小化原则。
二、能实现什么?
- 客户发消息 → 自动识别意图 → AI 回复
- 关键词触发 → 自动发送预设话术
- 未识别的问题 → 转人工客服
- 每天定时推送报告/提醒
二、准备工作
| 材料 | 说明 |
| 企业微信账号 | 需要管理员权限(创建应用) |
| 服务器(可选) | 本地开发可以先用 ngrok 暴露本地端口 |
| Python 3.11+ | 运行后端代码 |
三、创建企业微信应用
步骤1:登录企业微信管理后台
- 访问:https://work.weixin.qq.com/
- 用管理员账号登录
步骤2:创建自建应用
- 应用管理 → 自建 → 创建应用
- 填写:
- 应用名称:AI 客服助手
- 应用 Logo:上传图片
- 可见范围:选择需要使用的部门/成员
- 创建完成后,记录:
- AgentId(应用 ID)
- Secret(应用密钥,点击「查看」获取)
步骤3:配置接收消息服务器
- 在应用详情页 → 接收消息 → 设置 API 接收
- 需要填写:
- URL:http://你的服务器IP:8000/wecom/callback(后面写代码实现)
- Token:随便填一个字符串(如 mywecomtoken)
- EncodingAESKey:点击「随机生成」
- 先不保存(等代码写好后再填真实 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 配置错误 或 服务器端口没开放
解决:
- 用 Postman 测试你的 Webhook URL 是否能访问
- 检查服务器防火墙(开放 8000 端口)
❌ 问题2:Access Token 过期
解决:代码里已经处理了自动刷新(2 小时有效期),确保 get_access_token() 函数正确实现。
❌ 问题3:AI 回复慢
解决:用更快的模型(DeepSeek V4 Flash 响应较快),或加消息队列异步处理。
*企业微信机器人适合做售后客服、内部问答等场景,可以大大减少人工成本。*