国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

微信公眾平臺(tái)開(kāi)發(fā)消息回復(fù)總結(jié)介紹

高洛峰
發(fā)布: 2017-03-06 09:38:30
原創(chuàng)
1569人瀏覽過(guò)

一、簡(jiǎn)介

微信公眾平臺(tái)提供了三種消息回復(fù)的格式,即文本回復(fù)、音樂(lè)回復(fù)和圖文回復(fù),在這一篇文章中,我們將對(duì)這三種消息回復(fù)的格式做一下簡(jiǎn)單講解,然后封裝成函數(shù),以供讀者使用。

二、思路分析

對(duì)于每一個(gè)POST請(qǐng)求,開(kāi)發(fā)者在響應(yīng)包中返回特定xml結(jié)構(gòu),對(duì)該消息進(jìn)行響應(yīng)(現(xiàn)支持回復(fù)文本、圖文、語(yǔ)音、視頻、音樂(lè))。

三、文本回復(fù)

3.1 文本回復(fù)xml 結(jié)構(gòu)

 <xml>
 <ToUserName><![CDATA[toUser]]></ToUserName>
 <FromUserName><![CDATA[fromUser]]></FromUserName>
 <CreateTime>12345678</CreateTime>
 <MsgType><![CDATA[text]]></MsgType>
 <Content><![CDATA[content]]></Content>
 </xml>
登錄后復(fù)制

3.2 結(jié)構(gòu)說(shuō)明

微信公眾平臺(tái)開(kāi)發(fā)消息回復(fù)總結(jié)介紹

3.3 具體實(shí)施

針對(duì)上面給出的xml 結(jié)構(gòu),我們只需要在對(duì)應(yīng)的位置填上內(nèi)容,然后格式化輸出就可以了。

微信公眾平臺(tái)開(kāi)發(fā)消息回復(fù)總結(jié)介紹

說(shuō)明:

ToUserName 位置上填寫(xiě)的是$fromUsername = $postObj->FromUserName,就是把消息返回給發(fā)送信息過(guò)來(lái)的用戶,即接收方賬號(hào)。

FromUserName 位置上填寫(xiě)的是$toUsername = $postObj->ToUserName,既是開(kāi)發(fā)者微信號(hào)。

這是官方的文本回復(fù),只需實(shí)例化它的responseMsg() 方法就可以回復(fù) “Welcome to wechat world!” 消息了。

這里我們稍做修改,返回fromUsername 和toUsername 消息,便于讀者理解以上的說(shuō)明。

微信公眾平臺(tái)開(kāi)發(fā)消息回復(fù)總結(jié)介紹

3.4 測(cè)試結(jié)果

微信公眾平臺(tái)開(kāi)發(fā)消息回復(fù)總結(jié)介紹

3.5 封裝成可調(diào)用的函數(shù)

我們可以將上面的內(nèi)容封裝成函數(shù),在需要回復(fù)文本的地方直接調(diào)用,方便簡(jiǎn)潔,responseText.func.inc.php?代碼如下。

function _response_text($object,$content){
    $textTpl = "<xml>
                <ToUserName><![CDATA[%s]]></ToUserName>
                <FromUserName><![CDATA[%s]]></FromUserName>
                <CreateTime>%s</CreateTime>
                <MsgType><![CDATA[text]]></MsgType>
                <Content><![CDATA[%s]]></Content>
                <FuncFlag>%d</FuncFlag>
                </xml>";
    $resultStr = sprintf($textTpl, $object->FromUserName, $object->ToUserName, time(), $content, $flag);
    return $resultStr;
}
登錄后復(fù)制

這樣,只要傳入$object 和$content,然后在需要回復(fù)文本的文件中引入該文件,然后調(diào)用 _response_text() 方法,就可以直接回復(fù)文本了。?

3.6 測(cè)試代碼

3.6.1 在主文件中引入回復(fù)文本的函數(shù)文件

require_once 'responseText.func.inc.php';
登錄后復(fù)制

3.6.2 普通消息回復(fù)

public function handleText($postObj)
    {
        $keyword = trim($postObj->Content);

        if(!empty( $keyword ))
        {
            $contentStr = "微信公眾平臺(tái)-文本回復(fù)功能源代碼";
            //$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
            $resultStr = _response_text($postObj,$contentStr);
            echo $resultStr;
        }else{
            echo "Input something...";
        }
}
登錄后復(fù)制

3.6.3 關(guān)注時(shí)回復(fù)

public function handleEvent($object)
    {
        $contentStr = "";
        switch ($object->Event)
        {
            case "subscribe":
                $contentStr = "感謝您關(guān)注【卓錦蘇州】"."\n"."微信號(hào):zhuojinsz";
                break;
            default :
                $contentStr = "Unknow Event: ".$object->Event;
                break;
        }
        $resultStr = _response_text($object, $contentStr);
        return $resultStr;
}
登錄后復(fù)制

3.7 測(cè)試結(jié)果

微信公眾平臺(tái)開(kāi)發(fā)消息回復(fù)總結(jié)介紹

回復(fù)文本成功。

四、圖文回復(fù)

4.1 圖文回復(fù)xml 結(jié)構(gòu)

 <xml>
 <ToUserName><![CDATA[toUser]]></ToUserName>
 <FromUserName><![CDATA[fromUser]]></FromUserName>
 <CreateTime>12345678</CreateTime>
 <MsgType><![CDATA[news]]></MsgType>
 <ArticleCount>2</ArticleCount>
 <Articles>
 <item>
 <Title><![CDATA[title1]]></Title> 
 <Description><![CDATA[description1]]></Description>
 <PicUrl><![CDATA[picurl]]></PicUrl>
 <Url><![CDATA[url]]></Url>
 </item>
 <item>
 <Title><![CDATA[title]]></Title>
 <Description><![CDATA[description]]></Description>
 <PicUrl><![CDATA[picurl]]></PicUrl>
 <Url><![CDATA[url]]></Url>
 </item>
 </Articles>
 </xml>
登錄后復(fù)制

4.2 結(jié)構(gòu)說(shuō)明

微信公眾平臺(tái)開(kāi)發(fā)消息回復(fù)總結(jié)介紹

類(lèi)似文本回復(fù)的格式,只需要在相應(yīng)的位置填上對(duì)應(yīng)的內(nèi)容就可以回復(fù)圖文信息了。

4.3 具體實(shí)施

圖文回復(fù)可以是單圖文,也可以是多圖文,這里我們先以單圖文的案例來(lái)引導(dǎo)讀者,然后再引出多圖文。

我們將回復(fù)圖文的xml 結(jié)構(gòu)分解成為以下三個(gè)結(jié)構(gòu),圖文頭,圖文體,圖文尾,圖文體就是圖文回復(fù)時(shí)看到的標(biāo)題,描述,圖片URL和原文URL。

$newsTplHead = "<xml>
                <ToUserName><![CDATA[%s]]></ToUserName>
                <FromUserName><![CDATA[%s]]></FromUserName>
                <CreateTime>%s</CreateTime>
                <MsgType><![CDATA[news]]></MsgType>
                <ArticleCount>1</ArticleCount>
                <Articles>";
$newsTplBody = "<item>
                <Title><![CDATA[%s]]></Title> 
                <Description><![CDATA[%s]]></Description>
                <PicUrl><![CDATA[%s]]></PicUrl>
                <Url><![CDATA[%s]]></Url>
                </item>";
$newsTplFoot = "</Articles>
                <FuncFlag>0</FuncFlag>
                </xml>";
登錄后復(fù)制

接下來(lái),我們對(duì)三段結(jié)構(gòu)分別插入對(duì)應(yīng)內(nèi)容:

A. $newsTplHead

$header = sprintf($newsTplHead, $object->FromUserName, $object->ToUserName, time());
登錄后復(fù)制

B. $newsTplBody

$title = $newsContent['title'];
$desc = $newsContent['description'];
$picUrl = $newsContent['picUrl'];
$url = $newsContent['url'];
$body = sprintf($newsTplBody, $title, $desc, $picUrl, $url);
登錄后復(fù)制

說(shuō)明:$newsContent 是從主文件傳入函數(shù)的圖文數(shù)組。

C. $newsTplFoot

$FuncFlag = 0;
$footer = sprintf($newsTplFoot, $FuncFlag);
登錄后復(fù)制

然后將三段進(jìn)行拼接返回就可以回復(fù)單條圖文了。

return $header.$body.$footer;
登錄后復(fù)制

將以上內(nèi)容寫(xiě)到一個(gè)函數(shù)里,命名為?_response_news() 函數(shù),以供下面調(diào)用測(cè)試。

4.4 測(cè)試代碼

4.4.1 在主文件中引入回復(fù)圖文的函數(shù)文件

require_once 'responseNews.func.inc.php';
登錄后復(fù)制

4.4.2 創(chuàng)建數(shù)組并傳入

在主文件中,只需要向 _response_news() 函數(shù)中傳入一個(gè)數(shù)組和$postObj 即可。

$record=array(
'title' =>'山塘街',
'description' =>'山塘街東起閶門(mén)渡僧橋,西至蘇州名勝虎丘山的望山橋,長(zhǎng)約七里,所以蘇州俗語(yǔ)說(shuō)“七里山塘到虎丘”...',
'picUrl' => 'http://thinkshare.duapp.com/images/suzhou.jpg',
'url' =>'http://mp.weixin.qq.com/mp/appmsg/show?__biz=MjM5NDM0NTEyMg==&appmsgid=10000046&itemidx=1&sign=9e7707d5615907d483df33ee449b378d#wechat_redirect'
);

$resultStr = _response_news($postObj,$record);
echo $resultStr;
登錄后復(fù)制
4.5 測(cè)試結(jié)果
登錄后復(fù)制

微信公眾平臺(tái)開(kāi)發(fā)消息回復(fù)總結(jié)介紹

點(diǎn)擊進(jìn)入查看

微信公眾平臺(tái)開(kāi)發(fā)消息回復(fù)總結(jié)介紹

單圖文回復(fù)測(cè)試成功。

4.6 多圖文回復(fù)

有了上面的引導(dǎo),讀者應(yīng)該能夠想到回復(fù)多圖文的思路了,就是將多維數(shù)組中的值循環(huán)放到相應(yīng)的位置,然后拼接起來(lái)就可以了,下面進(jìn)行講解。?

4.6.1 獲取圖文條數(shù)


$bodyCount = count($newsContent);
登錄后復(fù)制

4.6.2 判斷圖文條數(shù)

因?yàn)槲⑿畔拗屏嘶貜?fù)的圖文消息數(shù)為10條以?xún)?nèi),所以需要判斷圖文條數(shù),如果小于10條,則圖文數(shù)等于原來(lái)的圖文數(shù),如果大于等于10條,則強(qiáng)制限制為10條。


$bodyCount = $bodyCount < 10 ? $bodyCount : 10;
登錄后復(fù)制

4.6.3 組織圖文體

圖文頭和圖文尾和上面單圖文一樣,不再贅述,主要是圖文體的組織。

用foreach 循環(huán)出數(shù)組的內(nèi)容并賦予圖文體,并進(jìn)行拼接:


foreach($newsContent as $key => $value){
    $body .= sprintf($newsTplBody, $value['title'], $value['description'], $value['picUrl'], $value['url']);
}
登錄后復(fù)制

說(shuō)明:$newsContent 是從主文件傳入函數(shù)的圖文數(shù)組。

4.6.4?拼接并返回


return $header.$body.$footer;
登錄后復(fù)制

將以上內(nèi)容寫(xiě)到一個(gè)函數(shù)里,命名為 _response_multiNews() 函數(shù),以供下面調(diào)用測(cè)試。

4.7 測(cè)試多圖文

4.7.1 在主文件中引入回復(fù)多圖文的函數(shù)文件


require_once 'responseMultiNews.func.inc.php';
登錄后復(fù)制

4.7.2?創(chuàng)建多維數(shù)組并傳入

$record[0]=array(
    'title' =>'觀前街',
    'description' =>'觀前街位于江蘇蘇州市區(qū),是成街于清朝時(shí)期的百年商業(yè)老街,街上老店名店云集,名聲遠(yuǎn)播海內(nèi)外...',
    'picUrl' => 'http://joythink.duapp.com/images/suzhou.jpg',
    'url' =>'http://mp.weixin.qq.com/mp/appmsg/show?__biz=MjM5NDM0NTEyMg==&appmsgid=10000052&itemidx=1&sign=90518631fd3e85dd1fde7f77c04e44d5#wechat_redirect'
);
......
$record[11]=array(
    'title' =>'平江路',
    'description' =>'平江路位于蘇州古城東北,是一條傍河的小路,北接拙政園,南眺雙塔,全長(zhǎng)1606米,是蘇州一條歷史攸久的經(jīng)典水巷。宋元時(shí)候蘇州又名平江,以此名路...',
    'picUrl' => 'http://joythink.duapp.com/images/suzhouScenic/pingjianglu.jpg',
    'url' =>'http://mp.weixin.qq.com/mp/appmsg/show?__biz=MjM5NDM0NTEyMg==&appmsgid=10000056&itemidx=1&sign=ef18a26ce78c247f3071fb553484d97a#wechat_redirect'
);
$resultStr = _response_multiNews($postObj,$record);
echo $resultStr;
登錄后復(fù)制

4.8 測(cè)試多圖文結(jié)果

微信公眾平臺(tái)開(kāi)發(fā)消息回復(fù)總結(jié)介紹

點(diǎn)擊進(jìn)入查看

微信公眾平臺(tái)開(kāi)發(fā)消息回復(fù)總結(jié)介紹

測(cè)試多圖文成功。

五、音樂(lè)回復(fù)

微信還提供了一種消息回復(fù)的格式,即音樂(lè)回復(fù),下面我們編寫(xiě)程序測(cè)試一下。

注意:由于音樂(lè)版權(quán)的問(wèn)題,現(xiàn)在很少有回復(fù)音樂(lè)的API,開(kāi)放的API 查詢(xún)出來(lái)的音樂(lè)信息也有很多是不正確的。所以在這里,我們上傳幾首音樂(lè)到自己的服務(wù)器空間測(cè)試。

本地文件:

微信公眾平臺(tái)開(kāi)發(fā)消息回復(fù)總結(jié)介紹

測(cè)試是否能夠正常播放:

微信公眾平臺(tái)開(kāi)發(fā)消息回復(fù)總結(jié)介紹

5.1 音樂(lè)回復(fù)xml 結(jié)構(gòu)


 <xml>
 <ToUserName><![CDATA[toUser]]></ToUserName>
 <FromUserName><![CDATA[fromUser]]></FromUserName>
 <CreateTime>12345678</CreateTime>
 <MsgType><![CDATA[music]]></MsgType>
 <Music>
 <Title><![CDATA[TITLE]]></Title>
 <Description><![CDATA[DESCRIPTION]]></Description>
 <MusicUrl><![CDATA[MUSIC_Url]]></MusicUrl>
 <HQMusicUrl><![CDATA[HQ_MUSIC_Url]]></HQMusicUrl>
 </Music>
 </xml>
登錄后復(fù)制

5.2 結(jié)構(gòu)說(shuō)明

微信公眾平臺(tái)開(kāi)發(fā)消息回復(fù)總結(jié)介紹

5.3 具體實(shí)施

我們先做一個(gè)固定的歌曲回復(fù)來(lái)引導(dǎo)讀者,然后再引出更高級(jí)別的歌曲查詢(xún)回復(fù)。

5.3.1 在xml 結(jié)構(gòu)的相應(yīng)位置插入相應(yīng)數(shù)據(jù)


<Music>
<Title><![CDATA[Far Away From Home]]></Title>
<Description><![CDATA[Groove Coverage]]></Description>
<MusicUrl><![CDATA[http://thinkshare.duapp.com/music/10001.mp3]]></MusicUrl>
<HQMusicUrl><![CDATA[http://thinkshare.duapp.com/music/10001.mp3]]></HQMusicUrl>
</Music>
登錄后復(fù)制

5.3.2 測(cè)試代碼


$resultStr = _response_music($postObj,$keyword);echo $resultStr;
登錄后復(fù)制

5.3.3 測(cè)試結(jié)果

微信公眾平臺(tái)開(kāi)發(fā)消息回復(fù)總結(jié)介紹

5.4 模擬點(diǎn)歌

有了上面的簡(jiǎn)單案例引導(dǎo),讀者應(yīng)該可以想到模擬點(diǎn)歌的具體實(shí)現(xiàn)了吧,下面就來(lái)簡(jiǎn)單介紹一下。

思路:將歌曲代碼和對(duì)應(yīng)的歌曲名存入數(shù)據(jù)庫(kù),用戶輸入歌曲名,在數(shù)據(jù)庫(kù)中找到歌曲名對(duì)應(yīng)的歌曲編號(hào),然后就可以生成MusicUrl 回復(fù)用戶了。

5.4.1 創(chuàng)建數(shù)據(jù)庫(kù)

微信公眾平臺(tái)開(kāi)發(fā)消息回復(fù)總結(jié)介紹

建表語(yǔ)句及數(shù)據(jù)文件:


CREATE TABLE IF NOT EXISTS `tbl_music` (
  `music_id` int(11) NOT NULL,
  `music_name` varchar(40) NOT NULL,
  `music_singer` varchar(40) NOT NULL,
  `music_lrc` text NOT NULL,  PRIMARY KEY (`music_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;INSERT INTO `tbl_music` (`music_id`, `music_name`, `music_singer`, `music_lrc`) VALUES(10001, 'Far Away From Home', 'Groove Coverage', 'far away from home'),
(10002, 'The Dawn', 'Dreamtale', 'the dawn'),
(20002, '董小姐', '宋冬野', '董小姐'),
(20001, '左邊', '楊丞琳', '左邊');
登錄后復(fù)制

5.4.2 _response_music() 函數(shù)編寫(xiě)

A. 引入數(shù)據(jù)庫(kù)操作文件


require_once('mysql_bae.func.php');
登錄后復(fù)制

B. 數(shù)據(jù)庫(kù)操作及數(shù)據(jù)處理

$query = "SELECT * FROM tbl_music WHERE music_name LIKE '%$musicKeyword%'";
$result = _select_data($query);
$rows = mysql_fetch_array($result, MYSQL_ASSOC);
$music_id = $rows[music_id];
登錄后復(fù)制

注: $musicKeyword 為從主文件傳入的歌曲名關(guān)鍵字,這里使用模糊查詢(xún),只取第一條數(shù)據(jù)。

C. 判斷是否查詢(xún)到


if($music_id <> '')
{
    $music_name = $rows[music_name];
    $music_singer = $rows[music_singer];
    $musicUrl = "http://thinkshare.duapp.com/music/".$music_id.".mp3";
    $HQmusicUrl = "http://thinkshare.duapp.com/music/".$music_id.".mp3";

    $resultStr = sprintf($musicTpl, $object->FromUserName, $object->ToUserName, time(), $music_name, $music_singer, $musicUrl, $HQmusicUrl);
    return $resultStr;
}else{
    return "";    
}
登錄后復(fù)制

說(shuō)明:如果查詢(xún)到歌曲信息,按照xml 結(jié)構(gòu)返回?cái)?shù)據(jù);如果未查詢(xún)到,則返回空,用于主文件判斷。

將以上代碼封裝成?_response_music() 函數(shù)并保存為responseMusic.func.inc.php 文件供主文件調(diào)用。

5.4.3 測(cè)試代碼

A. 引入回復(fù)音樂(lè)和回復(fù)文本的函數(shù)文件


//引入回復(fù)音樂(lè)的函數(shù)文件require_once 'responseMusic.func.inc.php';//引入回復(fù)文本的函數(shù)文件require_once 'responseText.func.inc.php';
登錄后復(fù)制

B. 調(diào)用


if(!empty( $keyword ))
{
    $resultStr = _response_music($postObj,$keyword);
    if($resultStr <> '')
    {
        echo $resultStr;
    }else
    {
        echo _response_text($postObj,"未查詢(xún)到【".$keyword."】的歌曲信息!");    
    }
    
}
登錄后復(fù)制

說(shuō)明:如果查詢(xún)到歌曲信息,則返回所得信息,如果未查詢(xún)到,則調(diào)用 _response_text() 函數(shù)返回文本信息。

5.5 模擬點(diǎn)歌測(cè)試

微信公眾平臺(tái)開(kāi)發(fā)消息回復(fù)總結(jié)介紹

回復(fù)音樂(lè)測(cè)試成功。?

更多微信公眾平臺(tái)開(kāi)發(fā)消息回復(fù)總結(jié)介紹相關(guān)文章請(qǐng)關(guān)注PHP中文網(wǎng)!

?


微信app下載
微信app下載

微信是一款手機(jī)通信軟件,支持通過(guò)手機(jī)網(wǎng)絡(luò)發(fā)送語(yǔ)音短信、視頻、圖片和文字。微信可以單聊及群聊,還能根據(jù)地理位置找到附近的人,帶給大家全新的移動(dòng)溝通體驗(yàn),有需要的小伙伴快來(lái)保存下載體驗(yàn)吧!

下載
來(lái)源:php中文網(wǎng)
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系admin@php.cn
最新問(wèn)題
開(kāi)源免費(fèi)商場(chǎng)系統(tǒng)廣告
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
關(guān)于我們 免責(zé)申明 意見(jiàn)反饋 講師合作 廣告合作 最新更新
php中文網(wǎng):公益在線php培訓(xùn),幫助PHP學(xué)習(xí)者快速成長(zhǎng)!
關(guān)注服務(wù)號(hào) 技術(shù)交流群
PHP中文網(wǎng)訂閱號(hào)
每天精選資源文章推送
PHP中文網(wǎng)APP
隨時(shí)隨地碎片化學(xué)習(xí)
PHP中文網(wǎng)抖音號(hào)
發(fā)現(xiàn)有趣的

Copyright 2014-2025 http://www.miracleart.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)