1. 程式人生 > >微信公眾號開發教程(五)傳送模板訊息

微信公眾號開發教程(五)傳送模板訊息

作者:陳惠,叩丁狼教育高階講師。原創文章,轉載請註明出處。

傳送模板訊息也叫業務通知,聽起來雖然有點陌生,但是在生活當中是經常見到的。這一次,我們直接來看個效果。

圖片.png

如上圖所示,在我們的生活中,無論是微商城消費,還是日常生活消費,都可能收到這種提示,比如訂單通知,快遞狀態通知,銀行卡支付通知,都屬於業務通知,很多公眾號也都實現了這種功能,當觸發了某種行為或狀態改變,就會發送這麼一個訊息給你,因為這種訊息都是按照一定的的格式來編輯,所以也叫模板訊息。

傳送模板訊息

那要怎麼才能傳送呢?我們開啟開發文件”訊息管理”中的”模板訊息介面”。
圖片.png

要注意的是認證後的服務號才可以申請模板訊息的使用許可權並獲得該許可權,否則就只能使用測試號。

該頁面中介紹了幾個介面,我們主要使用第6個來發送模板訊息。
其他的介面主要是為了方便開發者獲取或設定公眾號的所屬行業,比如餐飲,教育等等,如果是正式的公眾號,也可以登入公眾平臺來進行設定,其他的介面就是獲取模板的資訊等,如果沒需求可以不呼叫。

圖片.png

我們要傳送模板訊息,第一步是需要建立一個模板,有了模板之後,我們才能填充內容來進行傳送。

1.建立模板
建立模板不需要呼叫介面,在公眾號後臺即可設定。
圖中是測試號中的設定介面。
圖片.png

現在我們來按照下面案例來新建一個模板。但是模板的內容是有一定的規則的,不能隨便新增。

圖片.png

注意:
1、測試模板的模板ID僅用於測試,不能用來給正式帳號傳送模板訊息
2、為方便測試,測試模板可任意指定內容,但實際上正式帳號的模板訊息,只能從模板庫中獲得
3、需為正式帳號申請新增符合要求的模板,需使用正式號登入公眾平臺,按指引申請
4、模板內容可設定引數(模板標題不可),供介面呼叫時使用,引數需以{{開頭,以.DATA}}結尾

圖片.png

模板內容裡面的內容如果是不會變動的就可以直接寫死,如果是變動的一定要設定成引數。
引數需要以”{{“這兩個左花括號開頭,以”.DATA}}”結尾,如上圖所示。

儲存之後,微信會給該模板分配一個ID,待我們要傳送模板訊息的時候就需要用到這個ID了。
圖片.png

使用POST的方式來發送,並且把模板訊息的資料以json資料的格式傳遞到該介面。

我們先來看看json裡面的引數主要有哪些?

圖片.png

實際上,必傳的只有 touser接收者,template_id模板id,data模板資料這3個引數,其他的可以不傳,如果傳了就會有相應的跳轉,比如跳轉至指定url,或者跳轉至小程式。

準備好的json資料:

{
       "touser":"OPENID",
       "template_id":"QI4JojaGvL9-5ynjwFwOSPqH2eWXHpr7ZeseysefKqc",
       "data":{
               "first": {
                   "value":"恭喜你購買成功!",
                   "color":"#173177"
               },
               "product":{
                   "value":"巧克力",
                   "color":"#173177"
               },
               "amount": {
                   "value":"39.8元",
                   "color":"#173177"
               },
               "time": {
                   "value":"2014年9月22日",
                   "color":"#173177"
               },
               "remark":{
                   "value":"歡迎再次購買!",
                   "color":"#173177"
               }
       }
}

把touser改成接收訊息的使用者的OPENID就可以了 。

建立傳送模板的方法:

    //傳送模板訊息的介面
    public static final String SEND_TEMPLATE_URL = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN";

    /**
     * 傳送模板
     *
     */
    public static void sendTemplate(String data){
        String result = HttpUtil.post(SEND_TEMPLATE_URL.replace("ACCESS_TOKEN", getAccessToken()),data);
        System.out.println(result);
    }

getAccessToken方法是上一篇文章自定義選單的時候已經建立好了,主要是獲取我們呼叫介面的憑據AccessToken。

執行時把json資料傳入到方法中,我們可以看到打印出來的結果。

{"errcode":0,"errmsg":"ok","msgid":232391810540961792}

errcode為0代表已經發送成功。如果errcode是其他值,請開啟文件的錯誤返回碼頁面中查詢錯誤資訊。

手機上的效果,參考圖中紅線框:

模板訊息