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

首頁 > 熱點 > 微信 > 正文

玩轉微信公眾平臺之十 圖文消息回復講解

2020-03-22 19:36:01
字體:
來源:轉載
供稿:網友
  • 我們回復用戶的消息類型有多種,可以是簡單的文字回復,也可以是音樂回復,或者是圖文信息回復(不能只回復一張圖片,一定要夾帶著文字)。為什么本篇我就只將圖文回復呢?原因有多個:
    1、音樂回復我沒搞過;
    2、文字回復前一篇說過;
    3、圖文回復個人覺得偏難了點,所以重點講;
    4、博主又要湊博客篇數了...(沒錯,答對了)

    --------------------------
    1、在開始講解圖文消息回復之前,我要補講一些東西:在示例代碼講解的那篇博客里,我下面這段代碼跳過去了:
    $textTpl = "<xml>			<ToUserName><![CDATA[%s]]></ToUserName>			<FromUserName><![CDATA[%s]]></FromUserName>			<CreateTime>%s</CreateTime>			<MsgType><![CDATA[%s]]></MsgType>			<Content><![CDATA[%s]]></Content>			<FuncFlag>0</FuncFlag>			</xml>";

    $textTpl這貨怎么看起來如此眼熟?沒錯,我們在回復用戶的文字消息(注意是文字消息)時,都會用到它,如下面這句:
    $msgType = "text";$contentStr = "感謝您的關注,回復“1”查看博主ID;回復“2”查看博主愛好";$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);echo $resultStr;

    它的作用就是將我們要發給用戶的文字消息合成為xml格式文本,這個文本里包含用戶的OpenID,公眾號的ID,系統時間,消息類型,回復的文字內容。那么,什么是xml格式呢?

    XML是一種簡單的數據存儲語言,它要求每一個標簽都有開始和結束標記,可以進行嵌套,它里面的每個字段(就是每種信息)都必須以<>開頭,</>結尾,如下:
    <xml><content><id>博主ID</id><age>博主年齡</age></content></xml>
    xml簡單分析到這里,下面回過頭來繼續看$textTpl這個變量:
    $textTpl = "<xml>//這里表明是xml格式			<ToUserName><![CDATA[%s]]></ToUserName>//存儲微信公眾號的ID			<FromUserName><![CDATA[%s]]></FromUserName>//存儲用戶OpenID			<CreateTime>%s</CreateTime>//存儲系統時間			<MsgType><![CDATA[%s]]></MsgType>//存儲消息類型			<Content><![CDATA[%s]]></Content>//存儲要發送到消息內容			<FuncFlag>0</FuncFlag>//是否星標(別管這個)			</xml>";

    恩,上面的代碼注釋還算比較好理解吧,可能唯一不理解的就是[CDATA[%S]]這貨是什么玩意,CDATA表示不轉義,不理解也沒事,主要還是看%s,它表示要轉換成字符串的數據類型。翻譯成白話文就是%s表示一個剛出生的嬰兒,這個嬰兒的類型的字符串類型(可以理解為女的),我們都知道嬰兒剛出生時全部信息都是一片空白,沒有姓名,沒有戶口之類的,這就是%s的含義,表示一片空白,等待你來開發,如下面這句:
    <Content><![CDATA[%s]]></Content>
    此時Content里是沒有內容的,所以就需要我們來傳送內容進入,怎么傳呢?用sprintf()這個函數,它的格式如下:
    sprintf(baby,$name,$country,...);
    第一個參數baby表示將要被傳送內容的xml格式變量(嬰兒),將$name傳給baby中第一個出現%s的位置,將$country傳給第2個出現%s的位置,以此類推。

    最后我們再回過頭來看下這句:
    $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);echo $resultStr;
    是不是知道怎么回事了?$textTpl就是xml格式變量,接下來將$fromUsername傳給textTpl,然后是tuUsername,然后...,最后將全新的textTpl傳給resultStr這個變量,然后發送給用戶。

    2、下面進入正題,如何回復圖文消息。下面是回復圖文消息的一些格式:

    也可以點擊這個鏈接查看:點擊打開鏈接

    上面描述的很詳細了,這里需要注意單圖的時候會顯示描述(Descripition),而多圖不會顯示描述。第一張為item大圖,像素為640x320,下面的item圖片為小圖,像素為80x80,Url為圖片的鏈接,所以在這之前我們需要事先將圖片上面到SAE服務器上(要不然你圖片的鏈接哪來?)。
    下面我先搞個回復單圖的模式,先配置圖文消息的xml,類似文本消息的$textTpl。
    $imageTpl = "<xml>			<ToUserName><![CDATA[%s]]></ToUserName>			<FromUserName><![CDATA[%s]]></FromUserName>			<CreateTime>%s</CreateTime>			<MsgType><![CDATA[news]]></MsgType>//消息類型為news(圖文)			<ArticleCount>1</ArticleCount>//圖文數量為1(單圖文)			<Articles>			<item>//第一張圖文消息			<Title><![CDATA[%s]]></Title> //標題			<Description><![CDATA[]]></Description>//描述為空(懶得描述)			<PicUrl><![CDATA[%s]]></PicUrl>//打開前的圖片鏈接地址			<Url><![CDATA[%s]]></Url>//點擊進入后顯示的圖片鏈接地址			</item>			</Articles>			</xml> ";

    好了,圖文消息的回復模板已經搞好了,接下來就是將圖片消息的標題,圖片等信息填滿了,代碼如下:
    $title = "哎呦我去,又下雨了";//標題$PicUrl = "http://1.star530.sinaapp.com/weather.jpg";//圖片鏈接$Url = "http://1.star530.sinaapp.com/weather.jpg";//打開后的圖片鏈接$resultStr = sprintf($imageTpl, $fromUsername, $toUsername, $time, $title, $PicUrl,$Url);echo $resultStr;
    運行效果如下:


    恩,就是這樣,完整的代碼如下:
    html' target='_blank'>public function responseMsg()    {		//get post data, May be due to the different environments		$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];      	//extract post data		if (!empty($postStr)){                              	$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);                $fromUsername = $postObj->FromUserName;                $toUsername = $postObj->ToUserName;                $keyword = trim($postObj->Content);                $time = time();                $textTpl = "<xml>							<ToUserName><![CDATA[%s]]></ToUserName>							<FromUserName><![CDATA[%s]]></FromUserName>							<CreateTime>%s</CreateTime>							<MsgType><![CDATA[%s]]></MsgType>							<Content><![CDATA[%s]]></Content>							<FuncFlag>0</FuncFlag>							</xml>";     									$imageTpl = "<xml>							<ToUserName><![CDATA[%s]]></ToUserName>							<FromUserName><![CDATA[%s]]></FromUserName>							<CreateTime>%s</CreateTime>							<MsgType><![CDATA[news]]></MsgType>//消息類型為news(圖文)							<ArticleCount>1</ArticleCount>//圖文數量為1(單圖文)							<Articles>							<item>//第一張圖文消息							<Title><![CDATA[%s]]></Title> //標題							<Description><![CDATA[]]></Description>//描述為空(懶得描述)							<PicUrl><![CDATA[%s]]></PicUrl>//打開前的圖片鏈接地址							<Url><![CDATA[%s]]></Url>//點擊進入后顯示的圖片鏈接地址							</item>							</Articles>							</xml> ";							if(!empty( $keyword ))                {					$title = "哎呦我去,又下雨了";//標題					$PicUrl = "http://1.star530.sinaapp.com/weather.jpg";//圖片鏈接					$Url = "http://1.star530.sinaapp.com/weather.jpg";//打開后的圖片鏈接					$resultStr = sprintf($imageTpl, $fromUsername, $toUsername, $time, $title, $PicUrl,$Url);					echo $resultStr;                }else{                	echo "Input something...";                }				        }else {        	echo "";        	exit;        }    }}

    好了,就這樣。

    本來是安排一周的時間將微信這個系列教程寫完的,結果因為各種原因只完成了十篇。所以呢,就先寫到這吧,等下次有抽出時間再繼續吧...

    后會有期~~

    來源:http://blog.csdn.net/star530/article/details/26139129PHP編程

    鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

  • 發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    主站蜘蛛池模板: 夏邑县| 伊春市| 浦城县| 东台市| 罗江县| 象州县| 永城市| 兰西县| 海丰县| 榆树市| 溧水县| 新蔡县| 泌阳县| 商城县| 阿尔山市| 静安区| 高阳县| 平罗县| 虞城县| 定结县| 方山县| 洪雅县| 景宁| 宁化县| 田东县| 武山县| 潢川县| 临洮县| 合作市| 兴安县| 宾阳县| 义马市| 通化市| 大关县| 东阳市| 英山县| 梧州市| 丹江口市| 长寿区| 阿坝县| 岢岚县|