背景

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