小程式 模版訊息

劉清朗發表於2018-06-22

小程式 模版訊息

建立模版

微信公眾平臺中有很多 模版庫,當然實際業務中 我們的模版是需要定製的,後臺也給予了建立模版的功能

  1. 建立模版
  2. 獲取模版id
  3. 配置模版 傳送

具體的實現

大致操作流程 區分訊息通知的型別: 1.實時推送 2.定時推送

實時推送

獲取formid --》組合模版傳送資料 --》呼叫推送api 獲取formid 需要藉助小程式的form表單提交 form 開啟 report-submit="true" 繫結 bindsubmit 觸發方法,表單的提交採用form中的 button 觸發

程式碼如下

<form bindsubmit="postMsg" report-submit="true">
    <button formType="submit">點選操作</button>
</form>
複製程式碼
  1. formid 傳送訊息模版 兩個限制,一次提交下發一次
  2. 收集的formid七天過期

資料拼接

調取服務端api獲取 accesstoken 模版id 接受人的opendid

formdata:{
    openId:'xxxxxxxx',
    form_id:'接受人產生的formid',
    token:'xxxxxxxx'   
}
複製程式碼
let MsgData = {
    "touser": formdata.openId,
    "template_id": formdata.templateId,
    "page": "pages/diaryPage/diaryPage?diaryid=28",
    "form_id": formdata.formid,
    "data": {
        "keyword1": {
            "value": "你有一條新的回覆,點選檢視"
        },
        "keyword2": {
            "value": "你在做什麼。。"
        },
        "keyword3": {
            "value": "Ivan"
        },
        "keyword4": {
            "value": "2018-06-21 23:57"
        }
    }
}
複製程式碼

注意點

  1. form_id: 接受人是誰,就用誰提交form產生的formid
  2. page的路徑 按照例子寫,很多人寫 diaryPage?diaryid=28 ../diaryPage/diaryPage?diaryid=28 都是不可以的

呼叫推送api 因為api.weixin.qq.com無法配置安全域名,只能採用服務端進行代理轉發

var postURL = 'https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token='+ formdata.token
wx.request({
    url: postURL, 
    data: MsgData,
    method:'POST',
    header: {
        'content-type': 'application/json'
    },
    success: function(res) {
        wx.showToast({
            title: '操作成功'
            icon: 'none',
            duration: 2000
        })
    }
})
複製程式碼

formid 無效, 大部分問題產生原因為:form_id的提交人與資訊接受人不一致

業務分析

很多業務場景 使用者 --》 觸發通知 --》內容所有者

按照上面的傳送 採用 form_id 伺服器吐出 也就是form_id 我們需要提前收錄

App({
    //收錄 form id
    collecFormId:function(FormId){
        var that = this;
        var url = that.data.HOST + 'api/Users/SaveFormId?FormId='+FormId;
        wx.request({
            url: url, 
            method:'GET',
            header: {
                'content-type': 'application/json',
                'Authorization': "accessToken"
            },
            success: function(res) {
            }
        })
    },
})
複製程式碼

呼叫:

const app = getApp()
app.collecFormId(FormId)
複製程式碼

收錄formid池子採用倒序插入,前臺需要formid時候獲取最新的,不管傳送是否成功,直接消耗掉此次使用的formid

小程式 模版訊息

定時推送

區別就在於,此服務依賴私人伺服器定時推送操作,計時 到點推送訊息模版,資料捕獲與收集 拼接與實時釋出操作完全相同

PS 宣告

如有任何錯誤或疑問,請留言,歡迎指正!

如有任何錯誤或疑問,請留言,歡迎指正!

如有任何錯誤或疑問,請留言,歡迎指正!

相關文章