1. ??
WeChat ?? ???? ?? ??, ?? ??, ??? ??? ? ?? ??? ?? ??? ?????. reply, ? ????? ? ? ?? ??? ??? ??? ???? ??? ?? ??? ??? ? ??? ??? ???? ????.
2. ???? ??
???? ? POST ??? ?? ?? ???? ?? xml ??? ?????. , ???? ?????(?? ?? ???, ???, ??, ???, ?? ??).
3. ??? ??
3.1 ??? ?? xml ??
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>12345678</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[content]]></Content> </xml>
3.2 ?? ??
3.3 ???? ??
?? ??? xml ??? ?? ?? ??? ??? ??? ??? ???? ???. ?????.
??:
ToUserName? $fromUsername = $postObj->FromUserName?? ??? ???? ?????. ???? ?? ???? ???? ?????.
FromUserName? ???? WeChat ??? $toUsername = $postObj->ToUserName?? ?????.
??? ?? ??? ?????. "Welcome to wechat world!" ???? ????? responseMsg() ???? ????????.
???? ??? ? ??? ?? ??? ? ??? ?? ???? fromUsername ? toUsername ???? ?????.
3.4 ??? ??
3.5 ?? ??? ??? ???
?? ??? ?? ? ????. ??? ??? ????? ?? ?? ???? ??? ?? ?? ??? ? ?? ???? ?????. 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; }
?? ???? $object ? $content? ??? ?? ???? ???? ?? ??? ??? ???? _response_text() ???? ???? ?? ??? ? ????. ???.
3.6 ??? ??
3.6.1 ?? ??? ?? ??? ?? ?? ??
require_once 'responseText.func.inc.php';
3.6.2 ?? ??? ??
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..."; } }
3.6.3
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; }
??? ? ????3.7 ??? ??
????? ?? ??? ????.
4. ??? ??
4.1 ??? ?? xml ??
<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>
4.2 ?? ??
??? ?? ??? ???? ?? ??? ?? ??? ????? ?? ??? ???? ?? ? ????.
4.3 ???? ??
???-??? ??? ?? ???-???? ?? ?? ?? ???-???? ?? ????. ???? ?? ?? ???-??? ??? ???? ??? ??? ?? ?????. ?? ??? ??? .
???? ??? ??? xml ??? ???? ??? ??, ???? ??? ??, ???? ??? ??? ??? ? ?? ??? ?????. , ??, ???? ??? ? ? ???? ??? 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>";
???? ?? ???? ? ?? ??? ?????:
A.$newsTplHead
$header = sprintf($newsTplHead, $object->FromUserName, $object->ToUserName, time());
B.$newsTplBody
$title = $newsContent['title']; $desc = $newsContent['description']; $picUrl = $newsContent['picUrl']; $url = $newsContent['url']; $body = sprintf($newsTplBody, $title, $desc, $picUrl, $url);
??: $newsContent? ?? ???? ??? ??? ??? ? ??? ?????.
C. $newsTplFoot
$FuncFlag = 0; $footer = sprintf($newsTplFoot, $FuncFlag);
?? ?? ? ??? ???? ?? ???? ???? ??? ? ? ????.
return $header.$body.$footer;
?? ?? ???? ?? ? ??? ??? ???? ??? _response_news() ??? ?????.
4.4 ??? ??
4.4.1 ?? ??? ???? ???? ???? ?? ?? ?? ??
require_once 'responseNews.func.inc.php';
4.4.2 ??? ???? ??
?? ????? ??? $postObj? _response_news() ??? ???? ???.
$record=array( 'title' =>'山塘街', 'description' =>'山塘街東起閶門渡僧橋,西至蘇州名勝虎丘山的望山橋,長約七里,所以蘇州俗語說“七里山塘到虎丘”...', '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;
4.5 測試結(jié)果
點(diǎn)擊進(jìn)入查看
單圖文回復(fù)測試成功。
4.6 多圖文回復(fù)
有了上面的引導(dǎo),讀者應(yīng)該能夠想到回復(fù)多圖文的思路了,就是將多維數(shù)組中的值循環(huán)放到相應(yīng)的位置,然后拼接起來就可以了,下面進(jìn)行講解。
4.6.1 獲取圖文條數(shù)
$bodyCount = count($newsContent);
4.6.2 判斷圖文條數(shù)
因?yàn)槲⑿畔拗屏嘶貜?fù)的圖文消息數(shù)為10條以內(nèi),所以需要判斷圖文條數(shù),如果小于10條,則圖文數(shù)等于原來的圖文數(shù),如果大于等于10條,則強(qiáng)制限制為10條。
$bodyCount = $bodyCount < 10 ? $bodyCount : 10;
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']); }
說明:$newsContent 是從主文件傳入函數(shù)的圖文數(shù)組。
4.6.4 拼接并返回
return $header.$body.$footer;
將以上內(nèi)容寫到一個(gè)函數(shù)里,命名為 _response_multiNews() 函數(shù),以供下面調(diào)用測試。
4.7 測試多圖文
4.7.1 在主文件中引入回復(fù)多圖文的函數(shù)文件
require_once 'responseMultiNews.func.inc.php';
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' =>'平江路位于蘇州古城東北,是一條傍河的小路,北接拙政園,南眺雙塔,全長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;
4.8 測試多圖文結(jié)果
點(diǎn)擊進(jìn)入查看
測試多圖文成功。
五、音樂回復(fù)
微信還提供了一種消息回復(fù)的格式,即音樂回復(fù),下面我們編寫程序測試一下。
注意:由于音樂版權(quán)的問題,現(xiàn)在很少有回復(fù)音樂的API,開放的API 查詢出來的音樂信息也有很多是不正確的。所以在這里,我們上傳幾首音樂到自己的服務(wù)器空間測試。
本地文件:
測試是否能夠正常播放:
5.1 音樂回復(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>
5.2 結(jié)構(gòu)說明
5.3 具體實(shí)施
我們先做一個(gè)固定的歌曲回復(fù)來引導(dǎo)讀者,然后再引出更高級(jí)別的歌曲查詢回復(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>
5.3.2 測試代碼
$resultStr = _response_music($postObj,$keyword);echo $resultStr;
5.3.3 測試結(jié)果
5.4 模擬點(diǎn)歌
有了上面的簡單案例引導(dǎo),讀者應(yīng)該可以想到模擬點(diǎn)歌的具體實(shí)現(xiàn)了吧,下面就來簡單介紹一下。
思路:將歌曲代碼和對(duì)應(yīng)的歌曲名存入數(shù)據(jù)庫,用戶輸入歌曲名,在數(shù)據(jù)庫中找到歌曲名對(duì)應(yīng)的歌曲編號(hào),然后就可以生成MusicUrl 回復(fù)用戶了。
5.4.1 創(chuàng)建數(shù)據(jù)庫
建表語句及數(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, '左邊', '楊丞琳', '左邊');
5.4.2 _response_music() 函數(shù)編寫
A. 引入數(shù)據(jù)庫操作文件
require_once('mysql_bae.func.php');
B. 數(shù)據(jù)庫操作及數(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];
注: $musicKeyword 為從主文件傳入的歌曲名關(guān)鍵字,這里使用模糊查詢,只取第一條數(shù)據(jù)。
C. 判斷是否查詢到
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 ""; }
說明:如果查詢到歌曲信息,按照xml 結(jié)構(gòu)返回?cái)?shù)據(jù);如果未查詢到,則返回空,用于主文件判斷。
將以上代碼封裝成 _response_music() 函數(shù)并保存為responseMusic.func.inc.php 文件供主文件調(diào)用。
5.4.3 測試代碼
A. 引入回復(fù)音樂和回復(fù)文本的函數(shù)文件
//引入回復(fù)音樂的函數(shù)文件require_once 'responseMusic.func.inc.php';//引入回復(fù)文本的函數(shù)文件require_once 'responseText.func.inc.php';
B. 調(diào)用
if(!empty( $keyword )) { $resultStr = _response_music($postObj,$keyword); if($resultStr <> '') { echo $resultStr; }else { echo _response_text($postObj,"未查詢到【".$keyword."】的歌曲信息!"); } }
說明:如果查詢到歌曲信息,則返回所得信息,如果未查詢到,則調(diào)用 _response_text() 函數(shù)返回文本信息。
5.5 模擬點(diǎn)歌測試
回復(fù)音樂測試成功。?
更多WeChat ?? ??? ?? ??? ?? ?? ? ??相關(guān)文章請(qǐng)關(guān)注PHP中文網(wǎng)!
?

? AI ??

Undress AI Tool
??? ???? ??

Undresser.AI Undress
???? ?? ??? ??? ?? AI ?? ?

AI Clothes Remover
???? ?? ???? ??? AI ?????.

Clothoff.io
AI ? ???

Video Face Swap
??? ??? AI ?? ?? ??? ???? ?? ???? ??? ?? ????!

?? ??

??? ??

???++7.3.1
???? ?? ?? ?? ???

SublimeText3 ??? ??
??? ??, ???? ?? ????.

???? 13.0.1 ???
??? PHP ?? ?? ??

???? CS6
??? ? ?? ??

SublimeText3 Mac ??
? ??? ?? ?? ?????(SublimeText3)

PHP? ? ?? ? ?? ? ?????, ?? WeChat ??? ?? ???? ?? ?? ???? ?????. ??? ?? ? ?? ??? ???? WeChat ??? PHP? ???? ???? ????. PHP? ??? ?? ???? ?? ?? ???? ?????. WeChat ???? ??? ??? ? ???? ??? ??? ???? ?? ??? ?? ??? ?????. ??? ? ??? ??? ?? ???? ?? ??? ?? ???? ??? ? ?? ????? ??? ? ? ????.

WeChat ?? ??? ??? ? ?? ??? ?? ?????. ?? ??? ????? ?? ??? ??? ??? ? ?? ?? ????, ??? ?? ? ?? ??? ?? ??? ????? ???. ? ????? PHP? ???? WeChat ?? ??? ???? ??? ?????. WeChat ?? ?? ??? ???? ?? WeChat ?? ?? ??? ??? ???. WeChat ?? ?????? WeChat ?? ??, ?? ?? ? ?? ??? ???? ??? API ??? ???? ???. PHP ??? ???? ???? ???? WeChat?? ????? ???? PH? ???? ???.

WeChat? ??? ?? ?? ? ?? ??? WeChat? ??? ??? ???? ??????. WeChat ?? ??? ??? ??? WeChat ???? ???? ??? ?? ? ?????. ??? ?? ???? ????? ??? ?????? ?? ??? ?? ??? ?? ?????. ??? WeChat ?? ??? ??? ???? ?? ?? ?????. ? ????? PHP? ???? WeChat ?? ??? ??? ???? ??? ?????. 1. ?? ?? WeChat ?? ??? ??? ????? ?? ?? ??? ???? ???. PHP WeChat ?? ??? ??? ?? ?? ?? ?? ??: Sub

WeChat? ?? ???? ?? ? ??? ??? ??? ?? ??? ? ?????. ??? ???? ??? ?? ?? ? ?? ???? WeChat ???? ???? ??? ??????. WeChat ???? ??? ? ?? ???? ??? ?????. ?? ??? ?? ?? ? ? ???? ?? WeChat ??? PHP ??? ??? ? ????. 1. PHP ?? WeChat ?? PHP? ? ?? ???? ?? ???? ?? ?? ?? ? ???? ?????. WeChat ?? ????? ???? ?? ?????? ???? PHP ??? ???? WeChat? ??? ? ????.

WeChat ?? ?? ???? ??? ?? ??? ???? ???? ? ? ???? ??? ? ??? ?? ?? ??? ?????. ? ????? PHP? ???? WeChat ??? ?? ?? ??? ???? ??? ?????. 1. WeChat ???? openid? ?????. WeChat ??? ?? ?? ??? ???? ?? ?? ???? openid? ???? ???. WeChat ?? ??? ??? ? ??? ??? ?? openid? ?? ?? ???? ?????. ??? ??? ???? ?? ??? ?? ???? ?? ? ????.

WeChat? ???? ??? ?? ? ??? ?????? ??? ???, WeChat? ??? ??? ??? ?? ??? ??? ??? ??? ?? ????. ??? ?? WeChat? ??? ????? ???? ?? ??? ??? ???? WeChat ??? ???? ?? ?? ???? ????. ? ? ?? ?? ??? ?? ?? ?????. ???? PHP ??????? ?? ??? ?? ??? ??? ???? ???? ??? ??? ?????. 1. WeChat ?? ??? ??? ?? ??? ?????. ?? ??? ?? ??? ???? ??? ?????.

PHP? ???? WeChat ?? ??? ???? ?? WeChat ?? ??? ?? ??? ?? ? ?? ??? ?? ??? ??? ????, ????? ???? ? ??? PHP? ???? WeChat ?? ??? ??? ?? ????. ? ????? PHP? ???? WeChat ?? ??? ???? ???? ??? ?????. 1??: WeChat ?? ??? ??? ??? ????. WeChat ?? ?? ??? ???? ?? WeChat ?? ??? ??? ??? ???? ???. ???? ?? ??? WeChat ?? ??? ?? ????? ?????.

???? ??? ??? ??? ???? WeChat? ?? ? ??? ???? ???? ?? ??? ?????. ?? ? ?????? ??? WeChat ??? PHP? ???? ??? ?? ???? ??? ?????. ? ????? ?? WeChat ??? PHP? ???? ??? ?? ?? ?? ???? ?? ? ? ?? ??? ?????. 1. ?? ?? ?? WeChat? ???? ?? ?? ?? ?? ??? ???? ???. ??, PHP ?? ??? WeChat ?? ???? ???? ???.
