如果你有一個(gè)電商小程序,或是一個(gè)活動(dòng)報(bào)名小程序,那么你可能會(huì)遇到這樣的問題:
1)當(dāng)消費(fèi)者購買商品后,如何通知他們東西發(fā)貨了呢?
2)如果用戶報(bào)名成功,怎么樣快速又方便地告知他們報(bào)名結(jié)果呢? 這時(shí)候,我們就需要用到小程序的「模板消息」接口。今天,小編就來教你如何正確地發(fā)送模板消息。 什么是模板消息? 顧名思義,模板消息是一種「套上模板的消息」。通常,服務(wù)方向用戶推送的消息都帶有通知性質(zhì),文案也相對固定。服務(wù)方將這類固定的文案制作成模板,這些文案就可以快速重復(fù)使用。 在發(fā)送時(shí),服務(wù)方只需向模板內(nèi)填充必要的數(shù)據(jù)(如客戶名稱、訂單號、價(jià)格等),就可以將這條消息發(fā)送給用戶了。 例如,航空公司可能會(huì)向用戶發(fā)送這樣的消息:
張三,您好,您已購買 1 月 1 日 13:00 從廣州飛往上海的 AB1234 航班的機(jī)票。 從中可以得知,除了一些需要根據(jù)實(shí)際情況填寫的信息,其他文案都是固定的。那么,就可以提取這樣的消息模板:
(旅客姓名),您好,您已購買(時(shí)間)從(出發(fā)地)飛往(到達(dá)地)的(航班號)航班的機(jī)票。 當(dāng)航空公司發(fā)送消息時(shí),他們只需要根據(jù)實(shí)際情況填充信息,就可以將這條消息發(fā)送給相應(yīng)的用戶了。 微信小程序的模板消息限制 與普通的模板消息不同,在微信小程序中發(fā)送模板消息,具有一定條件。官方文檔中規(guī)定,用戶在小程序中進(jìn)行支付或提交表單,小程序才能向用戶發(fā)送模板消息。 那么,微信如何得知用戶是否有支付行為、表單提交的行為呢? 用戶支付或提交表單過后,開發(fā)者可以得到模板消息的 formID(為了方便解釋,將它叫做「發(fā)送碼」),這代表著開發(fā)者有發(fā)送模板消息的權(quán)限。開發(fā)者發(fā)送模板消息時(shí),就需要向微信提供這樣的發(fā)送碼,完成模板消息的發(fā)送過程。 而且,發(fā)送碼是一次性的,用一次就會(huì)作廢。也就是說,如果用戶只發(fā)起過一次支付或提交過一次表單,那么開發(fā)者也只能向用戶發(fā)送一次消息。除了需要用戶進(jìn)行支付或提交表單,小程序也不能通過模板消息接口,群發(fā)推廣信息、垃圾信息等。 如何發(fā)送模板消息? 知道了這些,就能得知,微信小程序發(fā)送模板消息的大致步驟是: 1、開發(fā)者在微信公眾平臺,創(chuàng)建一個(gè)新的消息模板;
2、獲取支付過程或提交過程中,微信返回的消息發(fā)送碼;
3、開發(fā)者利用消息發(fā)送碼,帶上模板中非固定的信息,向微信發(fā)起發(fā)送消息的請求。 那么,我們一步步開始吧。 創(chuàng)建新的消息模板 既然是「模板消息」,那第一步當(dāng)然是創(chuàng)建新的模板了。
1、打開 https://mp.weixin.qq.com 并登錄小程序帳戶;
2、 點(diǎn)擊左側(cè)菜單中的「模板消息」;
3、進(jìn)入頂部的「模板庫」,從微信預(yù)置的模板中,選擇一個(gè)合適的模板;
4、確定模板中所使用的關(guān)鍵詞。 如果關(guān)鍵詞列表中沒有你希望使用的關(guān)鍵詞,你可以點(diǎn)擊申請一個(gè)新的關(guān)鍵詞。但申請新的關(guān)鍵詞需要提交審核。
小程序 推送
模板添加后,會(huì)獲得模板 ID(template_id),稍后就可以用到它。
小程序 推送
獲取模板消息發(fā)送碼
創(chuàng)建消息模板后,還需要「發(fā)送碼」,才能發(fā)送模板消息。
以提交表單為例,看看發(fā)送碼的獲取方式。
首先,在小程序中,放置一個(gè)帶有 report-submit 屬性的表單:
<form bindsubmit="formSubmit" bindreset="formReset" report-submit>
<!-- 此處是表單元素 -->
<button formType="submit">Submit</button><!-- 提交按鈕 -->
</form>
然后,在頁面的 Page() 函數(shù)中,新建一個(gè)提交表單的函數(shù)。
在函數(shù)中,就能接收到 formId,也就是發(fā)送碼了。
var sendercode; // 用于存儲(chǔ)發(fā)送碼
Page({
//其他的函數(shù)
formSubmit: function(e) {
sendercode = e.detil.formId;)
}
如果你想在微信發(fā)起支付請求后,獲取發(fā)送碼,那么你需要調(diào)用微信支付中的「統(tǒng)一下單」接口。
當(dāng)「統(tǒng)一下單」接口請求成功之后,回調(diào)值中的「預(yù)支付交易會(huì)話標(biāo)識」,也就是 prepay_id,就可以作為發(fā)送碼來使用。
發(fā)送模板消息
經(jīng)過這么多步驟,終于可以向用戶發(fā)送模板消息了。在這一步,所有過程都是在開發(fā)者的服務(wù)器完成。
首先,通過 GET 方式,獲取到小程序的 Access Token:
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
接著,用 POST 方式,向微信提交模板消息的發(fā)送請求。
請求地址為:
https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token=ACCESS_TOKEN
請求數(shù)據(jù)的格式如下:
"touser": "OPENID", // 接收消息的用戶的 OpenId,需要使用其他接口獲取
"template_id": "TEMPLATE_ID", // 模板 ID,在第一步中可以獲取到
"page": "index", // 進(jìn)入小程序時(shí)打開的頁面,可以添加參數(shù)
"form_id": "FORMID", // 一次性發(fā)送碼
"data": { // 模板中非固定字段,用于填充模板
"keyword1": {
"value": "張三", // 模板中,填充字段的信息
"color": "#173177" // 字段的展示顏色
},
"keyword2": {
"value": "2015 年 01 月 05 日 12:30",
"color": "#173177"
}
}
}
當(dāng)接口返回成功消息時(shí),就代表著模板消息已經(jīng)發(fā)送出去了。有關(guān)于微信小程序模板消息接口的更多使用方法和使用限制,可以訪問官方文檔了解詳情。