微信公众号开发之回复文本消息
这一节我们主要参照官网文档点击
注意事项
- 相关的注意事项官网中已经写好,我们还需要注意,在返回相应类型的消息的时候,xml的尖括号不能有空格
- 注意消息的发送者和接收者不要写反了
代码
我们接着在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)}}
}
对于代码的解释
- 微信服务器向我们的服务器发动post的请求的时候还会携带
query
参数,这一块,主要用于判断post请求是否来源于微信,所以我们在接收post请求的要判断是不是来源于微信 - 使用我们写好的流式数据读取的函数对微信的请求参数进行解析,得到用户发送的消息
- 拿到用户发送的消息,我们进行对于消息的处理(不同的消息回复什么内容),就是代码中if语句
- 根据官网,回复不同类型的消息,需要不同的模板,这里只回复了文本消息,所以只写了回复文本消息的模板
replyMessage
- 最后向微信服务器发送我们的模板
测试
扫一扫测试号,我们进行测试
微信公众号开发之回复文本消息相关推荐
- 教程: nodejs 做微信公众号开发,回复 xml 消息
教程: nodejs 做微信公众号开发,回复 xml 消息 首先需要你的后台跟服务器已经可以建立连接,这个不再冗述看官方教程就好 接入指南 .此篇介绍的是如何获取用户发来的信息,并回复它. 一.接收 ...
- python 微信公众号回复图片_Python webpy微信公众号开发之 回复图文消息
新建图文回复模板reply_pictext.xml: $def with (toUser,fromUser,createTime,title1,description1,picurl1,url1) $ ...
- python公众号留言功能_Python实现的微信公众号群发图片与文本消息功能实例详解...
本文实例讲述了Python实现的微信公众号群发图片与文本消息功能.分享给大家供大家参考,具体如下: 在微信公众号开发中,使用api都要附加access_token内容.因此,首先需要获取access_ ...
- 公众号php怎么限制回复次数,刚刚上线!打破微信公众号48小时回复粉丝消息限制!...
原标题:刚刚上线!打破微信公众号48小时回复粉丝消息限制! 众所周知微信公众号一直以来和粉丝的关系是比较封闭的,除了订阅号每日一次的推送,服务号每月四次的推送外,公众号很难主动联系粉丝. 如果粉丝没有 ...
- python公众号留言功能详情_Python实现的微信公众号群发图片与文本消息功能实例详解...
本文实例讲述了Python实现的微信公众号群发图片与文本消息功能.分享给大家供大家参考,具体如下: 在微信公众号开发中,使用api都要附加access_token内容.因此,首先需要获取access_ ...
- java推送微信消息换行_微信公众号开发被动回复用户消息,回复内容Content使用了\n换行符还是没有换行...
使用语言和框架:本人后端开发使用的Python的DRF(Django REST framework)框架 需求:在微信公众号开发时,需要实现自动回复,即被关注回复.收到消息回复.关键词回复 发现问题: ...
- 利用python 实现微信公众号群发图片与文本消息功能
在微信公众号开发中,使用api都要附加access_token内容.因此,首先需要获取access_token.如下: #获取微信access_token def get_token():payloa ...
- java推送微信消息换行_微信公众平台开发教程之文本消息如何换行(第十二课)
上两节课介绍了微信公众平台开发工具类的开发,这节课呢就用到了,没有读前两节课程的读者建议看前两节课程,当然你可以可以去下载实例代码直接运行 . 使用"\n"换行 回复用户的文本消息 ...
- 微信公众号开发:接收通用消息与事件
接收消息 当普通微信用户向公众账号发送消息时,微信服务器将POST消息的XML数据包到开发者在微信公众号管理后台中配置的服务器地址URL上. 常见消息类型的推送XML数据包结构如下. 文本消息 < ...
最新文章
- 更新!带你认识推荐系统全貌的论文清单
- 测试回收站2测试回收站2测试回收站2测试回收站2测试回收站2测试回收站2测试回收站2测试回收站2测试回收站2测试回收站2测试回收站2
- 树上启发式合并 简单例题
- AtCoder Beginner Contest 203(Sponsored by Panasonic)题解
- CCF202006-2 稀疏向量
- java character类
- Leetcode142. Linked List Cycle II环形链表2
- Go语言自学系列 | go常用命令
- uniapp手写_uniapp 手写 Steps 步骤条
- 强化学习基础 | (15) A3C
- linux下开机自动启动文件夹在哪里设置,Linux设置开机自启动的方法【linux学习教程】...
- 如何把视频和音频合并?手把手教你合并
- imatest白平衡测试结果解析
- 强化学习入门项目 Spinning up OpenAI (2) 基本使用
- python三人同行七十稀_三人同行(三人同行什么意思)
- 搬砖: web音频流转发之音视频直播
- html怎么设置img样式,img 元素可以用 CSS 设置样式吗?
- API Promise化
- linux fat get entry,Linux kernel FAT32文件系统分析
- 3分钟详解服务器入网带宽出网带宽和入流量出流量