1. 程式人生 > 實用技巧 >微信訊息訂閱

微信訊息訂閱

微信訂閱訊息過程詳解

今年年初,微信小程式的模板訊息改成了訂閱訊息。現在我寫一個流程,方便以後開發的時候照著做

官方文件: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就表示傳送成功了