位置: 编程技术 - 正文

详解nodejs微信公众号开发——2.自动回复(node.js开发微信小程序)

编辑:rootadmin

推荐整理分享详解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. 处理微信消息的步骤

详解nodejs微信公众号开发——2.自动回复(node.js开发微信小程序)

无论是事件推送还是消息推送,微信服务器都是以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 转载请保留说明!

上一篇:详解nodejs微信公众号开发——1.接入微信公众号(nodejs微信小程序开发工具)

下一篇:详解nodejs微信公众号开发——3.封装消息响应模块(node 微信公众号开发)

  • 劳务派遣公司企业所得税税率
  • 不含税金额怎么算含税金额
  • 本年计算扣除限额的基数怎么算
  • 以前年度多计收入多交税怎么处理
  • 短期借款现金流
  • 保理利息计算公式
  • 1 3%增值税发票样本
  • ppp项目是否纳入政府债务
  • 非生产企业主营业务成本
  • 增值税附加税减半征收政策
  • 混业经营如何缴税?
  • 利息保障倍数为负数说明什么
  • 营改增后不动产进项税额抵扣
  • 借老板的现金存入银行怎么做账?
  • 公司股东和自然人的区别
  • 小规模所得税表格模板
  • 服务,不动产和无形资产扣除项目明细
  • 员工产假期间工资是社保局发吗
  • 在Linux系统中安装了一块虚拟磁盘大小的2G
  • 主营业务成本计入成本类账户吗
  • 车辆维修的增值税怎么算
  • win10锁屏壁纸模糊怎么回事
  • window11如何打开任务管理器
  • php循环结构有哪几种语句
  • 补缴增值税和滞纳税区别
  • 存货资产减值损益怎么算
  • 销售费用税前扣除吗
  • 企业财务会计
  • 个体户要交哪些税怎么交
  • 税收返还需要缴纳什么税
  • 存货跌价后销售会计分录
  • 汽车维修收费标准及费用计算方法
  • php控制器是用来做什么的
  • php文件打包下载
  • 融资租赁会计处理流程
  • 堪察加半岛上的汉族人
  • 百度地图api的使用
  • 服务费可以暂估成本吗
  • 股权转让不用交税
  • 城市维护建设税,教育费附加,地方教育费附加
  • 深入讲解党的创新理论
  • vue整合electron
  • 停工损失会计分录怎么写
  • 小微企业应纳税所得额计算
  • 银行进账单是外来原始凭证吗
  • 企业购买黄金可以避税
  • 2020年附加税减免怎么填报表
  • 小微企业季度收入
  • 冲销暂估入账用什么凭证
  • 预收账款所得税汇算清缴需要调吗
  • 待抵扣进项税额是什么情况下用的
  • 可供出售金融资产可以转为交易性金融资产吗
  • 一般纳税人普通发票要交增值税吗
  • 建筑业外包工程包括哪些
  • 对于审核后的凭证可直接修改对吗
  • 如何从财务报表中分析企业偿债能力
  • 净资产收益率怎么算出来的
  • 计税金额是什么科目
  • 会计账簿按用途分类可以分为
  • 安装完xp系统直接蓝屏怎么办
  • MacBook怎么恢复出厂设置
  • win10快速访问在哪
  • cmd指令让电脑乱码
  • linux命名命令
  • linux分区方案lvm
  • win8开始菜单在右边
  • win10系统谷歌浏览器为什么打不开
  • WIN7系统的镜像文件在哪里
  • react 技巧
  • perl @inc
  • nodejs npm package.json中文文档
  • 浅谈会计诚信与职业道德论文
  • 回弹健腹轮是智商税吗
  • 屏幕模式自适应模式
  • csgo视角指令锁定枪械摇晃
  • 如何将位置信息生成二维码
  • android获取手机的基本信息
  • jQuery+ajax实现实用的点赞插件代码
  • javascript的基础类型有哪些
  • 手表关税多少
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设