位置: 编程技术 - 正文
推荐整理分享详解nodejs微信公众号开发——2.自动回复(node.js开发微信小程序),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:nodejs微信公众号开发,nodejs实现微服务,node.js开发微信小程序,node wechat,nodejs wechat,node wechat,node 微信公众号开发,node 微信,内容如对您有帮助,希望把文章链接给更多的朋友!
上一篇文章:nodejs微信公众号开发(1)接入微信公众号,本篇文章将在此基础上实现简单的回复功能。
1. 接入代码的优化
之前我们简单粗暴的实现了微信公众号的接入,接入的代码直接写在了app.js文件里面,从项目开发的角度而言,不便于日后代码的维护,所以将这部分代码独立出来,按照koa的风格,写成一个中间件。
在根目录下新建wechat文件夹,新建generator.js文件,
此时app.js的内容变成:
2. 获取access_token
access_token是开发程序与wexin公众平台交互的一把钥匙,调用绝大部分接口都需要用到access_token。
access_token的特点:
有效期为2小时(s),过期自动失效,需要重新获取; 只要更新了access_token,之前的access_token自动失效;解决方案:
系统每隔2小时自动去获取一下access_token的值,确保access_token始终是有效的; 为了方便频繁调用,将access_token存储在唯一的一个地方(数据库、文件等),所有子系统都能访问。程序中采用构造函数的方式,在生成实例,完成初始化工作的的过程中,读取存储在config/wechat.txt文件中的票据,判断是否为空且是否过期,选择性的重新获取数字并且保存在原文件里面,关于获取access_token的官方文档介绍可见:获取access_token。
我们在moudle.exports中实例化一个Wechat:
这样确保了每次程序启动都会获取对access_token的有效性进行检验,并且每个一段时间会自动获取一个新的access_token。
3. 处理微信消息的步骤
无论是事件推送还是消息推送,微信服务器都是以post的方式发送请求,推送的数据类型不是json而是xml,处理推送消息一般分为五个步骤:
处理POST类型的控制逻辑,接收xml数据包; 解析数据包,获取数据包的消息类型或数据类型; 拼装自定义的消息; 包装成xml格式; 在5秒钟内返回消息。3.1 接收xml数据
通过raw-body模块可以获取http模块中的request对象,并且可以对数据进行拼装,从而拿到一个buffer的xml对象
3.2 解析xml数据
使用xml2js模块,将xml数据解析成对象格式
3.3 格式化xml数据
从解析的xml数据来看,数据虽然已经呈现键值对的形式,但是其值是数组的形式,需要进行扁平化处理:
其本质就是遍历数组中的值,因为在多图文的消息中存在嵌套的情况:
3.4 判断消息类型并回复
这里针对subscribe事件,新关注后自动回复文本消息终于等到你,还好我没放弃
注:这里只是简单地实现一下自动回复功能,这种拼接字符串的方式还是很不方便的,后面会封装成接口。
使用手机微信扫描测试账号的二维码,即可关注,同时接收到测试公众号推送的消息!
啦啦,一个简单的关注回复就完成了。
标签: node.js开发微信小程序
本文链接地址:https://www.jiuchutong.com/biancheng/377929.html 转载请保留说明!友情链接: 武汉网站建设