实现了接入和access_token的获取,接下来就该开始构建功能了,所以有必要了解一下详细的交互过程。
如上图所示,从用户发送交互请求,到公众号的接收与回应,中间会通过微信服务器的处理,并最终将返回的内容送至用户端。具体来说:
1. 用户向公众号发送消息或事件,到达微信服务器进行处理;
2. 微信服务器将处理后的XML数据包发送至公众号服务器上;
3. 公众号服务器对数据进行处理,将回送的内容以XML数据包的形式发送至微信服务器;
4. 微信服务器接收后处理并最终将内容返回给用户。
目前,公众号可能会收到六种类型的消息,分别是文本消息、图片消息、语音消息、视频消息、地理位置消息或链接消息。每种消息的XML数据包内都会包含ToUserName(接收方微信号)、FromUserName(发送方微信号)、CreateTime(消息创建时间)、MsgType(消息类型)和MsgId(消息id)。另外,针对不同类型的消息,会有一些独有参数,如文本消息还会有一个Content参数,其中包含消息内容。具体可以参考官方文档。
另外一种是事件推送,如关注/取消关注事件、自定义菜单事件等,这里就不一一列举了。我们可以根据类型的不同或一些关键标识来有针对性的返回特定消息。
对于公众号的返回,同样是采用XML结构。可以是文本、图片、语音、视频、音乐或图文消息。其中图文消息可以包含多个消息内容,其效果如下:
如果用户点击某条目,还可以根据我们指定的url跳转到对应的网页查看详情,以此拓展更多交互功能。