在企业微信中,外部群(即包含微信用户的群聊)的消息推送与内部群有显著区别。实现这一功能,本质上是让你的业务系统与企业微信服务器完成一次“握手”。
一、 核心实现路径
目前,主流的开发方式有两种,你可以根据业务需求二选一:
1. 群机器人(Webhook)模式
形象比喻:就像在群里塞了一个“传声筒”。
实现方式:在群设置中添加机器人,获取一个 Webhook 地址。你的服务器只需向这个地址发送 JSON 数据包即可。
优点:开发极其简单,不需要复杂的鉴权。
缺点:功能相对单一,主要用于发送文本、Markdown 或图片。
2. 自建应用(Appchat)模式
形象比喻:给群聊指派了一个“专属客服应用”。
实现方式:通过企业微信管理后台的自建应用,调用
appchat/send接口。优点:支持的消息类型最全(如精美的图文卡片),且能与业务逻辑深度绑定。
缺点:开发门槛稍高,需要处理
AccessToken刷新和ChatID维护。
二、 开发三步走(以 Appchat 为例)
第一步:拿到“通行证” (AccessToken)
你需要在服务器后台,利用企业的Corpid和应用的Secret去换取一个令牌。
公式: $AccessToken = 获取接口(Corpid, Secret)$
这个令牌通常有效期为 2 小时,建议在开发时做全局缓存。
第二步:定位“目标群” (ChatID)
外部群的ChatID是推送的唯一标识。通常通过以下方式获得:
主动创建:通过接口创建群聊时,系统会直接返回 ID。
事件接收:当用户在群里开启某些操作时,通过回调 URL 截获群 ID 并存入数据库。
第三步:组装并发送消息
将你要发送的内容按照企业微信要求的 JSON 格式组装好。
示例逻辑:
{ "chatid": "WRK_xxxxxx", // 目标群ID "msgtype": "text", // 消息类型 "text": { "content": "您好,您的订单已处理完成。" } }三、 开发者必须注意的“隐形规则”
在二次开发过程中,很多同学会遇到“代码没报错,但消息收不到”的情况,这通常是因为触发了底层规则:
频率限制:外部群对 API 推送频率有严格管控。如果短时间内高频群发,接口会被暂时封禁。建议:在代码中加入队列机制,平滑发送。
客户接收上限:微信侧为了防止骚扰,限制了单个客户每天接收企业消息的数量。即使接口返回成功,如果客户额度用完,手机端也看不到。
敏感词屏蔽:推送内容若包含明显的违规词汇,会被系统拦截。
四、 总结与建议
如果只是做内部预警或简单的通知,优先用Webhook 机器人。
如果是做正式的客户服务、订单流转通知,务必走自建应用 Appchat 接口,并配套做好消息回执记录。
QiWe开放平台提供了后台直登功能,登录成功后获取相关参数,快速Apifox在线测试,所有登录功能都是基于QiWe平台API自定义开发。