背景
- 微信于今日发表 《服务号模板音讯能力调整》,原先的模板音讯能力将于 2021 年 4 月 30 日 24:00 下线,届时将无奈应用此接口发送模板音讯。
- 简略来讲,向小程序开发看齐,不能间接通过公众号向已订阅的用户推送模板音讯。例如:改版后即便订阅了 招商银行信用卡核心,也无奈通过公众号收到 动账、还款的音讯揭示。
- 笔者从事行业对于模板音讯属于强需要,所以整顿变更订阅告诉 的革新和实现过程供大家参考。
名称解释
- 一次订阅
指用户订阅一次,服务号可不限工夫公开发一条对应的订阅告诉;
- 长期订阅
指用户订阅一次,服务号可长期屡次下发告诉,长期订阅告诉仅向政务民生、医疗等公共服务畛域凋谢;
- 服务告诉
微信默认开启服务告诉性能,在用户聊天列表中会呈现橙色的服务告诉
用户订阅流程
- 如上图, 用户能够通过点击公众号公布的图文中插入多个订阅告诉的按钮,用户点击图文中的按钮订阅
- 如上图,用户在在开发者提供的 H5 页面中,通过 JSSDK 拉起订阅按钮
// 首先导入 JSSDK http://res2.wx.qq.com/open/js/jweixin-1.6.0.js<wx-open-subscribe template="TenvU22BA1jCp4YHfYEpRuESXYReQyDuhs4vbdWA99I" id="subscribe-btn"> <template slot="style"> <style> .subscribe-btn { color: #fff; background-color: #07c160; } </style> </template> <template> <button class="subscribe-btn"> 上课告诉 </button> </template></wx-open-subscribe><script>var btn = document.getElementById('subscribe-btn'); btn.addEventListener('success', function(e){ // 依据回调确定用户是 勾销 还是容许 // 如果无奈接管微信回调的状况下,须要在此处保留用户订阅的新姐});</script>
接管微信回调的订阅事件
- 用户在图文/H5 等场景内订阅告诉的操作 , 会向开发者接口推送以下报文
<xml> <ToUserName>公众号微信号</ToUserName> <FromUserName>用户 openid</FromUserName> <CreateTime>工夫戳</CreateTime> <MsgType><![CDATA[event]]>(固定值)</MsgType> <Event><![CDATA[subscribe_msg_popup_event]]>(固定值)</Event> <SubscribeMsgPopupEvent> <List> <TemplateId>模板 id</TemplateId> <SubscribeStatusString>用户点击行为(批准、勾销发送告诉)</SubscribeStatusString> <PopupScene>场景(图文、H5)</PopupScene> </List> </SubscribeMsgPopupEvent></xml>
- 依据推送报文,保留至用户和订阅模板关系表,供下文推送应用
推送告诉流程
- 调用微信服务发送订阅告诉
POST https://api.weixin.qq.com/cgi-bin/message/subscribe/bizsend?access_token=ACCESS_TOKEN
- 申请参数阐明
{ "touser": "接收者openid ,必须是曾经订阅此音讯模板的用户,不然无奈推送", "template_id": "音讯模板ID", "page": "点击跳转的链接", "data": { "name1": { "value": "冷冷"}, "time7": { "value": "2021-01-28 23:15:42" } }}
问题汇总
- 长期订阅告诉申请问题
目前开发的行业较少 (政府、公共)其余行业是否凋谢长期订阅须要提前提供资料申请,防止模板音讯到期后导致业务阻塞。
- 框架适配问题
目前支流微信开发 SDK (WxJava、 JFinal Weixin) 还未有相干的事件实现、接管报文等须要开发者本人解决。
- 防止用户勾销受权
在 H5 页面 JSSDK 拉起用户 【容许】、【勾销】都会有回调事件,在勾销状况给予用户明确阐明,并做好短信告诉的降级策略。
>>> 源码 https://gitee.com/log4j/pig,欢送署名转载 <<<