nodejs微信公众号开发——4.自动回复各种消息

in 编程
关注公众号【好便宜】( ID:haopianyi222 ),领红包啦~
阿里云,国内最大的云服务商,注册就送数千元优惠券:https://t.cn/AiQe5A0g
腾讯云,良心云,价格优惠: https://t.cn/AieHwwKl
搬瓦工,CN2 GIA 优质线路,搭梯子、海外建站推荐: https://t.cn/AieHwfX9

上一篇文章:nodejs微信公众号开发——3.封装消息响应模块,实现了对消息接口的模块化处理,方便后期的使用,本篇文章将介绍微信公众号回复各种消息的功能实现,包括文本、图片、语音、视频、音乐、图文等。(项目github地:https://github.com/Panfen/wem... )

注:感觉最近localtunnel很不稳定,测试起来比较麻烦,有条件的自己搞个云服务器吧,我比较偷懒,几继续使用localtunnel了。

1. 被动回复用户消息

当用户发送消息给公众号时(或某些特定的用户操作引发的事件推送时),会产生一个POST请求,开发者可以在响应包(Get)中返回特定XML结构,来对该消息进行响应(现支持回复文本、图片、图文、语音、视频、音乐)。发送被动响应消息是对微信服务器发过来消息的一次回复。
开发过程中如果遇到该公众号暂时无法提供服务,请稍后再试的情况,一般是由两个原因造成的:

具体的消息规则可参看微信平台开发者文档:被动回复用户消息

2. 回复消息的实现

我们之前的关注自动回复是在weixin.js里面实现的,其他的消息回复也写在这个文件里面:

if(message.MsgType === 'event'){
    if(message.Event === 'subscribe'){
        if(message.EventKey) {
            console.log('扫描二维码关注:'+ message.EventKey +' '+ message.ticket);
        }
        this.body = '终于等到你,还好我没放弃';
    }else if(message.Event === 'unsubscribe'){
        this.body = '';
        console.log(message.FromUserName + ' 悄悄地走了...');
    }else if(message.Event === 'LOCATION'){
        this.body = '您上报的地理位置是:'+ message.Latitude + ',' + message.Longitude;
    }else if(message.Event === 'CLICK'){
        this.body = '您点击了菜单:'+ message.EventKey;
    }else if(message.Event === 'SCAN'){
        this.body = '关注后扫描二维码:'+ message.Ticket;
    }
}
else if(message.MsgType === 'text'){
    var content = message.Content;
    var reply = '你说的话:“' + content + '”,我听不懂呀';
    if(content === '1'){
        reply = '金刚:骷髅岛';
    }
    else if(content === '2'){
        reply = {
            type:'image',
            mediaId:'http://tu.23juqing.com/d/file/html/gndy/dyzz/2017-04-09/da9c7a64ab7df196d08b4b327ef248f2.jpg'
        }
    }
    else if(content === '3'){
        reply = [{
            title:'金刚.骷髅岛',
            description:'南太平洋上的神秘岛屿——骷髅岛。史上最大金刚与邪恶骷髅蜥蜴的较量。',
            picUrl:'http://tu.23juqing.com/d/file/html/gndy/dyzz/2017-04-09/da9c7a64ab7df196d08b4b327ef248f2.jpg',
            url:'http://www.piaohua.com/html/dongzuo/2017/0409/31921.html'  //可下载观看喔
        }];
    }

    // ... 其他回复类型

    this.body = reply;
}

测试效果如图:
图文回复

3.说明:

发现输入数字2并没有回复相应的图片,是不是很奇怪?我们查看一下文档:
图片描述
文档中说明了MediaId属性是通过素材管理接口上传多媒体文件,得到的id,而不是我们直接给的网上图片的url链接。在图文消息中,是可以直接使用url链接的。所以我们下一步的工作就是实现素材管理的接口。

关注公众号【好便宜】( ID:haopianyi222 ),领红包啦~
阿里云,国内最大的云服务商,注册就送数千元优惠券:https://t.cn/AiQe5A0g
腾讯云,良心云,价格优惠: https://t.cn/AieHwwKl
搬瓦工,CN2 GIA 优质线路,搭梯子、海外建站推荐: https://t.cn/AieHwfX9
扫一扫关注公众号添加购物返利助手,领红包
Comments are closed.

推荐使用阿里云服务器

超多优惠券

服务器最低一折,一年不到100!

朕已阅去看看