背景
-
微信于今日宣布 《服務號模板訊息能力調整》,原先的模板訊息能力將于 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 >
上課通知
</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,歡迎署名轉載 <<<
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/255456.html
標籤:Java
