本片文章將講述微信公衆平臺消息管理中的模板消息
接下來對模板消息進行一番介紹(也就是公衆開發者文檔考過來的^_^,當然自己的使用過程也會穿插進去)
模板消息僅用於公衆號向用戶發送重要的服務通知,只能用於符合其要求的服務場景中,如信用卡刷卡通知,商品購買成功通知等。不支持廣告等營銷類消息以及其它所有可能對用戶造成騷擾的消息。具體模板消息運營規則請讀模板消息運營規範
關於使用規則,請注意:
1、所有服務號都可以在功能->添加功能插件處看到申請模板消息功能的入口,但只有認證後的服務號纔可以申請模板消息的使用權限並獲得該權限;
2、需要選擇公衆賬號服務所處的2個行業,每月可更改1次所選行業;
3、在所選擇行業的模板庫中選用已有的模板進行調用;
4、每個賬號可以同時使用25個模板。
5、當前每個賬號的模板消息的日調用上限爲10萬次,單個模板沒有特殊限制。【2014年11月18日將接口調用頻率從默認的日1萬次提升爲日10萬次,可在MP登錄後的開發者中心查看】。當賬號粉絲數超過10W/100W/1000W時,模板消息的日調用上限會相應提升,以公衆號MP後臺開發者中心頁面中標明的數字爲準。
關於接口文檔,請注意:
1、模板消息調用時主要需要模板ID和模板中各參數的賦值內容;
2、模板中參數內容必須以”.DATA”結尾,否則視爲保留字;
3、模板保留符號”{{ }}”。
關於模板消息內容的設置
下面這張圖就是我設置的一個模板消息
下面這張是測試賬號裏面新增彈出的框題,其中內容的換行直接敲回車就可以了。當時測試的時候又是加/n和//n的,發現自己好傻。。。
然後參數就是{{xx.DATA}}xx不可以重複,因爲調用時需要爲他們設置值,就跟實體Bean一樣。
內容設置完了,後面就是代碼調用了
下面是序列圖
下面這塊代碼是獲取模板消息json,TemplateMsg 是封裝的一個實體Bean,包括髮送人和其他一些信息。
private static String getTemplateJson(TemplateMsg templateMsg) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("touser", templateMsg.getTouser());
jsonObject.put("template_id", TEMPLATEID);
jsonObject.put("url", templateMsg.getUrl());
JSONObject data = new JSONObject();
JSONObject result = new JSONObject();
result.put("value", templateMsg.getResult());
result.put("color", "#173177");
JSONObject bookTitle = new JSONObject();
bookTitle.put("value", templateMsg.getBookTitle());
bookTitle.put("color", "#173177");
JSONObject timeName = new JSONObject();
timeName.put("value", templateMsg.getTimeName());
JSONObject time = new JSONObject();
Date currentTime = templateMsg.getTime();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy年MM月dd HH:mm:ss");
String dateString = formatter.format(currentTime);
time.put("value", dateString);
time.put("color", "#173177");
JSONObject msg = new JSONObject();
msg.put("value", templateMsg.getMsg());
msg.put("color", "#173177");
data.put("result", result);
data.put("bookName", bookTitle);
data.put("timeName", timeName);
data.put("time", time);
data.put("msg", msg);
jsonObject.put("data", data);
return jsonObject.toString();
}
從上面那個代碼塊獲取到json後,調用下方代碼塊獲得InputStream 解析即可。調用方式:connectHttp(url, "POST", getTemplateJson(templateMsg).getBytes("UTF-8"));
public static InputStream connectHttp(String urlStr,String method,byte[] bs) throws IOException{
URL url = new URL(urlStr);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod(method);
connection.setDoOutput(true);
connection.setDoInput(true);
connection.connect();
if (bs != null) {
OutputStream outputStream = connection.getOutputStream();
outputStream.write(bs);
outputStream.flush();
outputStream.close();
}
return connection.getInputStream();
}