微信訊息訂閱
阿新 • • 發佈:2020-08-26
微信訂閱訊息過程詳解
今年年初,微信小程式的模板訊息改成了訂閱訊息。現在我寫一個流程,方便以後開發的時候照著做
官方文件:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/subscribe-message.html
訂閱訊息和模板訊息的區別
簡單用自己的話介紹一下,模板訊息是限制在7天內,有次數限制的傳送,由使用者完成一個操作後被動的觸發。訂閱訊息首先需要使用者進行授權,授權的時候會有彈框提示;使用者每授權一次,就能推送一次。也有不再彈框的選項,但是仍然需要授權這個動作,才可以推送訊息,所以訂閱訊息也叫一次性訂閱訊息。目前也有一次授權一直可以推送的長期訊息,但是微信有限制使用的小程式類別,所以普通小程式要想能多次給使用者傳送訊息,只能引導使用者多次點選授權。
所以按照官方的意思,有些小程式還是應該把訊息推送做到服務號上。
選擇模板
在公眾平臺上開通訂閱訊息,選擇模板。模板會根據你小程式的類別不同有所不同。
選用一個模板
編排訊息的格式,儲存即可,會生成一個模板id,等會會用到
獲取下發許可權
小程式上需要設定事件,觸發彈框,使用者點選同意之後才可以訊息推送
wx.requestSubscribeMessage({ tmplIds: ['2hHe9FLnV594nDvrCcksg25wgUT_HwwKNYluXfCqHhY'], // 填入剛剛生成的模板id success(res){ console.log(res) },fail(res){ console.log(res) } })
觸發事件後會調出一個彈窗,使用者點選允許後,有一個回撥
如果使用者勾選了保持選項,下一次就不會彈框
要注意的是,使用者每授權一次,小程式就有傳送訂閱訊息的許可權一次,假如使用者點選了三次授權,那麼小程式就有許可權推三條訂閱訊息。
服務端呼叫介面傳送訂閱訊息
POST https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=ACCESS_TOKEN
// 請求示例 { "touser": "OPENID", // 使用者openid "template_id": "TEMPLATE_ID", // 模板id "data": { //訊息內容 "number01": { "value": "339208499" }, "date01": { "value": "2015年01月05日" }, "site01": { "value": "TIT創意園" } } }
- 注意在url中拼上access_token,請求體中使用正確的openid
- accesstoken需要用appid,appsecret去auth.getAccessToken換,每兩個小時更新一次。openid要wx.login的code使用code2session去換
- 不同的小程式,同一個使用者的openid不同
data
注意data的內容要對照官方文件中的填寫
例如我的模板
返回ok就表示傳送成功了