那些年用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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值