天天看點

微信開發:消息回複總結

轉自: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/