在开发之前,先看一下下面的流程
用户发送消息我们可以理解成:微信app(微信客户端)发送消息。
过程示例:
-
微信用户在公众号页面发送一串文本:你好!(如图(1)所示)
2.则我们第三方程序将会接收到由微信服务器发送过来的XML,如图(2)所示
3.根据消息类型,我们按照开法规范回复微信客户端“success”(其他文本消息后续会讲明,详见被动回复用户消息)。
注意:倘若微信5秒钟内没有收到客户端发送回的请求信息,则会认为发送失败,中断请求并再次尝试发送,最多发送三次,微信将不再发送。
--------------------以上为微信客户端发送消息的过程------------------------
微信消息分为两种:
·普通消息:当普通微信用户向公众账号发消息时,微信服务器将POST消息的XML数据包到开发者填写的URL上。
·事件消息:在微信用户和公众号产生交互的过程中,用户的某些操作会使得微信服务器通过事件推送的形式通知到开发者在开发者中心处设置的服务器地址,从而开发者可以获取到该信息。其中,某些事件推送在发生后,是允许开发者回复用户的,某些则不允许
个人总结:
·普通消息:当普通微信用户向公众账号发送的消息(可以回复给用户消息)
·事件消息:用户的操作触发微信内部的事件,产生相应的信息(部分事件可以回复用户事件)
普通消息种类
文本消息 text
图片消息 image
语音消息 voice
视频消息 video
小视频消息shortvideo
地理位置消息 location(注意:这里并不是用户所在的地理位置,是用户主动发送的位置)
连接消息 link
什么是事件消息?
例:
当用户点击关注公众号,微信将会推送一个xml至我们第三方程序,格式如下
[html]view plaincopy
1.<xml>
2. <ToUserName>< ![CDATA[接收的公众号] ]></ToUserName>
3. <FromUserName>< ![CDATA[发送者的openid] ]></FromUserName>
4. <CreateTime>123456789</CreateTime>
5. <MsgType>< ![CDATA[event] ]></MsgType>
6. <Event>< ![CDATA[subscribe] ]></Event>
7.</xml>
参数 |
描述 |
ToUserName |
开发者微信号 |
FromUserName |
发送方帐号(一个OpenID) |
CreateTime |
消息创建时间 (整型) |
MsgType |
消息类型,event |
Event |
事件类型,subscribe(订阅)、unsubscribe(取消订阅) |
由于是事件消息,所以MsgType为event(事件消息),订阅事件的事件类型为subscribe
事件消息(Event)的类型
关注/取消关注subscribe/unsubscribe
扫描二维码 SCAN
上报地理位置LOCATION
自定义菜单CLICK