**微信企業號的消息,分成兩種,調用微信接口發送的消息在接口文檔中叫做發送消息,這種消息是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,也就是簡單的聊天,兩種方式都可以,但被動響應消息速度能快一些,主動發送消息稍微慢一點。但被動響應消息不能主動推送,主動發送消息卻可以主動發送。