牛骨文教育服务平台(让学习变的简单)

微信企业号的消息,分成两种,调用微信接口发送的消息在接口文档中叫做发送消息,这种消息是json格式的。在微信服务器给我们配置的URL post数据时发送的消息叫做接收消息和事件,需要加密解密,不需要调用微信接口,这种消息的格式是XML格式的。

两种消息的区别和联系:

发送消息是json格式的,不需要加密解密,需要调用微信的接口,需要AccessToken,这种消息适用于公众号主动推送下发消息。

接收消息和事件的格式是XML格式的,需要加密,不需要调用微信接口,不需要AccessToken,但每次都会包含msg_signature、timestamp、nonce等几个参数,这类消息其实是微信把数据post到我们配置的URL时发生的。

其实仔细分析可以发现:所有主动调用微信接口的都需要参数AccessToken,不需要加密解密,json格式的包括创建菜单,管理通信录等。

而在微信把数据post到我们配置的URL时,则需要解密加密,不需要调用微信接口,不需要AccessToken,但每次都会包含msg_signature、timestamp、nonce等几个参数,XML格式的数据。

在接收消息与事件中,消息又分为:普通消息,事件,被动响应消息三类消息。

1普通消息其实就是用户发送给企业号的消息。

实际运行路径是,用户发送消息,微信服务器把消息处理后post给我们配置的URL,我们在配置的URL的后台就可以获得用户发送的消息。

2事件,其实也是用户的特殊动作导致的消息,例如点击菜单等。

实际运行路径是,用户发送消息,微信服务器把消息处理后post给我们配置的URL,我们在配置的URL的后台就可以获得用户发送的消息。

3被动响应消息,其实是微信服务器把前两类消息post给我们配置的URL后,我们通过HttpContext.Current.Response.Write(encryptResponse)这种方式,发送给微信服务器,微信服务器在把消息转给用户的消息。

仔细分析可以发现前两类是用户是主动者,而被动响应消息是企业号因为用户的某些动作而产生的回应,这或许就是微信把这类消息叫做被动响应消息的原因吧。

前两类消息的流程图

被动相应消息的顺序恰好相反。

发送消息和被动响应消息有什么区别呢?

发送消息是公众号主动推送消息给用户,被动响应消息是由于用户的原因导致了微信服务器器post到URL上。从用户角度来说没有太大差别。

例如:用户回复1,公众号回复1,也就是简单的聊天,两种方式都可以,但被动响应消息速度能快一些,主动发送消息稍微慢一点。但被动响应消息不能主动推送,主动发送消息却可以主动发送。