1. 首先需要在微信公众平台 - 基础设置 - 设置服务器地址

  2. 配置服务器地址时可能出现“参数错误,。。。。”的情况,可能是因为域名被拦截,不能使用。

    如果前端人员进行测试,可以使用ngrok,花生壳等工具实现内网穿透,将ip暴露出去,本人觉得花生壳相对稳定,推荐使用,但是需要花钱开通……

  3. 配置好服务器地址等信息,提交成功,点击启用完成服务器配置

  4. 接入接口 实际上是微信公众平台get请求填写的地址,并传signature, timestamp, nonce, echostr 四个参数,node接收到四个参数,需要对signature进行校验,并且原样返回echostr参数内容,即可接入完成。

// 简单接入,没有进行校验
router.get('/', async (ctx, next) => {var query = ctx.request.query;  var echostr = query.echostr ? query.echostr : '';ctx.body = echostr
})
  1. 回复消息,分为关注后自动回复以及粉丝向公众号发消息时的回复等等情况

    实际上都是微信服务器post请求配置好的服务器地址,并传入xml格式的数据,格式如下:

// 关注后的xml格式
<xml>  <ToUserName>< ![CDATA[toUser] ]></ToUserName>  <FromUserName>< ![CDATA[fromUser] ]></FromUserName><CreateTime>1348831860</CreateTime>  <MsgType>< ![CDATA[event] ]></MsgType>  <Event>< ![CDATA['subscribe'] ]></Event>  <MsgId>1234567890123457</MsgId>
</xml>
// 接受消息时的xml格式
<xml>  <ToUserName>< ![CDATA[toUser] ]></ToUserName>  <FromUserName>< ![CDATA[fromUser] ]></FromUserName><CreateTime>1348831860</CreateTime>  <MsgType>< ![CDATA[text] ]></MsgType>  <Content>< ![CDATA[粉丝发送的消息] ]></Content>  <MsgId>1234567890123456</MsgId>
</xml>

后台接收xml格式的数据,完成相应操作即可。
但node本身并不能处理xml格式的文件,所以使用koa-xml-body来解析xml,在app.js中配置如下即可使用:

const xmlParser = require('koa-xml-body');
app.use(xmlParser());
  1. 解析xml之后,打印ctx.request.body即可打印出解析后的数据
{xml:{ToUserName:[' '],FromUserName: [' '],....}
}
  1. 通过对解析后的数据处理,判断完成回复消息
router.post('/', async (ctx, next) => {const xml = ctx.request.body;const createTime = Date.parse(new Date());const msgType = xml.xml.MsgType[0];const toUserName = xml.xml.ToUserName[0];const toFromName = xml.xml.FromUserName[0];const event = xml.xml.Event ? xml.xml.Event[0] : '';if(msgType == 'event' && event == 'subscribe'){ //关注后ctx.body = `<xml><ToUserName><![CDATA[${toFromName}]]></ToUserName><FromUserName><![CDATA[${toUserName}]]></FromUserName><CreateTime>${createTime}</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[欢迎关注陈小皮公众号,下面请开始你的表演!]]></Content></xml>`;}else{//其他情况ctx.body = `<xml><ToUserName><![CDATA[${toFromName}]]></ToUserName><FromUserName><![CDATA[${toUserName}]]></FromUserName><CreateTime>${createTime}</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[啊~啊~啊~你在发什么消息?]]></Content></xml>`;}
});

node(koa)完成微信公众号自动回复功能相关推荐

  1. 微信 SHA1 签名_微信公众号自动回复功能开发

    微信公众号自动回复功能开发 本篇主要讲解 微信公众号自动回复功能开发,让我们自己去托管公众号回复的功能,这样可以更加灵活的根据公众号收到的信息来制定特定的回复信息,一起来了解吧! 1.注册公众号 如果 ...

  2. 微信公众号自动回复功能

    微信公众号自动回复功能分为两种,一种自主开发,一种利用公众号自动开发,两种不可兼容,开发状态的自动回复功能,将导致编辑状态下的菜单,自动回复失效. WeixinchatController代码:  这 ...

  3. 微信公众号自动回复功能如何设置带链接的文字

    为了满足微信公众号自动回复功能设置带链接的文字,第三方平台微号帮提供了粉丝对话定时推送功能实现,帮助公众号在线设置自动回复消息,消息内容可以插入带链接的文字,粉丝点击链接可以进入小程序.h5页面.小游 ...

  4. 6 实现微信公众号 自动回复功能

    一 实先自动回复功能的逻辑步骤 1 处理POST类型的控制逻辑,接收XML的数据包: 2 解析XML数据包(获得数据包的消息类型或者是事件类型): 3 拼装我们定义好的消息: 4 包装成XML格式: ...

  5. 搭建公众号自动回复功能

    程序员爱炫技,写个公众号文章,都想拿点技术整整[自动回复]:程序员爱偷懒,什么都想做个[自动化],最好所有事情系统都给做了,点点手指头就能达到目标. 今天的主角是如何搭建一个公众号自动回复功能.整个流 ...

  6. 教你如何用node.js开发微信公众号(一)

    内容简介 本文章简单介绍了如何用node.js开发微信公众号.主要内容包括微信公众平台的配置,signature的验证,以及用node.js去处理用户主动发起的行为. 准备工作 开发前需要安装好nod ...

  7. 怎么设置微信公众号自动回复内容显示用户昵称

    对于微信公众号自动回复内容显示用户昵称,第三方平台微号帮提供了粉丝对话定时推送功能实现,支持公众号设置自动回复消息显示用户昵称,除了可以显示对应用户的昵称,还可以显示用户的头像.openID;用户向公 ...

  8. 微信公众号自动回复消息如何设置带链接的文字

    关于微信公众号实现自动回复消息设置带链接的文字,第三方工具微号帮平台提供了功能粉丝对话定时推送实现,可以设置微信公众号的自动回复消息带链接文字,还可以设置纯文字.图片.文章.小程序.h5小游戏.直播. ...

  9. 微信公众号自动回复的文字信息如何带链接地址

    为了满足微信公众号自动回复信息带链接地址,第三方平台微号帮提供了功能粉丝对话定时推送实现,可以为公众号设置自动回复信息添加链接地址,可以设置延迟自动回复时间,可以按公众号对话粉丝的分组回复消息,如果担 ...

最新文章

  1. NAPI模式--中断和轮询的折中以及一个负载均衡的问题
  2. 首次使用gradle出现Could not find method leftShift() for arguments解决办法
  3. springboot 拦截器 日志_跟武哥一起学习Spring Boot,一份全面详细的学习教程
  4. eth0,eth1,eth2,lo是什么
  5. 基础知识:语言、编程、计算机组成、cpu、存储器
  6. linux设置共享权限设置命令,Linux系列知识详解(三)--------- Linux链接命令和权限管理命令...
  7. 计算机应用基础随堂,《计算机应用基础》随堂题库
  8. 小说里的lt什么意思_游戏cpdd网络用语是什么意思 王者荣耀里很常见
  9. 定期定量采购_企业常见的六种采购策略
  10. 女大学生毕业相亲程序员,吃了一顿大排档,一看车钥匙后犹豫了!
  11. 同一表单内设置两个或两个以上的提交按钮 Two submit buttons in one form
  12. linux定时任务小程序,linux定时任务
  13. logistic回归分析优点_logistic回归模型分析
  14. Jdk8下载安装配置教程
  15. getParameterValues 和 getParameter区别
  16. 华为路由器显示连接到服务器失败怎么办,华为路由器设置好后不能上网怎么办...
  17. 解决弹出 “百度未授权使用地图API,可能是因为您提供的密钥不是有效的百度LBS开放平台密钥”的方法
  18. 彻底解决Chrome自动更新方案
  19. Typora设置标题自动标号
  20. 如何将图片格式转换为ico格式

热门文章

  1. 学习Linux命令(51)
  2. 网络性能--速率,带宽,吞吐量
  3. 谈谈创业或者参加创业团队的成败与心得
  4. 2021年中国共享住宿发展现状及市场格局分析:市场规模为152亿元[图]
  5. 2021-07-11剑指offer16.数值的整数次方
  6. 2023年东北大学计算机科学与技术考研上岸前辈初复试备考经验指导
  7. E都市--互联网应用新概念—E都市
  8. 如何以 PDF/X 格式保存报表
  9. TiDB Cloud
  10. 线缆认证和网络测试如何完美集成