【Node.js 微信公众号实战】4.Node.js 微信消息管理

文章目录:
        1.Node.js 接入微信公众平台开发
        2.Node.js access_token的获取、存储及更新
        3.Node.js 自定义微信菜单
        4.Node.js 微信消息管理

一、写在前面的话

  当用户发送消息给公众号时(或某些特定的用户操作引发的事件推送时),会产生一个POST请求,开发者可以在响应包(Get)中返回特定XML结构,来对该消息进行响应。

  消息推送也是微信公众号开发更为有趣的功能,涉及到文本消息、图片消息、语音消息、视频消息、音乐消息以及图文消息。并且最为有趣的功能当属消息加解密了,当然由于篇文章篇幅的原因我会在下一篇文章中去着重说明。

我们接着来,微信消息管理

二、微信消息管理

1.捕获消息信息

  在文章的第一句话中,为我们指明了微信消息产生的请求方式为 POST,因此首先我们就去对 Node.js 的 Post 请求进行监听。

  在我们的 app.js 文件中添加一个POST监听,并将获取的结果输出:

//用于处理所有进入 3000 端口 post 的连接请求
app.post('/',function(req,res){
   
    var buffer = [];
    //监听 data 事件 用于接收数据
    req.on('data',function(data){
   
        buffer.push(data);
    });
    //监听 end 事件 用于处理接收完成的数据
    req.on('end',function(){
   
    //输出接收完成的数据   
         console.log(Buffer.concat(buffer).toString('utf-8'));
    });
});

  随后将 Node.js 启动后映射至外网,关注我们的微信公众号,在控制台中则会看到:
输出结果

  打开 微信帮助文档 ,点击左侧菜单的消息管理,选择其子菜单 接收事件推送,如图:
消息管理 -  接收事件推送

微信接收事件推送

  从上图我们不难看出,微信 接收事件推送 确实很多,而我们最终目标是要实现,在用户触发事件时返回其相应的回复消息。因此我们总结一下我们要实现的步骤:

  1. 解析 XML ,使用 Event 参数判断事件类型
  2. 返回相应的事件信息

总结完实现步骤后,我们就开始动手实现第一个被动回复消息吧。

别拦我,让我去装逼

2.以关注事件为例,实现第一个被动回复

  解析 XML 我这里使用了 第三方的包 xml2js(npm install xml2js ),并在 wechat.js 中引入。

 parseString = require('xml2js').parseString;//引入xml2js包

  为 WeChat 对象添加一个消息处理的方法 handleMsg,将 app.js 中捕获 POST 实现的写入在其代码块中,并使用 xml2js 解析,代码如下

/**
 * 微信消息
 */
WeChat.prototype.handleMsg = function(req,res){
   
    var buffer = [];
    //监听 data 事件 用于接收数据
    req.on('data',function(data){
   
        buffer.push(data);
    });
    //监听 end 事件 用于处理接收完成的数据
    req.on('end',function(){
   
        var msgXml = Buffer.concat(buffer).toString('utf-8');
        //解析xml
        parseString(msgXml,{explicitArray : 
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值