《微信公众平台开发最佳实践》——第3章 基 础 接 口 3.1 接收用户消息
本節(jié)書摘來(lái)自華章出版社《微信公眾平臺(tái)開(kāi)發(fā)最佳實(shí)踐》一 書中的第3章,第3.1節(jié),作者:方倍工作室,更多章節(jié)內(nèi)容可以訪問(wèn)云棲社區(qū)“華章計(jì)算機(jī)”公眾號(hào)查看。
第3章 基 礎(chǔ) 接 口
基礎(chǔ)接口是微信公眾賬號(hào)在申請(qǐng)后就默認(rèn)擁有而不需要通過(guò)微信認(rèn)證獲得的接口。微信公眾平臺(tái)開(kāi)發(fā)者中心啟用之后,需要使用基礎(chǔ)接口實(shí)現(xiàn)基本消息的接收與發(fā)送。基礎(chǔ)接口包括三個(gè)主要的部分:接收用戶消息,發(fā)送被動(dòng)響應(yīng)消息,接收事件推送消息。本章將介紹這三個(gè)部分是如何實(shí)現(xiàn)的。
3.1 接收用戶消息
微信公眾賬號(hào)能夠接收用戶發(fā)送的六種格式的消息:文本(包括表情)、圖片、語(yǔ)音、視頻、地理位置、鏈接。下面將分別介紹這六種消息。
3.1.1 文本消息
用戶向微信公眾賬號(hào)發(fā)送文本消息的示例如圖3-1所示。
用戶發(fā)送文本消息時(shí),微信公眾賬號(hào)接收到的XML數(shù)據(jù)格式如下所示:
0C_Nozz2fn1z6VYtHOsF59PTFl0vagGxkVH]]>
`
用戶發(fā)送圖片消息的參數(shù)及描述如表3-2所示。
3.1.3 語(yǔ)音消息
用戶向微信公眾賬號(hào)發(fā)送語(yǔ)音消息的示例如圖3-3所示。
用戶發(fā)送語(yǔ)音消息時(shí),微信公眾賬號(hào)接收到的XML數(shù)據(jù)格式如下所示:
<xml><ToUserName><![CDATA[gh_680bdefc8c5d]]></ToUserName><FromUserName><![CDATA[oIDrpjqASyTPnxRmpS9O_ ruZGsfk]]></FromUserName><CreateTime>1359028025</CreateTime><MsgType><![CDATA[voice]]></MsgType><MediaId><![CDATA[hGm9wmKth8RO_tuv5k9fJkSbovXWzZ VYwG2jSsL7ukCqq6q1SiLzYnFEngFNUijs]]></MediaId><Format><![CDATA[amr]]></Format><MsgId>5836980921722890003</MsgId><Recognition><![CDATA[]]></Recognition> </xml>``` 用戶發(fā)送語(yǔ)音消息的參數(shù)及描述如表3-3所示。<div style="text-align: center"><img src="https://yqfile.alicdn.com/bc9b8b4915eb20983b5184732d830ba369a269e7.png" width="" height=""> </div>####3.1.4 視頻消息 用戶向微信公眾賬號(hào)發(fā)送視頻消息的示例如圖3-4所示。 <div style="text-align: center"><img src="https://yqfile.alicdn.com/e59d3fb62c47745e4e4104628c3e64f1767775a5.png" width="" height=""> </div>用戶發(fā)送視頻消息時(shí),微信公眾賬號(hào)接收到的XML數(shù)據(jù)格式如下所示: <ToUserName><![CDATA[gh_680bdefc8c5d]]></ToUserName> <FromUserName><![CDATA[oIDrpjqASyTPnxRmpS9O_ruZGsfk]]>
<CreateTime>1359028186</CreateTime> <MsgType><![CDATA[video]]></MsgType> <MediaId><![CDATA[DBVFRIj29LB2hxuYpc0R6VLyxwgyCHZPbRj_IIs6YaGhutyXUKtFSDcSCPeoqUYr]]>
<ThumbMediaId><![CDATA[mxUJ5gcCeesJwx2T9qsk62YzIclCP_HnRdfTQcojlPeT2G9Q3d22UkSLyBFLZ01J]]>
<MsgId>5836981613212624665</MsgId> 用戶發(fā)送視頻消息的參數(shù)及描述如表3-4所示。 <div style="text-align: center"><img src="https://yqfile.alicdn.com/49a817be659a338d6a671b1c1608f5d4b27596be.png" width="" height=""> </div>####3.1.5 地理位置消息 用戶向微信公眾賬號(hào)發(fā)送地理位置消息的示例如圖3-5所示。 <div style="text-align: center"><img src="https://yqfile.alicdn.com/beaa7aae2fb63c1d09f95861fc0aa580d9afb711.png" width="" height=""> </div>用戶發(fā)送地理位置消息時(shí),微信公眾賬號(hào)接收到的XML數(shù)據(jù)格式如下所示: <ToUserName><![CDATA[gh_680bdefc8c5d]]></ToUserName> <FromUserName><![CDATA[oIDrpjqASyTPnxRmpS9O_ruZGsfk]]>
<CreateTime>1359036619</CreateTime> <MsgType><![CDATA[location]]></MsgType> <Location_X>22.539968</Location_X> <Location_Y>113.954980</Location_Y> <Scale>16</Scale> <Label><![CDATA[中國(guó)廣東省深圳市南山區(qū)深南大道9001號(hào)郵政編碼: 518053]]>
<MsgId>5837017832671832047</MsgId>`
用戶發(fā)送地理位置消息的參數(shù)及描述如表3-5所示。
3.1.6 鏈接消息
用戶向微信公眾賬號(hào)發(fā)送鏈接消息的示例如圖3-6所示。
用戶發(fā)送鏈接消息時(shí),微信公眾賬號(hào)接收到的XML數(shù)據(jù)格式如下所示:
<xml><ToUserName><![CDATA[gh_680bdefc8c5d]]></ToUserName> <FromUserName><![CDATA[oIDrpjl2LYdfTAM-oxDgB4XZ cnc8]]></FromUserName> <CreateTime>1359709372</CreateTime> <MsgType><![CDATA[link]]></MsgType> <Title><![CDATA[微信公眾平臺(tái)開(kāi)發(fā)者的江湖]]></Title> <Description><![CDATA[陳坤的微信公眾號(hào)這段時(shí)間大火,大家...]]></Description> <Url><![CDATA[http://www.cnblogs.com/txw1958/]]></Url> <MsgId>5839907284805129867</MsgId> </xml> ```用戶發(fā)送的鏈接消息的參數(shù)及描述如表3-6所示。 <div style="text-align: center"><img src="https://yqfile.alicdn.com/2dfbbe59908e3344d57a154ea05955c30eafb0a2.png" width="" height=""> </div>####3.1.7 案例 前面的章節(jié)已經(jīng)介紹了各種基礎(chǔ)消息,本節(jié)將用代碼實(shí)現(xiàn)上面的各種消息類型并且做出相應(yīng)的回復(fù)處理。代碼如下所示:.<?php
//
// 接收用戶消息
// 微信公眾賬號(hào)接收到用戶的消息類型判斷
//
define("TOKEN", "weixin");
$wechatObj = new wechatCallbackapiTest();
if (!isset($_GET['echostr'])) {
}else{
$wechatObj->valid();}
class wechatCallbackapiTest
{
Description.";鏈接地址為:".$object->Url;
$result = $this->transmitText($object, $content);return $result; }/** 回復(fù)文本消息*/ private function transmitText($object, $content) {$textTpl = "<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[%s]]></Content></xml>";$result = sprintf($textTpl, $object->FromUserName, $object-> ToUserName, time(), $content);return $result; }}
?>`
在responseMsg()方法中,先提取消息類型$postObj->MsgType,從而實(shí)現(xiàn)各種消息類型的分離。在類wechatCallbackapiTest中,為每種消息類型定義了接收方法函數(shù)。在每個(gè)方法里面,返回消息的主要特征值,組成文本消息作為內(nèi)容回復(fù)。
總結(jié)
以上是生活随笔為你收集整理的《微信公众平台开发最佳实践》——第3章 基 础 接 口 3.1 接收用户消息的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 《C++编程惯用法——高级程序员常用方法
- 下一篇: 《JavaScript启示录》——导读