位置: 编程技术 - 正文

详解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 微信公众号开发)

  • 个人私活 要交个人所得税吗
  • 甲公司自2018年3月1日开始自行研发一款新兴产品
  • 原材料的归集和整理
  • 应交消费税通过什么科目核算
  • 公司给非员工代缴社保合法吗
  • 公司老账怎么处理
  • 收回以前年度的应收账款,怎么进行账务处理?
  • 国地税合并后有多少个税种
  • 产品不合格造成客户损失怎么赔付
  • 生产过程半成品报废
  • 政府制定优惠政策
  • 企业转企业对公账户
  • 残疾人保障金缴纳比例是月1.5%
  • 旧税号的发票专用章还能使用吗
  • 进项虚假怎么处理
  • 增值税发票选择确认平台证书密码是多少
  • 股权增资稀释股价会涨吗
  • 控股子公司利润并表
  • 税局代开专票季度未达起征点怎么缴纳地税?
  • 2019年固态硬盘价格
  • 如何win10家庭版升级专业版
  • 员工因违反公司规章制度被辞退有补偿吗
  • 纳税人识别号和税号一样吗
  • 跨年的费用冲回会计分录
  • 常见的电脑系统类型
  • linux grub
  • 怎么通过mac地址访问设备
  • 如何在win7系统中查看电脑基本信息
  • 如何更改文件的创建时间
  • 前端解决方案
  • 外汇账户转账有手续费吗
  • slee401.exe - slee401是什么进程 有什么用
  • 企业收回应收账款会计分录
  • 企业改制土地增值税政策
  • php表单提交输入判断
  • php实现快速排序算法
  • 房地产企业预缴增值税如何申报
  • 前端html模板
  • 从零开始打造神级文明
  • 2023年会出什么车
  • python累加求和代码,直到最后一项小于10^-6
  • 融资租赁后续会计处理
  • 新开企业如何在电子税务局操作
  • 洗浴报销票子怎么写
  • 母子公司资产划转的涉税问题
  • 职工教育经费扣除限额怎么算
  • 金税盘使用流程
  • pandas常见操作
  • 发票上的抵扣联抵扣联是什么意思
  • 企业开办期间费用需要开发票吗
  • 银行贷款可以置换险资吗
  • 申请开立账户的请示
  • 包装物租金如何界定
  • 事业单位会计的特点
  • 供应链公司的骗局招司机是真的吗
  • 企业中征码怎么查询
  • 纳税人id
  • 合并报表成本法调整为权益法分录
  • 生产经营所得成本费用怎么算
  • 票据的提示承兑期限是什么意思
  • 企业如何建账之类的账目
  • sql语句递归
  • mysql的日志
  • 不重装系统怎么修复
  • 第一启动项硬盘
  • 桌面上的图标不能更改对还是错
  • linux 更新yum
  • win7系统如何关闭开机自动启动软件
  • 怎样关闭android系统的内存不足的系统通知
  • css布局的经典网站
  • unity的协程
  • javascript面向对象编程指南
  • python中的
  • js日历控件代码和效果
  • jquery 图片裁剪
  • js中生成随机数
  • jQuery Easyui datagrid/treegrid 清空数据
  • 风力发电,光伏发电还有哪些
  • 商业保险扣除限额企业所得税
  • 国企重组裁员政策解读
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设