node(koa)完成微信公众号自动回复功能
首先需要在微信公众平台 - 基础设置 - 设置服务器地址
配置服务器地址时可能出现“参数错误,。。。。”的情况,可能是因为域名被拦截,不能使用。
如果前端人员进行测试,可以使用ngrok,花生壳等工具实现内网穿透,将ip暴露出去,本人觉得花生壳相对稳定,推荐使用,但是需要花钱开通……
配置好服务器地址等信息,提交成功,点击启用完成服务器配置
接入接口 实际上是微信公众平台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
})
回复消息,分为关注后自动回复以及粉丝向公众号发消息时的回复等等情况
实际上都是微信服务器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());
- 解析xml之后,打印ctx.request.body即可打印出解析后的数据
{xml:{ToUserName:[' '],FromUserName: [' '],....}
}
- 通过对解析后的数据处理,判断完成回复消息
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)完成微信公众号自动回复功能相关推荐
- 微信 SHA1 签名_微信公众号自动回复功能开发
微信公众号自动回复功能开发 本篇主要讲解 微信公众号自动回复功能开发,让我们自己去托管公众号回复的功能,这样可以更加灵活的根据公众号收到的信息来制定特定的回复信息,一起来了解吧! 1.注册公众号 如果 ...
- 微信公众号自动回复功能
微信公众号自动回复功能分为两种,一种自主开发,一种利用公众号自动开发,两种不可兼容,开发状态的自动回复功能,将导致编辑状态下的菜单,自动回复失效. WeixinchatController代码: 这 ...
- 微信公众号自动回复功能如何设置带链接的文字
为了满足微信公众号自动回复功能设置带链接的文字,第三方平台微号帮提供了粉丝对话定时推送功能实现,帮助公众号在线设置自动回复消息,消息内容可以插入带链接的文字,粉丝点击链接可以进入小程序.h5页面.小游 ...
- 6 实现微信公众号 自动回复功能
一 实先自动回复功能的逻辑步骤 1 处理POST类型的控制逻辑,接收XML的数据包: 2 解析XML数据包(获得数据包的消息类型或者是事件类型): 3 拼装我们定义好的消息: 4 包装成XML格式: ...
- 搭建公众号自动回复功能
程序员爱炫技,写个公众号文章,都想拿点技术整整[自动回复]:程序员爱偷懒,什么都想做个[自动化],最好所有事情系统都给做了,点点手指头就能达到目标. 今天的主角是如何搭建一个公众号自动回复功能.整个流 ...
- 教你如何用node.js开发微信公众号(一)
内容简介 本文章简单介绍了如何用node.js开发微信公众号.主要内容包括微信公众平台的配置,signature的验证,以及用node.js去处理用户主动发起的行为. 准备工作 开发前需要安装好nod ...
- 怎么设置微信公众号自动回复内容显示用户昵称
对于微信公众号自动回复内容显示用户昵称,第三方平台微号帮提供了粉丝对话定时推送功能实现,支持公众号设置自动回复消息显示用户昵称,除了可以显示对应用户的昵称,还可以显示用户的头像.openID;用户向公 ...
- 微信公众号自动回复消息如何设置带链接的文字
关于微信公众号实现自动回复消息设置带链接的文字,第三方工具微号帮平台提供了功能粉丝对话定时推送实现,可以设置微信公众号的自动回复消息带链接文字,还可以设置纯文字.图片.文章.小程序.h5小游戏.直播. ...
- 微信公众号自动回复的文字信息如何带链接地址
为了满足微信公众号自动回复信息带链接地址,第三方平台微号帮提供了功能粉丝对话定时推送实现,可以为公众号设置自动回复信息添加链接地址,可以设置延迟自动回复时间,可以按公众号对话粉丝的分组回复消息,如果担 ...
最新文章
- NAPI模式--中断和轮询的折中以及一个负载均衡的问题
- 首次使用gradle出现Could not find method leftShift() for arguments解决办法
- springboot 拦截器 日志_跟武哥一起学习Spring Boot,一份全面详细的学习教程
- eth0,eth1,eth2,lo是什么
- 基础知识:语言、编程、计算机组成、cpu、存储器
- linux设置共享权限设置命令,Linux系列知识详解(三)--------- Linux链接命令和权限管理命令...
- 计算机应用基础随堂,《计算机应用基础》随堂题库
- 小说里的lt什么意思_游戏cpdd网络用语是什么意思 王者荣耀里很常见
- 定期定量采购_企业常见的六种采购策略
- 女大学生毕业相亲程序员,吃了一顿大排档,一看车钥匙后犹豫了!
- 同一表单内设置两个或两个以上的提交按钮 Two submit buttons in one form
- linux定时任务小程序,linux定时任务
- logistic回归分析优点_logistic回归模型分析
- Jdk8下载安装配置教程
- getParameterValues 和 getParameter区别
- 华为路由器显示连接到服务器失败怎么办,华为路由器设置好后不能上网怎么办...
- 解决弹出 “百度未授权使用地图API,可能是因为您提供的密钥不是有效的百度LBS开放平台密钥”的方法
- 彻底解决Chrome自动更新方案
- Typora设置标题自动标号
- 如何将图片格式转换为ico格式