4.1.1 消息交互流程

首先来思考这样一个问题:用户向公众账号发送一条消息,并收到公众账号回复的消息,在这短暂的瞬间到底发生了哪些事情?消息经历了哪些处理环节?在开发者文档中,有如下两段重要的描述能够解答上面的疑问。

●接收消息:当普通微信用户向公众账号发消息时,微信服务器将POST消息的XML数据包发送到开发者填写的URL上。

●发送消息:对于每一个POST请求,开发者在响应包中返回特定XML结构,并对该消息进行响应(现支持回复文本、图片、图文、语音、视频、音乐)。

从上面的描述中可以了解到,参与消息交互的实体主要有3个:用户、微信服务器和公众账号服务器,这三者之间的消息交互流程如图4-2所示。

公众平台的消息交互流程描述如下:

1)用户通过微信客户端向公众账号发送消息,消息首先会被微信服务器接收到;

2)微信服务器收到消息后,会根据开发者在接口配置信息中填写的URL,将消息通过HTTP POST方式传递到公众账号服务器;

3)公众账号服务器接收到消息后,会按照业务逻辑进行相应的处理;

4)处理完成后,公众账号服务器会将处理结果返回给微信服务器;

5)微信服务器将公众账号服务器返回的消息通过公众账号发送给用户。

4.1.1 消息交互流程 - 图1

图4-2 公众平台的消息交互流程


说明 消息交互流程中的服务器指代的是后台处理程序,而不是物理硬件。例如,公众账号服务器是指公众账号的后台处理程序。


在整个消息交互过程中,公众账号服务器主要做3件事情:

1)接收微信服务器发来的消息;

2)根据指定的业务逻辑对消息进行处理;

3)将处理结果返回给微信服务器。