如何實現微信小程序模板消息推送服務教程

關于微信小程序模板消息實現的方法,網上已經有不少的教程,我就沒有必要的寫多么詳實的內容。只不過,上一次在創建模板消息獲取憑證的時候,總是不能成功,最后才發現,report-submit 忘記了加上造成花費了許多時間去找原因,多么痛的領悟!想著也很久沒有寫教程筆記了,抽時間做個記錄。

一、了解什么是模板消息

了解模板消息,我們可以來看看微信開發文檔的說明。

基于微信的通知渠道,我們為開發者提供了可以高效觸達用戶的模板消息能力,以便實現服務的閉環并提供更佳的體驗。

- 模板推送位置:服務通知

- 模板下發條件:用戶本人在微信體系內與頁面有交互行為后觸發,詳見 [下發條件說明]

- 模板跳轉能力:點擊查看詳情僅能跳轉下發模板的該帳號的各個頁面

模板消息即是通過微信的服務通知下發的消息,在某種條件下,用戶收到的通知消息。服務通知的消息與微信服務號,或者朋友對話收到的通知是一樣的,出現在聊天列表中。與微信公眾號的訂閱號不同,訂閱號是被折疊的。

二、如何使用模板消息

首先,需要選擇合適的模板消息 ID 。

模板消息 ID 的選擇和獲取,這里就不多講,不清楚的可以訪問微信開發文檔了。小程序模板消息 ID ,登錄 https://mp.weixin.qq.com 后臺的模板消息處進行選擇。

其次,需要獲取推送消息的 formId 。

微信開發文檔中說:頁面的 <form></form> 組件,屬性 report-submittrue 時,可以聲明為需要發送模板消息,此時點擊按鈕提交表單可以獲取 formId,用于發送模板消息。意思就是獲取 formId 必須要在表單提交的狀態下才可以。

舉個例子:比如艾碼匯小程序需要對發表話題的帖子進行消息推送,主要目的是在帖子通過審核的時候,發送消息通知作者。

1. 創建發表話題的表單


<form bindsubmit="add" report-submit="true">
  ……此處為表單相關內容 …..
  <button>立即提交</button>
</form>

表單中的 report-submit 必須存在,而且必須是 true 。一定不要忘了!!!

2. 提交表單的時候,需要存儲 formId


const add = function (e) {
  let formid = e.detail.formId
  ……此處為表單動作函數…...
}

把獲取的 formid 傳送到服務器進行存儲。注意:開發工具狀態下 formid 是無效的,必須是真機調試或體驗版和正式版才能生效。

三、調用接口下發模板消息

1. 獲取調用接口憑證 access_token

通過 GET 方式獲取接口憑證,請求地址:https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET 其中需要兩個參數,分別是小程序的 appid 和 appsecret 。小程序的 appid 可以在微信小程序后臺開發選項中直接看到,appsecret 則需要生成。

WordPress 獲取 access_token 可以通過 PHP 函數 file_get_contents($url) 進行獲取頁面內容 。


$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET";
$content = file_get_contents($url);
$token = json_decode($content);
$access_token = $token->access_token;

這樣就獲取了調用接口憑證。

2. 發送模板消息

通過小程序的 appid 和 appsecret 獲取了調用接口憑證,接下來就要通過 POST 方式把數據進行封裝推送給用戶了。請求地址:https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token=ACCESS_TOKEN 其中 accsess_token 就是上面的接口憑證。

下發模板消息必須的參數分別有:access_token(接口憑證),touser(接收消息的用戶 openid),template_id(模板消息 ID),form_id(消息憑證)。另外其他參數非必須,但是,如果沒有 data 數據,那么用戶接收到的將會是空模板消息。至于 data 數據,則根據模板消息選取的關鍵詞進行設置。比如以評論消息模板為例,選擇三個關鍵詞,分別是:回復者,回復內容,回復時間。


$data = array( 
?  "keyword1" => array( "value" => "小明" ),
  "keyword2" => array( "value" => "這是回復內容哦" ),
  "keyword3" => array( "value" => "2019-03-23 20:34:06" )
);

3. 推送消息動作

以 PHP 為例,使用 Curl 方式進行消息推送動作。注意:服務器需要支持 Curl 擴展。


function get_content_by_curl($url,$post_data=array(),$header=array()) {
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, ?$url);
  curl_setopt($ch, CURLOPT_HTTPHEADER, ?$header);
  curl_setopt($ch, CURLOPT_HEADER, 0);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
?  curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
?  curl_setopt($ch, CURLOPT_POST, 1);
?  curl_setopt($ch, CURLOPT_POSTFIELDS, ?$post_data);
  curl_setopt($ch, CURLOPT_TIMEOUT, 500);
?  curl_setopt($ch, CURLOPT_AUTOREFERER,true);
  $content = curl_exec(?$ch);
  $info = curl_getinfo(?$ch,CURLINFO_EFFECTIVE_URL);
  $code = curl_getinfo(?$ch,CURLINFO_HTTP_CODE);
?  curl_close($ch);
  if($code == "200") {
?    return $content;
?  } else {
?    return null;
?  }
}

$url = "https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token=".?$token->access_token;
$header = array("Content-Type: application/json;charset=UTF-8" );
get_content_by_curl($url,json_encode($data),$header);

這樣就執行了 POST 模板消息數據了。

四、最簡單的推送服務

如果覺得搞一個小程序推送服務很麻煩,其實,可以使用 vPush 推送服務,簡單,易用,可創建推送接口,而且,不要求小程序后端是什么框架都可以接入。vPush 推送服務是古人云 小程序開發的推送服務系統,支持小程序查看推送任務。有需要的可以聯系我(微信號:e80111947),定制小程序推送接口服務。訂閱會員也可以找我哦,可以享受九折優惠!

封面題圖:JESHOOTS-com / Pixabay

相關推薦

1 條評論

  1. 歲月

    發發發

發表評論

微信掃一掃

微信掃一掃

微信掃一掃,分享到朋友圈

如何實現微信小程序模板消息推送服務教程
返回頂部

顯示

忘記密碼?

顯示

顯示

獲取驗證碼

Close
3d组六技巧