关闭

那些年用node接入微信走过的坑之(五)---微信菜单(自动回复素材)

144人阅读 评论(0) 收藏 举报
分类:

序言

之前在第二篇上,写了如何生成菜单,发现写的不够完善,在这一篇补上自动回复消息和自动回复图文

第一步:创建菜单

这里要注意一点是菜单的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

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:28383次
    • 积分:655
    • 等级:
    • 排名:千里之外
    • 原创:34篇
    • 转载:20篇
    • 译文:1篇
    • 评论:10条
    文章分类
    最新评论