背景
- 微信于今日发表《服务号模板音讯能力调整》,原先的模板音讯能力将于 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,欢送署名转载 <<<