位置: 编程技术 - 正文

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

发布时间:2024-02-27

推荐整理分享详解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 微信公众号开发)

  • 视同内销增值税怎么申报
  • 增值税申报表如何打印
  • 个人所得税纳税义务人
  • 企业筹建期间契税账务处理
  • 金蝶利润表为什么没有收入
  • 小微企业利润表模板
  • 工程类工资表为哪些内容
  • 周转材料登三栏式明细账吗
  • 完税证明可以代替契税发票吗
  • 企业开办时间是什么意思
  • 财务报表层次重大错报风险增大了认定层次
  • 企业所得税费用税率
  • 营改增后小规模纳税人
  • 开具的销项发票是否都要入收入科目吗?
  • 代开的专用发票附加税该怎么申报?
  • 专票的有效期是什么意思
  • 汇算清缴已退税的还可以作废吗
  • 医院会计制度准则
  • 筹建期间开办费账务处理
  • 废料收入应如何确定
  • 企业合并中或有负债确认后期调整的项目
  • 公司之间往来借款利息怎么记账
  • 公交车的乘车凭证能报销吗
  • 重装系统j
  • 劳务报酬纳税计算器
  • 电脑怎样进入cmos设置
  • windows2004没有推送
  • 缴纳集团公司的税收
  • PHP:curl_getinfo()的用法_cURL函数
  • 建筑业预缴企业所得税税率
  • 企业所得税税款
  • 芒通,法国 (© Flavio Foglietta/Getty Images)
  • 慕尼黑基姆湖
  • 境外支付佣金代扣代缴增值税
  • php三大特性
  • uniapp scroll-view基础用法
  • 生日快乐html5代码
  • 购入固定资产计入应付账款还是其他应付款
  • 报表按季度报是什么意思
  • window批处理文件
  • 小规模差额征税的税率是3%还是5%
  • 商品试用是否还要回收
  • 高速费会计分录怎么写
  • 影响企业营业利润的有哪些
  • 附加税的印花税怎么计算
  • 拆迁置换安置房
  • 非公益捐赠如何入账
  • 公司的商务卡的作用
  • 税控盘冲红怎么操作
  • 出售固定资产如何缴纳增值税
  • 存货期末计量按什么分类
  • 新办企业必须经过什么核准登记
  • 新建的企业
  • mysql Access denied for user ‘root’@’localhost’ (using password: YES)解决方法
  • open dhcp server
  • ubuntu系统中文
  • ubuntu2004分区教程
  • xp系统禁止程序联网
  • win10不能注销登录
  • windows7家长控制
  • win10安装 升级
  • linux学习思路
  • windows8能免费升10吗
  • windows10打开此电脑
  • linux系统安装软件教程
  • cocos内存管理
  • linux shell执行命令
  • js中的filter方法
  • [置顶]星陨计划
  • 批处理清空文本内容
  • r+python
  • javascript scrollLeft,scrollWidth,clientWidth,offsetWidth 完全详解
  • python 批量查询
  • flask框架图
  • android获取手机的基本信息
  • android studio 安装好后怎么在桌面找到
  • 土地增值额未超过20%
  • 重庆电子税务局怎么绑定办税人员
  • 海口市地方税务局是什么级别
  • 个体工商户如何注销
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号