微信公众号可以收到用户发送的6种基本信息。包括文本信息,图片信息,语音信息,视频消息,小视频消息,地理位置消息,链接消息。并且在收到用户消息之后可以设置自动回复用户消息 回复的也是6种消息
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>12345678</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[你好]]></Content> </xml> |
这个请求是通过用户发送给微信服务器,微信服务器将信息转化为xml格式并添加一些参数发送给我们自己的服务器,自己的服务器通过xml抓化为java语言,完成自己的逻辑处理后,再把处理后的结果转化为xml发送给微信服务器,这样用户的微信端就能看到我们被动回复的消息了,之所以叫
被动回复,是因为这些消息都是由用户主动发送给我们消息之后我们才能应答。
用户发送给我们的消息 我们都会得到如下参数 ToUserName 开发者微信号 ,FromUserName 发送方帐号(一个OpenID),CreateTime 消息创建时间 (整型) MsgType 消息类型 ,MsgID 消息id,64位整型
由上图可知,我们发送给微信服务器的请求需要的参数有ToUserName FromUserName CreateTime MsgType Content
ToUserName FromUserName 这2个参数由于信息交互机制 我们每次都可以获取 CreateTime通过new Date.getTime()等方式获取当前时间就行了
MsgType 选择文本类型text(注意大小写)Content 填写你需要回复的内容就行了 在组装xml发送给微信服务器之前 加入自己的判断逻辑 比如用户输入?就回复当前时间
图片消息类似 用户发送给我们的消息 我们都会得到如下参数 ToUserName 开发者微信号 ,FromUserName 发送方帐号(一个OpenID),CreateTime 消息创建时间 (整型) MsgType 消息类型 ,MsgID 消息id,64位整型
这次回复的格式改变了
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>12345678</CreateTime> <MsgType><![CDATA[image]]></MsgType> <Image> <MediaId><![CDATA[media_id]]></MediaId> </Image> </xml>MsgType改成image就可以了
MediaId是什么东西呢? 这是微信公众号的一种素材管理id 公众号经常有需要用到一些临时性的多媒体素材的场景,例如在使用接口特别是发送消息时,对多媒体文件、多媒体消息的获取和调用等操作,是通过media_id来进行的。素材管理接口对所有认证的订阅号和服务号开放。
素材分为临时和永久2种 这里用临时素材作为演示 在线调试接口 https://mp.weixin.qq.com/debug/cgi-bin/apiinfo?t=index&type=%E5%9F%BA%E7%A1%80%E6%94%AF%E6%8C%81&form=%E5%A4%9A%E5%AA%92%E4%BD%93%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0%E6%8E%A5%E5%8F%A3%20/media/upload
第一个参数是access_token也就是调用任何微信高级接口的令牌(2小时有效期)
关于令牌怎么获取 也是在这个页面 把接口列表选择获取token就可以了
一切填写完毕 如果成功上传图片的话会得到如下的类似结果 其中包含了media_id
至此 几个需要发送给微信服务器的参数都已经获取 剩下的就是组装成xml文件打包发送了 请注意每个xml标签的大小写
其余的几种被动回复都大同小异 不一一赘述了