那些年用node接入微信走過的坑之(五)---微信選單(自動回覆素材)
阿新 • • 發佈:2018-12-23
序言
之前在第二篇上,寫了如何生成選單,發現寫的不夠完善,在這一篇補上自動回覆訊息和自動回覆圖文
第一步:建立選單
這裡要注意一點是選單的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