新闻详情

新闻详情

首页 / 资讯中心 / 详情

企业微信API开发:Webhook 回调与 SCRM 事件总线架构

发布时间:2026/9/30 12:12:50来源:尧图网络
企业微信API开发:Webhook 回调与 SCRM 事件总线架构
官方文档平台介绍 - QiWe API企微 API 开发文档一、业务痛点与技术背景自动回复、入群欢迎、消息存档、SOP 触达都依赖回调。QiWe 官方约束配置方式控制台「应用凭证 → 配置」或 API「设置回调地址」POST application/json3 秒内响应可返回空串 / HTTP 200必须公网可达配置成功会推送「验证回调地址是否可用」Token 下所有已登录账号消息都会转到同一回调 URL接口主动发送的消息不触发回调好友/群消息与手机端发送会触发SCRM 若在回调里同步写库 调 LLM必丢事件。二、核心架构设计与数据流转QiWe Webhook │ ▼ SCRM Ingress (TLS, ≤300ms ACK) │ 验签/限流/去重 ▼ Event Bus (Kafka topic: qiwe.inbound) │ ├─ customer-profile-updater ├─ ai-cs-worker ├─ group-sop-engine └─ message-archive-writer多guid共用回调时第一字段分流键就是guid再进租户路由。三、关键代码与配置示例3.1 IngressFastAPIfrom fastapi import FastAPI, Request, Response import hashlib, json, time import redis, aiokafka app FastAPI() r redis.Redis.from_url(os.environ[REDIS_URL]) producer None # 启动时初始化 def dedupe_key(body: dict) - str: # 以实际回调字段为准guid msgId / uniqueId raw f{body.get(guid)}:{body.get(msgId) or body.get(uniqueId) or body.get(id)} return qiwe:dedupe: hashlib.sha256(raw.encode()).hexdigest() app.post(/webhook/qiwe) async def qiwe_webhook(request: Request): body await request.json() # 先准备 ACK业务异步 text json.dumps(body, ensure_asciiFalse) if 验证回调地址是否可用 in text: return Response(content, media_typetext/plain) key dedupe_key(body) if not r.set(key, 1, nxTrue, ex72 * 3600): return Response(content, media_typetext/plain) await producer.send_and_wait(qiwe.inbound, json.dumps(body).encode(utf-8)) return Response(content, media_typetext/plain)3.2 控制台 / API 配置回调# 方式 A控制台手动配置推荐 # 控制台 → 应用凭证 → 配置 # 方式 B程序化method 以文档「设置回调地址」为准 curl -X POST https://new.qiweapi.com/qiwe/api/qw/doApi \ -H X-QIWEI-TOKEN: $QIWEI_TOKEN \ -H Content-Type: application/json \ -d { method: /callback/setUrl, params: { url: https://scrm.example.com/webhook/qiwe } }3.3 租户与 guid 路由async function routeEvent(evt: any) { const tenant await tenantRepo.byGuid(evt.guid); if (!tenant) { metrics.unknownGuid.inc(); return; } await bus.publish(qiwe.tenant.${tenant.id}, { ...evt, tenantId: tenant.id }); }3.4 事件类型分发器HANDLERS { text: handle_text, image: handle_image, friend_add: handle_friend, room_member: handle_room_member, } def dispatch(evt: dict): t normalize_type(evt) # 按文档字段映射 HANDLERS.get(t, handle_unknown)(evt)四、生产环境避坑与安全风控3 秒铁律Ingress 只做去重入队排障看队列积压而不是回调线程。共用回调一个 Token 多账号务必按guid隔离数据防串租户。验证包配置后立刻打日志确认失败先用 Apifox 公网自测。内网穿透仅开发用生产用正式域名 TLS。主动发送无回调投递状态靠 API 响应 自建发送日志。细节见文首官方文档中的 Webhook 专题。五、本篇交付清单3 秒 ACK Ingress去重 Kafka 事件总线guid 租户路由回调配置两种方式
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Spring Boot + Vue家庭设备维修服务系统:源码剖析与部署实战 2026/9/30 12:52:58

Spring Boot + Vue家庭设备维修服务系统:源码剖析与部署实战

家庭设备维修服务系统这类项目,这几年在Java课程设计和毕业设计里出现的频率相当高。原因也简单:业务场景足够贴近生活,需求容易理解,前后端交互清晰,技术栈又能完全踩中企业招聘JD上的主流关键词。我前前后后帮人revi…

阅读更多 →
智诺方AI|看懂AIGC检测底层逻辑,论文降重别再踩无效修改大坑 2026/9/30 12:52:57

智诺方AI|看懂AIGC检测底层逻辑,论文降重别再踩无效修改大坑

智诺方AI|看懂AIGC检测底层逻辑,论文降重别再踩无效修改大坑,智诺方ai官网www.znfai.cn 微信公众号搜一搜 智诺方ai 近几年,国内越来越多高校在论文预审环节引入AIGC检测,很多毕业生迎来了新难题。过去大家只需要埋头降…

阅读更多 →
8300张YOLO头盔检测数据集实战:从训练调优到落地部署全解析 2026/9/30 12:52:50

8300张YOLO头盔检测数据集实战:从训练调优到落地部署全解析

1. 为什么头盔检测值得单独做一个数据集 智慧交通这个方向这两年热度一直没降过,但真正落到实处的项目,往往不是那些炫技的多模态大模型,而是像 头盔检测 这种看起来"小"、实际需求量极大的场景。我接触过好几个做园区安防、工地…

阅读更多 →
SpringBoot+Vue数学题库组卷系统:从组卷算法到PDF导出实战 2026/9/30 12:52:50

SpringBoot+Vue数学题库组卷系统:从组卷算法到PDF导出实战

一个数学老师说要出一套期中考试卷,从前几天就在后台选题、排版、调格式,直到考试前一天晚上才定稿。我就是在那个时候意识到,一个能自动组卷的web系统,并不是把题目堆在一起那么简单。它要把题库、知识点、难度系数、题型分布、重…

阅读更多 →
Windows 11兼容SQL Server 2012/2019的底层原理与实战修复 2026/9/30 12:52:50

Windows 11兼容SQL Server 2012/2019的底层原理与实战修复

1. 这不是SQL Server的错,是Windows 11和老版本SQL Server“代际兼容性”的硬伤你刚装完Windows 11,兴冲冲下载了SQL Server 2012或2019安装包,一路点“下一步”直到最后——服务启动失败,弹窗上赫然写着“错误1067:进…

阅读更多 →
自动标注与数据飞轮:Grounded-SAM、autodistill、X-AnyLabeling 实战 2026/9/30 12:52:49

自动标注与数据飞轮:Grounded-SAM、autodistill、X-AnyLabeling 实战

1. 自动标注这条链路,到底解决了什么痛点做过视觉项目的人都有一个共识:模型效果的上限,往往不是被网络结构卡住的,而是被标注数据卡住的。一个目标检测或者分割任务,前期花在拉框、描边、分类上的时间,经常…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉