QiWe开放平台 · 个人名片
API驱动企微 外部群 自动化,让开发更高效
官方站点:www.qiweapi.com
对接通道:进入官方站点联系客服
团队定位:企微生态深度服务,专注 API+RPA 融合技术方案
要实现自动化响应,首先要让 Python 程序“听”到外部群在说什么。不同于官方 API 复杂的配置,基于 RPA 的接口通常提供 WebSocket 或 HTTP 推送两种方式。
1. 技术方案:基于 Flask/FastAPI 的消息接收
我们将使用 FastAPI 快速搭建一个高性能的消息接收端口,用于接收来自接口端的实时数据推送。
2. 代码实现:解析外部群消息流
根据文档规范,当外部群产生消息时,接口会向你预设的服务器发送如下结构的 JSON:
- 群聊识别:通过
external_group_id区分。 - 发送者识别:通过
sender_wxid获取。 - 消息类型:
type(1: 文本, 3: 图片...)。
from fastapi import FastAPI, Request
import uvicorn
app = FastAPI()
@app.post("/callback")
async def wechat_callback(request: Request):
# 1. 接收来自接口端的原始数据
data = await request.json()
# 2. 识别消息来源
msg_type = data.get("type")
room_id = data.get("room_id") # 外部群ID
sender = data.get("sender") # 发送人wxid
content = data.get("content") # 消息内容
# 3. 逻辑过滤:仅处理外部群的消息
if "@chatroom" in room_id:
print(f"收到外部群 [{room_id}] 消息: {content}")
# 关键词自动触发逻辑
if "技术支持" in content:
await handle_support_request(room_id, sender)
return {"status": 200, "message": "success"}
async def handle_support_request(room_id, sender):
# 这里可以调用上一篇写的 QiWeApiConnector 主动回复
print(f"正在为 {sender} 检索技术文档...")
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=8000)
3. 异步处理的优势
在处理外部群消息时,Python 的 async/await 机制至关重要。
- 非阻塞:当收到一条图片消息需要下载并上传到云端时,异步操作不会阻塞后续其他外部群的消息接收。
- 并发响应:如果你管理着几百个外部群,同步代码会导致消息积压,而异步架构可以轻松应对瞬时的高频对话。
4. 进阶技巧:消息审计与合规过滤
通过 Python 监听,你可以轻松实现官方后台较难定制的功能:
- 违规词拦截:在消息推送给群成员之前(或发出后秒级)进行检索。
- 自动保存附件:监听到文件类消息(Type: 6),自动调用
GetMsgFile接口将外部群资料保存到本地服务器。
总结
掌握了“监听”与“主动调用”,你就完成了企业微信自动化闭环的两大支柱。Python 的简洁性使得我们可以在几行代码内完成复杂的业务逻辑。