微信公眾號開發 [04] 模板消息功能的開發


1、模板消息的概況

模板消息的定位是用戶觸發后的通知消息, 不允許在用戶沒做任何操作或未經用戶同意接收的前提下,主動下發消息給用戶。目前在特殊情況下允許主動下發的消息只有故障類和災害警示警告類通知,除此之外都要經過用戶同意或用戶有觸發行為才能下發模板消息。 公眾號只能在模板庫中按照自己的行業來選擇模板。如果模板庫中暫時沒有你想要的模板,在滿足微信規范和要求的情況下,可以為你所在的行業貢獻新模板,幫助充實模板庫

再來看下官方對於模板消息的使用規則:
  • 所有服務號都可以在功能->添加功能插件處看到申請模板消息功能的入口,但只有認證后的服務號才可以申請模板消息的使用權限並獲得該權限

  • 需要選擇公眾賬號服務所處的2個行業,每月可更改1次所選行業;

  • 在所選擇行業的模板庫中選用已有的模板進行調用

  • 每個賬號可以同時使用25個模板。

  • 當前每個賬號的模板消息的日調用上限為10萬次,單個模板沒有特殊限制。【2014年11月18日將接口調用頻率從默認的日1萬次提升為日10萬次,可在MP登錄后的開發者中心查看】。當賬號粉絲數超過10W/100W/1000W時,模板消息的日調用上限會相應提升,以公眾號MP后台開發者中心頁面中標明的數字為准。

從紅色標記字體部分我們可以看到,要想使用模板消息,首先要求是認證后的服務號,其次,模板的框架是微信官方固定好的,根據不同的行業可以不同地選擇, 我們只能針對模板中的填充體進行變化

上面提到的這點,我們從微信的接口文檔注意事項也可以看到:
  • 模板消息調用時主要需要模板ID模板中各參數的賦值內容
  • 模板中參數內容必須以".DATA"結尾,否則視為保留字;
  • 模板保留符號"{{ }}"。

也就是說,當你申請了模板消息以后,設定了所屬行業,你可以在微信后台的模板消息看到如下模板庫(借用一下方倍老師的圖片):


每個模板,都可以通過后面的詳情,來查看其模板形式,和需要填充的內容(如下圖):


之前我們也從文檔中看到,每個賬戶可以同時擁有25個模板,也就是如上圖所示的添加按鈕,你可以添加25個不同模板,最總你會在你的模板庫看到你添加的模板和對應的模板ID:


2、模板消息的推送

好了,現在我們知道模板消息是官方固定好的格式,我們填充內容。而且對應給了我們模板的ID,那么我們來看看,對於推送模板消息,需要我們提供哪些內容:
http請求方式: POST 
https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN

POST數據示例如下:
{
   "touser":"OPENID",
   "template_id":"ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY",
   "url":"http://weixin.qq.com/download",  
   "miniprogram":{
     "appid":"xiaochengxuappid12345",
     "pagepath":"index?foo=bar"
   },          
   "data":{
	   "first": {
	       "value":"恭喜你購買成功!",
	       "color":"#173177"
	   },
	   "keynote1":{
	       "value":"巧克力",
	       "color":"#173177"
	   },
	   "keynote2": {
	       "value":"39.8元",
	       "color":"#173177"
	   },
	   "keynote3": {
	       "value":"2014年9月22日",
	       "color":"#173177"
	   },
	   "remark":{
	       "value":"歡迎再次購買!",
	       "color":"#173177"
	   }
   }
}


參數說明:
參數     是否必填 說明
touser 接收者openid
template_id 模板ID
url 模板跳轉鏈接
miniprogram 跳小程序所需數據,不需跳小程序可不用傳該數據
appid 所需跳轉到的小程序appid(該小程序appid必須與發模板消息的公眾號是綁定關聯關系)
pagepath 所需跳轉到小程序的具體頁面路徑,支持帶參數,(示例index?foo=bar)
data 模板數據
注:url和miniprogram都是非必填字段,若都不傳則模板無跳轉;若都傳,會優先跳轉至小程序。開發者可根據實際需要選擇其中一種跳轉方式即可。當用戶的微信客戶端版本不支持跳小程序時,將會跳轉至url。

我們主要關注的是,如何構造一個符合格式體的JSON字符串,作為POST數據進行傳遞。從上面的POST示例中可以看到,其他部分的設定基本上都是獲取的可以固定知曉的,而data部分,是根據模板格式的不同來填充,其中first和remark部分固定,而keynote部分根據模板不同,要求填寫的也不同,必須和模板對應。

3、自定義模板

如果確實找不到我們自己所需要的模板,那么就在模板庫中,點擊選擇 ”幫助我們完善模板庫“
 
每個月只能自定義三個模板


提交模板之后,要接受7到15天的審核,審核一旦通過就可以開始使用你自己自定義的模版了。

對於自定義模板,還有一系列的審核標准( 微信文檔 - 消息管理 - 發送消息 - 模板消息運營規范),這里摘錄格式和內容規范:
(1)格式
格式正確,模板標准格式(三段式模板)
{ {first.DATA} }
關鍵詞1:{ {keyword1.DATA} }           
關鍵詞2:{ {keyword2.DATA} }
關鍵詞3:{ {keyword3.DATA} }                       
{ {remark.DATA} }

(2)內容
①標題、關鍵詞帶有品牌或公司名等沒有行業通用性的內容,不能通過
包括但不限於:某某公司服務通知、某某商品購買通知
②標題不能帶標點或其它特殊符號,且必須以“通知”或“提醒”結尾,否則不能通過
包括不限於:領取紅包!、天氣提醒!
③易被用作群發,標題或關鍵詞不能簡要說明具體服務行為或使用場景的模板不能通過
包括但不限於:管理員類通知、公告類通知、系統通知
④易對用戶騷擾的,發送頻率較高的模板不能通過
包括但不限於 :更新類通知、回復類通知、互動類通知
⑤推廣宣傳、營銷類的模板不能通過
包括但不限於 :紅包類通知、優惠券類通知、活動類通知、積分類通知、獎勵類通知
⑥模板庫里已存在類似的模板不通過

4、其他

附:
帶JSON數據POST請求訪問微信接口的方法:
//上傳Json接口POST
public static com.alibaba.fastjson.JSONObject uploadPost(URL url,com.alibaba.fastjson.JSONObject json) throws Exception{
    HttpURLConnection conn =(HttpURLConnection) url.openConnection();
    conn.setConnectTimeout(8000);
    conn.setReadTimeout(8000);
    conn.setRequestMethod("POST");
    conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
    conn.setDoOutput(true);
    conn.setDoInput(true);
    conn.setUseCaches(false);
    conn.connect();
    OutputStream os= conn.getOutputStream();
    os.write(json.toJSONString().getBytes("UTF-8"));//傳入參數
    os.flush();
    os.close();
    InputStream is = conn.getInputStream();
    int size = is.available();
    byte[] buf=new byte[size];
    is.read(buf);
    String result =new String(buf,"UTF-8");
    return JSON.parseObject(result);
}




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM