企业微信 API + DeepSeek / OpenAI:手把手教你搭建企微群 AI 智能客服机器人
这篇是实操向的,从开通实例到机器人跑起来,一步步走。不讲概念,只讲怎么做。
第一步:开通企微实例,拿到凭证
在 Eyun 控制台开通企微实例,拿到三样东西:
-
appid:实例标识,格式we_xxx -
App Token:API 调用凭证,格式eyk_xxxx -
签名密钥:回调验签用
回调地址填你的服务器地址,比如 https://your-domain.com/wx-api/webhook/。
第二步:搭回调服务
用 Flask 搭一个最小可用的回调服务:
from flask import Flask, request
import hmac, hashlib, json, requests
app = Flask(__name__)
BASE = "https://your-base-url"
APPID = "we_xxx"
TOKEN = "eyk_xxxx"
SECRET = "your-signature-secret"
HEADERS = {"Authorization": f"Bearer {TOKEN}"}
@app.route("/wx-api/webhook/", methods=["POST", "GET"])
def webhook():
# 验证请求
echostr = request.args.get("echostr") or (
request.json.get("echostr") if request.is_json else None
)
if echostr:
return echostr
# 验签
signature = request.headers.get("X-Eyun-Signature")
raw_body = request.get_data(cache=True)
expected = hmac.new(SECRET.encode(), raw_body, hashlib.sha256).hexdigest()
if not hmac.compare_digest(expected, signature):
return "forbidden", 403
# 去重
delivery_id = request.headers.get("X-Eyun-Delivery")
if not redis.setnx(f"cb:{delivery_id}", 1, ex=86400):
return "ok"
# 处理消息
data = request.json["data"]
handle_message(data)
return "ok"
def handle_message(data):
if data.get("messageType") != 1: # 只处理群聊
return
text = data.get("content", "").strip()
if not text:
return
# 判断该不该回
if not should_reply(text):
return
# 调 AI
answer = ask_ai(text, data["roomId"])
# 发送回复
send_text(data["conversationId"], answer)
def should_reply(text):
if len(text) < 5:
return False
return any(k in text for k in ["怎么", "请问", "求助", "@机器人"])
def ask_ai(question, room_id):
# 取群上下文
context = get_recent_messages(room_id, limit=10)
messages = [
{"role": "system", "content": "你是企业微信群里的 AI 客服,回复简洁专业。"},
{"role": "user", "content": f"群聊记录:\n{context}\n\n问题:{question}"}
]
resp = requests.post(
"https://api.deepseek.com/v1/chat/completions",
headers={"Authorization": f"Bearer {DEEPSEEK_KEY}"},
json={"model": "deepseek-chat", "messages": messages, "max_tokens": 500}
).json()
return resp["choices"][0]["message"]["content"]
def send_text(conv_id, text):
requests.post(
f"{BASE}/wx-api/api/message/sendText",
headers=HEADERS,
json={"appid": APPID, "conversationId": conv_id, "content": text}
)
if __name__ == "__main__":
app.run(port=5000)
第三步:配置 AI 模型
DeepSeek 和 OpenAI 的调用方式一样,换 endpoint 和 model 名就行:
| 平台 | Endpoint | Model |
|---|---|---|
| DeepSeek |
|
|
| OpenAI |
|
|
API Key 在各自平台申请,充钱就能用。
第四步:加知识库(可选)
如果希望机器人回答产品相关问题,需要接知识库。简单做法是把 FAQ 存成文本,每次调 AI 时塞进去:
FAQ = """
Q: 怎么申请权限?
A: 在 OA 系统提交申请,审批通过后自动开通。
Q: 怎么重置密码?
A: 点击登录页"忘记密码",按提示操作。
"""
def ask_ai(question, room_id):
messages = [
{"role": "system", "content": f"你是企业微信群里的 AI 客服。参考以下 FAQ:\n{FAQ}"},
{"role": "user", "content": question}
]
# ...
FAQ 多的话,建议用向量数据库(Pinecone、Milvus、Chroma)做检索,别全塞 prompt 里。
第五步:上线前检查
-
回调地址能公网访问,HTTPS
-
签名密钥配置正确
-
群聊消息能正常接收
-
AI API Key 有余额
-
单群频控已加
一个真实的上线数据
某团队的群 AI 客服,上线第一周:
-
收到消息 1,200 条
-
AI 回复 340 条(28%)
-
转人工 86 条(7%)
-
平均响应时间 4 秒
剩下的 65% 是闲聊和已解决的问题,AI 正确识别并跳过了。
企微回调和发送的字段在Eyun 开发文档里能查到,实例和凭证在 Eyun 控制台开通。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)