|
上一节课我们讲到了微信公众号的配置和接入,今天我们要讲一下最简单的响应之后台文本回复,就是当关注微信公众号的用户对公众号发送一段文本的时候,我们在后台应该怎么处理,先看一下我的效果界面
当我对微信公众号发送:“我是你爸爸”这段文本的时候,微信公众号后台给我回复了一段“你发送的是:我是你爸爸”,我们在看看我们的项目控制台有什么,如图:
是的,我们的后台也收到了用户发送过来的“我是你爸爸”这段话,这里我们有必要再简单的复习一下这个消息的发送流程的:
再次申明一下关键点,我们后台的所有的消息接口都是直接对接腾讯的后台微信服务器的,而不是直接从客户端收到的,这点务必要明确,所以当我们收到用户发来的消息之后,我们同样只能先回复给腾讯服务器,腾讯服务器再转发给客户端,客户端就能看到我们后台发来的消息了,他的回复流程图如下:
这里我们看看微信开发文档是怎么说的,进入【开发】----》【开发者工具】,可以看到【开发者文档】
在截图所在的【接收普通消息】文档内可以看到,当用户给腾讯服务器发送一段文本的时候,腾讯服务器对这段文本做了包装,这段包装漂亮的消息包中不但有客户发送的文本消息,还附带了一些关于这段消息的一些其他属性:
文档中这些属性参数的含义表示如下:
这里有个属性是MsgType表示用户发送的是文本类型的消息,所以我们的后台可以判断这个属性,如果MsgType="type"我们就可以自定义一段文本发送给微信服务器让他帮我们转发给客户端,那么既然我们是需要腾讯的微信服务帮我们转发,我们当然看看服务器对我们发送的格式是怎么要求的,只有符合要求的消息包,腾讯的微信公众号服务器才能对消息包正确的翻译解读,翻译解读成功后才能正确发送给客户端,我们再看看这块腾讯的微信公众号服务器是怎么要求格式的:
是的,我们需要根据上面的格式要求返回给腾讯服务器一个XML格式的数据包,腾讯服务器才懂得我们的意图和想要说的内容,才能帮我们想对客户说的成功转发给客户,话不多说,我们开始吧,首先我们要在上次的验证接入Controller类中创建一个RestAPI接口,这个接口跟我们再配置中的填写的URL的RestAPI接口是一样的,只是这里的提交方式是POST,我们可以简单理解为GET是获得腾讯服务器的消息,POST是提交消息给腾讯服务器,RestAPI配置部分看截图:
Controller具体代码我完整贴出在下面:
WechatController.java
BaseMessage.java
TextMessage.java
这里有一些其他功能的模块,请关心WechatController中的这段代码(深入的请自己追踪代码)
从这段代码中我们可以看到,我们后台把用户发来的消息做了一点点的修饰(当然你可以自己想怎么处理和修饰那就看你自己的心情了),然后根据腾讯服务器要求的XML格式重新包装数据返回给服务器,服务器就能成功解读这个数据结构并帮我们把我们的Content中的内容返回给客户端了。
PS:这里我是用一个SpringBoot项目,利用用到了一些工具包,方便读者使用,我把我的pom.xml文件代码贴出来,读者自行选取借鉴使用,本次学习就到此为止,有疏忽错误的地方请在下面留言,我会第一时间答复。
pom.xml
|