1. 程式人生 > 其它 >微信公眾號開發之模板訊息

微信公眾號開發之模板訊息

歡迎留言、轉發

微信極速開發系列文章:點選這裡

最近有點小感冒,文章的更新進度延誤了一些,希望此係列文章對你研究微信公眾開發有幫助。前幾篇文章介紹了微信支付。公眾號支付微信掃碼支付刷卡支付微信買單

此文來聊聊微信中的業務通知----微信模板訊息

如何檢視是否有許可權

在交流群中,總是有人問個人訂閱號認證的訂閱號服務號認證的服務號某個介面是否有許可權使用。

其實這個問題很簡單,在【微信公眾平臺】現在已經可以直接檢視自己的公眾號都能使用那些介面。

登入【微信公眾平臺】進入首頁>開發>介面許可權

模板訊息-許可權.png

新增模板訊息外掛

注意必須是認證的服務號

登入【微信公眾平臺】進入首頁>新增外掛功能>找到模板訊息按照指引流程操作即可。

模板訊息介面使用規則

官方文件傳送訊息-模板訊息介面以及模板訊息運營規範

關於使用規則,請注意:
1、所有服務號都可以在功能->新增功能外掛處看到申請模板訊息功能的入口,但只有認證後的服務號才可以申請模板訊息的使用許可權並獲得該許可權;
2、需要選擇公眾賬號服務所處的2個行業,每月可更改1次所選行業;
3、在所選擇行業的模板庫中選用已有的模板進行呼叫;
4、每個賬號可以同時使用25個模板。
5、當前每個賬號的模板訊息的日呼叫上限為10萬次,單個模板沒有特殊限制。【2014年11月18日將介面呼叫頻率從預設的日1萬次提升為日10萬次,可在MP登入後的開發者中心檢視】。當賬號粉絲數超過10W/100W/1000W時,模板訊息的日呼叫上限會相應提升,以公眾號MP後臺開發者中心頁面中標明的數字為準。

新增模板訊息

按照上文新增模板訊息外掛之後【微信公眾平臺】首頁左側欄就會出現模板訊息選單,收取點選進去需要同意協議並設定公眾賬號服務所處的2個行業。

以上設定好了就可以通過關鍵詞查模板庫中已有的模板,如果沒有找到可以自己申請。

模板訊息-新增模板.png

找到合適的模板訊息點選詳情,進去檢視模板詳情,如果需要新增即可。新增完成會在我的模板中生成模板訊息的模板ID模板ID在後面會用到。

模板訊息-模板詳情.png

測試號新增模板訊息

測試號新增模板訊息.png 測試號新增模板訊息.png

模板訊息介面的使用

客觀前面都是一些準備工作,端杯茶耐心往下看。先來點實際的看看開源專案中封裝的介面是如何使用的。

com.javen.weixin.controller.WeixinMsgController.java

模板訊息的使用.png 接收到的通知

模板訊息的封裝

官方參考文件具體實現com.jfinal.weixin.sdk.api.TemplateMsgApi.java

public class TemplateMsgApi {
    
    private static String sendApiUrl = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=";
    
    /**
     * 傳送模板訊息
     * @param jsonStr json字串
     * @return {ApiResult}
     */
    public static ApiResult send(String jsonStr) {
        String jsonResult = HttpUtils.post(sendApiUrl + AccessTokenApi.getAccessToken().getAccessToken(), jsonStr);
        return new ApiResult(jsonResult);
    }
}

json資料的封裝

com.jfinal.weixin.sdk.api.TemplateData.java

public class TemplateData {

    private String touser;
    private String template_id;
    private String url;
    private String topcolor;
    private TemplateItem data;

    public static TemplateData New() {
        return new TemplateData();
    }

    private TemplateData() {
        this.data = new TemplateItem();
    }

    public String getTouser() {
        return touser;
    }

    public TemplateData setTouser(String touser) {
        this.touser = touser;
        return this;
    }

    public String getTemplate_id() {
        return template_id;
    }

    public TemplateData setTemplate_id(String template_id) {
        this.template_id = template_id;
        return this;
    }

    public String getUrl() {
        return url;
    }

    public TemplateData setUrl(String url) {
        this.url = url;
        return this;
    }

    public String getTopcolor() {
        return topcolor;
    }

    public TemplateData setTopcolor(String topcolor) {
        this.topcolor = topcolor;
        return this;
    }

    public TemplateItem getData() {
        return data;
    }

    public TemplateData add(String key, String value, String color){
        data.put(key, new Item(value, color));
        return this;
    }

    /**
     * 直接轉化成jsonString
     * @return {String}
     */
    public String build() {
        return JsonUtils.toJson(this);
    }

    public class TemplateItem extends HashMap<String, Item> {

        private static final long serialVersionUID = -3728490424738325020L;
        
        public TemplateItem() {}

        public TemplateItem(String key, Item item) {
            this.put(key, item);
        }
    }

    public class Item {
        private Object value;
        private String color;

        public Object getValue() {
            return value;
        }
        public void setValue(Object value) {
            this.value = value;
        }
        public String getColor() {
            return color;
        }
        public void setColor(String color) {
            this.color = color;
        }

        public Item(Object value, String color) {
            this.value = value;
            this.color = color;
        }
    }
}