建立模版
微信公眾平臺中有很多 模版庫,當然實際業務中 我們的模版是需要定製的,後臺也給予了建立模版的功能
- 建立模版
- 獲取模版id
- 配置模版 傳送
具體的實現
大致操作流程 區分訊息通知的型別: 1.實時推送 2.定時推送
實時推送
獲取formid --》組合模版傳送資料 --》呼叫推送api 獲取formid 需要藉助小程式的form表單提交 form 開啟 report-submit="true" 繫結 bindsubmit 觸發方法,表單的提交採用form中的 button 觸發
程式碼如下
<form bindsubmit="postMsg" report-submit="true">
<button formType="submit">點選操作</button>
</form>
複製程式碼
- formid 傳送訊息模版 兩個限制,一次提交下發一次
- 收集的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"
}
}
}
複製程式碼
注意點
- form_id: 接受人是誰,就用誰提交form產生的formid
- 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
定時推送
區別就在於,此服務依賴私人伺服器定時推送操作,計時 到點推送訊息模版,資料捕獲與收集 拼接與實時釋出操作完全相同