国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

微信公眾平臺開發(十) 消息回復總結

2019-11-15 01:43:42
字體:
來源:轉載
供稿:網友
微信公眾平臺開發(十) 消息回復總結原文地址:http://m.survivalescaperooms.com/mchina/p/3364377.html

一、簡介

微信公眾平臺提供了三種消息回復的格式,即文本回復、音樂回復和圖文回復,在這一篇文章中,我們將對這三種消息回復的格式做一下簡單講解,然后封裝成函數,以供讀者使用。

二、思路分析

對于每一個POST請求,開發者在響應包中返回特定xml結構,對該消息進行響應(現支持回復文本、圖文、語音、視頻、音樂)。

三、文本回復

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 位置上填寫的是$toUsername = $postObj->ToUserName,既是開發者微信號。

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

這里我們稍做修改,返回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 = "微信公眾平臺-文本回復功能源代碼";            //$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 = "感謝您關注【卓錦蘇州】"."/n"."微信號:zhuojinsz";                break;            default :                $contentStr = "Unknow Event: ".$object->Event;                break;        }        $resultStr = _response_text($object, $contentStr);        return $resultStr;}
復制代碼

3.7 測試結果

回復文本成功。

四、圖文回復

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 創建數組并傳入

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

復制代碼
$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 測試結果

點擊進入查看

單圖文回復測試成功。

4.6 多圖文回復

有了上面的引導,讀者應該能夠想到回復多圖文的思路了,就是將多維數組中的值循環放到相應的位置,然后拼接起來就可以了,下面進行講解。

4.6.1 獲取圖文條數

$bodyCount = count($newsContent);

4.6.2 判斷圖文條數

因為微信限制了回復的圖文消息數為10條以內,所以需要判斷圖文條數,如果小于10條,則圖文數等于原來的圖文數,如果大于等于10條,則強制限制為10條。

$bodyCount = $bodyCount < 10 ? $bodyCount : 10;

4.6.3 組織圖文體

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

用foreach 循環出數組的內容并賦予圖文體,并進行拼接

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 虞城县| 镇平县| 广昌县| 五华县| 盘山县| 临安市| 聊城市| 乐平市| 赣州市| 大港区| 宁海县| 永新县| 朝阳市| 青铜峡市| 镶黄旗| 突泉县| 简阳市| 东方市| 黎川县| 永宁县| 类乌齐县| 会同县| 荃湾区| 西青区| 城市| 榆树市| 凭祥市| 英吉沙县| 从化市| 太和县| 古蔺县| 五指山市| 漳浦县| 通城县| 资溪县| 吉木萨尔县| 定西市| 福清市| 东宁县| 柘荣县| 杭锦后旗|