1. 程式人生 > >那些年用node接入微信走過的坑之(五)---微信選單(自動回覆素材)

那些年用node接入微信走過的坑之(五)---微信選單(自動回覆素材)

序言

之前在第二篇上,寫了如何生成選單,發現寫的不夠完善,在這一篇補上自動回覆訊息和自動回覆圖文

第一步:建立選單

這裡要注意一點是選單的type為’click’,而不是’view’,view只能進行頁面跳轉。

 {
     "type": "click",
     "name": "Q&A",
     "key":"Q&A"
 }

第二步:獲取素材

當我們用程式碼來生成選單時,不能像普通使用者那樣直接選擇素材,而且新增素材後也無法得到mediaId,好蛋疼,那就需要獲取素材,參看素材管理介面:


// 素材獲取
// type : (image,video,voice,news(圖文));  offset:位移; count
function getMaterials(req,res){ var type = req.params.type||'news'; var offset = parseInt(req.params.offset)||0; var count = parseInt(req.params.count)||100; wxOpenApi.getMaterials(type,offset,count, function(error, data, result) { if (!error) { res.success(data); } else
{ res.error(error); } }); } 沒辦法,找到你要傳送的圖文的mediaId。

第三步:響應點選事件

當微信配置好後,微信會以post的方式響應你在微信公眾號開發者配置裡設定的地址,我的響應請求如下,然後傳送客服訊息(介面參看微信開發文件裡的傳送客服訊息),具體配置看第二篇。

var getWxRequest = wechat(config, function(req, res, next) {
    var message = req.weixin;
    if (message.MsgType === 'event'
) { //關注事件,需要將使用者openId儲存到使用者 if (message.Event === 'subscribe') { _wxSubscribeEvent(message, res); } //使用者點選自定義選單是,響應的是click事件 if (message.Event === 'CLICK') { _wxMenuEvent(message,res); } } }) //自定義選單點選事件 function _wxMenuEvent(message, res) { //我的課表點選事件 if (message.EventKey == "Q&A") { var openId = message.FromUserName; var media_id = "avwZzDghpQI5QB06G3djBdL-p0DXcYjaLQzCO7YcmNg"; sendMpNews(openId,media_id,res); } } //傳送客服訊息 function sendMpNews(openId,mediaId,res){ wxOpenApi.sendMpNews(openId, mediaId, function(error, data, result) { if (!error) { res.send("success"); } else { res.send(error); } }); }

結語:
基本配置算是搞的差不多了,沒有很高深,只是記錄下來。
ITDogFire—sky