ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
**微信企业号的消息,分成两种,调用微信接口发送的消息在接口文档中叫做发送消息,这种消息是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)这种方式,发送给微信服务器,微信服务器在把消息转给用户的消息。 仔细分析可以发现前两类是用户是主动者,而被动响应消息是企业号因为用户的某些动作而产生的回应,这或许就是微信把这类消息叫做被动响应消息的原因吧。 前两类消息的流程图 ![](https://box.kancloud.cn/2016-01-14_569757dda29ee.jpg) 被动相应消息的顺序恰好相反。 ![](https://box.kancloud.cn/2016-01-14_569757ddb2a71.jpg) 发送消息和被动响应消息有什么区别呢? 发送消息是公众号主动推送消息给用户,被动响应消息是由于用户的原因导致了微信服务器器post到URL上。从用户角度来说没有太大差别。 例如:用户回复1,公众号回复1,也就是简单的聊天,两种方式都可以,但被动响应消息速度能快一些,主动发送消息稍微慢一点。但被动响应消息不能主动推送,主动发送消息却可以主动发送。