微信開發實戰(5)—粉絲關注開發者公眾號時,自動回覆訊息

Aurora Polaris發表於2016-11-30

微信開發實戰(5)—粉絲關注開發者公眾號時,自動回覆訊息


本篇文章對應原始碼下載:

javaweixin-v1.1

連結:http://pan.baidu.com/s/1pLk1oiZ

密碼:7uba


上篇文章主要介紹了URL、Token認證,以及使用免費的新浪SAE伺服器搭建公眾號的web應用。相信按照文章講解,開發者們已經成功地完成了開發者公眾號的配置。

上篇文章提到,URL還有一個作用:認證通過之後,URL就作為開發者伺服器與微信伺服器之間互動通訊的橋樑。本篇文章就來實現此功能:關注開發者號時,自動回覆文字訊息。


一、URL的POST方法

如果你看了WxApiController.Java 這個類原始碼,你會發現在URL、Token認證的的時候,http請求的method用的是GET。


那麼微信伺服器和開發者伺服器也用此URL進行通訊,會不會與Token認證衝突呢?顯然是不會的,因為訊息互動通訊http請求用的是POST方法:


(詳見原始碼)


二、接收事件推送介面

粉絲關注公眾號時,觸發的是訂閱事件,介面文件如下:

http://mp.weixin.qq.com/wiki/7/9f89d962eba4c5924ed95b513ba69d9b.html

細節不再贅述,參考文件即可。

注意:

原始碼中將ToUserName、FromUserName等引數進行了包裝;

傳送時的ToUserName是回覆時的FromUserName,

傳送時的FromUserName是回覆時的ToUserName;


三、訊息互動原理

在“開發者公眾號的互動原理 ”這篇文章中講解過,此處不再細講,如下圖:


很顯然的,當前公眾號是開發者號,會把訂閱事件訊息包裝成XML資料(第4、5步),轉發給開發者伺服器。開發者伺服器針對訊息進行業務處理(原始碼中回覆一條文字),轉換為XML回覆給微信平臺伺服器。


四、V1.1—原始碼結構介紹


在上篇原始碼(V1.0)的基礎上,V1.1新增了api包。主要作用是處理微信伺服器傳送來的訊息,將訊息轉換為MsgRequest。

再將回復訊息轉換為MsgResponse,和對應的XML資料,返回給微信平臺。也就是上一步流程圖中流轉過程。詳細請參考原始碼。

其中,MsgHandler.java中設定自動回覆內容:



五、新浪SAE釋出,並關注測試

如上篇文章一樣,登入sae,上傳war包部署:

5.1,進入選單“應用 》程式碼管理”,上傳war包


上傳成功,訪問應用首頁看是否正常(如前一篇)。


5.2,關注測試號,檢視回復訊息


就是程式碼中的設定的內容,成功了!!


相關文章