轉自:http://www.cnblogs.com/mchina/p/3364377.html
一、簡介
微信公衆平台提供了三種消息回複的格式,即文本回複、音樂回複和圖文回複,在這一篇文章中,我們将對這三種消息回複的格式做一下簡單講解,然後封裝成函數,以供讀者使用。
二、思路分析
對于每一個POST請求,開發者在響應包中傳回特定xml結構,對該消息進行響應(現支援回複文本、圖文、語音、視訊、音樂)。
三、文本回複
3.1 文本回複xml 結構


3.2 結構說明
3.3 具體實施
針對上面給出的xml 結構,我們隻需要在對應的位置填上内容,然後格式化輸出就可以了。
說明:
ToUserName 位置上填寫的是$fromUsername = $postObj->FromUserName,就是把消息傳回給發送資訊過來的使用者,即接收方賬号。
FromUserName 位置上填寫的是$toUsername = $postObj->ToUserName,既是開發者微信号。
這是官方的文本回複,隻需執行個體化它的responseMsg() 方法就可以回複 “Welcome to wechat world!” 消息了。
這裡我們稍做修改,傳回fromUsername 和toUsername 消息,便于讀者了解以上的說明。
3.4 測試結果
3.5 封裝成可調用的函數
我們可以将上面的内容封裝成函數,在需要回複文本的地方直接調用,友善簡潔,responseText.func.inc.php 代碼如下。


這樣,隻要傳入$object 和$content,然後在需要回複文本的檔案中引入該檔案,然後調用 _response_text() 方法,就可以直接回複文本了。
3.6 測試代碼
3.6.1 在主檔案中引入回複文本的函數檔案
3.6.2 普通消息回複


3.6.3 關注時回複


3.7 測試結果
回複文本成功。
四、圖文回複
4.1 圖文回複xml 結構


4.2 結構說明
類似文本回複的格式,隻需要在相應的位置填上對應的内容就可以回複圖文資訊了。
4.3 具體實施
圖文回複可以是單圖文,也可以是多圖文,這裡我們先以單圖文的案例來引導讀者,然後再引出多圖文。
我們将回複圖文的xml 結構分解成為以下三個結構,圖文頭,圖文體,圖文尾,圖文體就是圖文回複時看到的标題,描述,圖檔URL和原文URL。


接下來,我們對三段結構分别插入對應内容:
A. $newsTplHead
B. $newsTplBody
說明:$newsContent 是從主檔案傳入函數的圖文數組。
C. $newsTplFoot
然後将三段進行拼接傳回就可以回複單條圖文了。
将以上内容寫到一個函數裡,命名為 _response_news() 函數,以供下面調用測試。
4.4 測試代碼
4.4.1 在主檔案中引入回複圖文的函數檔案
4.4.2 建立數組并傳入
在主檔案中,隻需要向 _response_news() 函數中傳入一個數組和$postObj 即可。


4.5 測試結果
點選進入檢視
單圖文回複測試成功。
4.6 多圖文回複
有了上面的引導,讀者應該能夠想到回複多圖文的思路了,就是将多元數組中的值循環放到相應的位置,然後拼接起來就可以了,下面進行講解。
4.6.1 擷取圖文條數
4.6.2 判斷圖文條數
因為微信限制了回複的圖文消息數為10條以内,是以需要判斷圖文條數,如果小于10條,則圖文數等于原來的圖文數,如果大于等于10條,則強制限制為10條。
4.6.3 組織圖文體
圖文頭和圖文尾和上面單圖文一樣,不再贅述,主要是圖文體的組織。
用foreach 循環出數組的内容并賦予圖文體,并進行拼接:
4.6.4 拼接并傳回
将以上内容寫到一個函數裡,命名為 _response_multiNews() 函數,以供下面調用測試。
4.7 測試多圖文
4.7.1 在主檔案中引入回複多圖文的函數檔案
4.7.2 建立多元數組并傳入


4.8 測試多圖文結果
測試多圖文成功。
五、音樂回複
微信還提供了一種消息回複的格式,即音樂回複,下面我們編寫程式測試一下。
注意:由于音樂版權的問題,現在很少有回複音樂的API,開放的API 查詢出來的音樂資訊也有很多是不正确的。是以在這裡,我們上傳幾首音樂到自己的伺服器空間測試。
本地檔案:
測試是否能夠正常播放:
5.1 音樂回複xml 結構


5.2 結構說明
5.3 具體實施
我們先做一個固定的歌曲回複來引導讀者,然後再引出更進階别的歌曲查詢回複。
5.3.1 在xml 結構的相應位置插入相應資料


5.3.2 測試代碼
5.3.3 測試結果
5.4 模拟點歌
有了上面的簡單案例引導,讀者應該可以想到模拟點歌的具體實作了吧,下面就來簡單介紹一下。
思路:将歌曲代碼和對應的歌曲名存入資料庫,使用者輸入歌曲名,在資料庫中找到歌曲名對應的歌曲編号,然後就可以生成MusicUrl 回複使用者了。
5.4.1 建立資料庫
建表語句及資料檔案:


5.4.2 _response_music() 函數編寫
A. 引入資料庫操作檔案
B. 資料庫操作及資料處理
注: $musicKeyword 為從主檔案傳入的歌曲名關鍵字,這裡使用模糊查詢,隻取第一條資料。
C. 判斷是否查詢到


說明:如果查詢到歌曲資訊,按照xml 結構傳回資料;如果未查詢到,則傳回空,用于主檔案判斷。
将以上代碼封裝成 _response_music() 函數并儲存為responseMusic.func.inc.php 檔案供主檔案調用。
5.4.3 測試代碼
A. 引入回複音樂和回複文本的函數檔案
B. 調用


說明:如果查詢到歌曲資訊,則傳回所得資訊,如果未查詢到,則調用 _response_text() 函數傳回文本資訊。
5.5 模拟點歌測試
回複音樂測試成功。
六、完整代碼擷取
七、關注
請關注 卓錦蘇州 微信公衆帳号,卓錦蘇州 基于BAE 平台開發,針對于主流的微信功能進行開發測試。
您可以關注 卓錦蘇州 公衆帳号進行功能測試,以及擷取新的應用開發。
1. 登入微信用戶端,通訊錄 -> 添加朋友 -> 查找公衆号 -> zhuojinsz,查找并關注。
2. 掃描二維碼:
卓錦蘇州 功能清單:
如何聯系我:【萬裡虎】www.bravetiger.cn
【QQ】3396726884 (咨詢問題100元起,幫助解決問題500元起)
【部落格】http://www.cnblogs.com/kenshinobiy/