序言
之前在第二篇上,写了如何生成菜单,发现写的不够完善,在这一篇补上自动回复消息和自动回复图文
第一步:创建菜单
这里要注意一点是菜单的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