这一节我们主要参照官网文档点击

注意事项

  1. 相关的注意事项官网中已经写好,我们还需要注意,在返回相应类型的消息的时候,xml的尖括号不能有空格
  2. 注意消息的发送者和接收者不要写反了

代码

我们接着在auth.js 点击下写代码,代码如下

源码

const sha1 = require("sha1")const config = require("../config")
const { getUserDataAsync, parseXmlData, formatMsg } = require("../libs/utils")module.exports = () => {return async (req, res, next) => {const { signature, echostr, timestamp, nonce } = req.queryconst { token } = configconst str = [token, timestamp, nonce].sort().join("")const sha1str = sha1(str)if (req.method === "GET") {// GET请求用于验证服务器的有效性if (sha1str == signature) {res.set("Content-Type", "text/plain");res.send(echostr);} else {res.send(false)}} else if (req.method === "POST") {// POST用于接收用户发送的消息if (sha1str != signature) {// post请求不是来源于微信res.send("error")return}// 获取微信发送的消息const xml_data = await getUserDataAsync(req)let user_data = await parseXmlData(xml_data)user_data = formatMsg(user_data)console.log(user_data);// 恢复用户消息let content = "what are you talking about?"const {MsgType,Content,FromUserName,ToUserName} = user_dataconsole.log(Content);if (MsgType === "text"){// 文本类型的消息if(Content === "1"){content = "三打白骨精"} else if(Content === "2"){content = "七擒孟获"}else if(Content.match("水")){content = "武松打虎"}}// 注意发送者和接受者let replyMessage = `<xml><ToUserName><![CDATA[${FromUserName}]]></ToUserName><FromUserName><![CDATA[${ToUserName}]]></FromUserName><CreateTime>${Date.now()}</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[${content}]]></Content></xml>`console.log(replyMessage);// 将消息结构发送到微信服务器res.send(replyMessage)}}
}

对于代码的解释

  1. 微信服务器向我们的服务器发动post的请求的时候还会携带query参数,这一块,主要用于判断post请求是否来源于微信,所以我们在接收post请求的要判断是不是来源于微信
  2. 使用我们写好的流式数据读取的函数对微信的请求参数进行解析,得到用户发送的消息
  3. 拿到用户发送的消息,我们进行对于消息的处理(不同的消息回复什么内容),就是代码中if语句
  4. 根据官网,回复不同类型的消息,需要不同的模板,这里只回复了文本消息,所以只写了回复文本消息的模板replyMessage
  5. 最后向微信服务器发送我们的模板

测试

扫一扫测试号,我们进行测试

微信公众号开发之回复文本消息相关推荐

  1. 教程: nodejs 做微信公众号开发,回复 xml 消息

    教程: nodejs 做微信公众号开发,回复 xml 消息 首先需要你的后台跟服务器已经可以建立连接,这个不再冗述看官方教程就好 接入指南 .此篇介绍的是如何获取用户发来的信息,并回复它. 一.接收 ...

  2. python 微信公众号回复图片_Python webpy微信公众号开发之 回复图文消息

    新建图文回复模板reply_pictext.xml: $def with (toUser,fromUser,createTime,title1,description1,picurl1,url1) $ ...

  3. python公众号留言功能_Python实现的微信公众号群发图片与文本消息功能实例详解...

    本文实例讲述了Python实现的微信公众号群发图片与文本消息功能.分享给大家供大家参考,具体如下: 在微信公众号开发中,使用api都要附加access_token内容.因此,首先需要获取access_ ...

  4. 公众号php怎么限制回复次数,刚刚上线!打破微信公众号48小时回复粉丝消息限制!...

    原标题:刚刚上线!打破微信公众号48小时回复粉丝消息限制! 众所周知微信公众号一直以来和粉丝的关系是比较封闭的,除了订阅号每日一次的推送,服务号每月四次的推送外,公众号很难主动联系粉丝. 如果粉丝没有 ...

  5. python公众号留言功能详情_Python实现的微信公众号群发图片与文本消息功能实例详解...

    本文实例讲述了Python实现的微信公众号群发图片与文本消息功能.分享给大家供大家参考,具体如下: 在微信公众号开发中,使用api都要附加access_token内容.因此,首先需要获取access_ ...

  6. java推送微信消息换行_微信公众号开发被动回复用户消息,回复内容Content使用了\n换行符还是没有换行...

    使用语言和框架:本人后端开发使用的Python的DRF(Django REST framework)框架 需求:在微信公众号开发时,需要实现自动回复,即被关注回复.收到消息回复.关键词回复 发现问题: ...

  7. 利用python 实现微信公众号群发图片与文本消息功能

    在微信公众号开发中,使用api都要附加access_token内容.因此,首先需要获取access_token.如下: #获取微信access_token def get_token():payloa ...

  8. java推送微信消息换行_微信公众平台开发教程之文本消息如何换行(第十二课)

    上两节课介绍了微信公众平台开发工具类的开发,这节课呢就用到了,没有读前两节课程的读者建议看前两节课程,当然你可以可以去下载实例代码直接运行 . 使用"\n"换行 回复用户的文本消息 ...

  9. 微信公众号开发:接收通用消息与事件

    接收消息 当普通微信用户向公众账号发送消息时,微信服务器将POST消息的XML数据包到开发者在微信公众号管理后台中配置的服务器地址URL上. 常见消息类型的推送XML数据包结构如下. 文本消息 < ...

最新文章

  1. 更新!带你认识推荐系统全貌的论文清单
  2. 测试回收站2测试回收站2测试回收站2测试回收站2测试回收站2测试回收站2测试回收站2测试回收站2测试回收站2测试回收站2测试回收站2
  3. 树上启发式合并 简单例题
  4. AtCoder Beginner Contest 203(Sponsored by Panasonic)题解
  5. CCF202006-2 稀疏向量
  6. java character类
  7. Leetcode142. Linked List Cycle II环形链表2
  8. Go语言自学系列 | go常用命令
  9. uniapp手写_uniapp 手写 Steps 步骤条
  10. 强化学习基础 | (15) A3C
  11. linux下开机自动启动文件夹在哪里设置,Linux设置开机自启动的方法【linux学习教程】...
  12. 如何把视频和音频合并?手把手教你合并
  13. imatest白平衡测试结果解析
  14. 强化学习入门项目 Spinning up OpenAI (2) 基本使用
  15. python三人同行七十稀_三人同行(三人同行什么意思)
  16. 搬砖: web音频流转发之音视频直播
  17. html怎么设置img样式,img 元素可以用 CSS 设置样式吗?
  18. API Promise化
  19. linux fat get entry,Linux kernel FAT32文件系统分析
  20. 3分钟详解服务器入网带宽出网带宽和入流量出流量

热门文章

  1. 中国互联网+物流行业应用模式与市场需求预测报告2022版
  2. AT89S52串口程序
  3. iCloud与Windows10兼容问题解决 苹果解除封锁问题
  4. cas入门之一 cas 简介
  5. 理化试验室计算机维护保养,实验室常用仪器的维护保养
  6. 数据预处理之方差过滤
  7. 六款顶级桌面美化软件推荐(Windows)
  8. 素数求解的的几种简单方法
  9. android 动态改变进度条,Android条纹进度条的实现(调整view宽度仿进度条)
  10. 制作个人网站 之 人生进度条