PHP開發微信小黃雞機器人?

小黃雞機器人是微信公眾帳號中一個比較經典的功能,對於學習微信開發的童鞋來學,先從小黃雞入手。可以練練手。以下,微市場就給大家介紹一下小黃雞機器人的開發過程。

首先,我們先來了解一下微信訊息互動流程:

這裡有兩個地方我們需要注意的:

URL:你上傳程式碼的伺服器

token:可以隨便填,將會生成你個人簽名,如“wei43”

我們先將下面的程式碼儲存為index.php上傳到伺服器進行驗證

define("TOKEN", "wei43"); //TOKEN值

$wechatObj = new wechat();

$wechatObj->valid();

class wechat {

public function valid() {

$echoStr = $_GET["echostr"];

if($this->checkSignature()){

echo $echoStr;

exit;

}

}

private function checkSignature() {

$signature = $_GET["signature"];

$timestamp = $_GET["timestamp"];

$nonce = $_GET["nonce"];

$token = TOKEN;

$tmpArr = array($token, $timestamp, $nonce);

sort($tmpArr);

$tmpStr = implode( $tmpArr );

$tmpStr = sha1( $tmpStr );

if( $tmpStr == $signature ) {

return true;

} else {

return false;

}

}

}

?>

上面的程式碼是我們改寫的微信公眾平臺校驗URL是否正確接入的程式碼。

上面提到了,微信公眾平臺與開發者之間的資料互動是通過XML完成的,既然用到XML,當然得遵循規範,所以在著手開發之前先看看官方介面文件提供的XML規範,以文字訊息為例: 當用戶向微信公眾賬號傳送訊息時,微信伺服器會POST給開發者一些資料:

toUser

fromUser

12345678

content

1234567890123456

開發者在處理完訊息後需要返回資料給微信伺服器:

toUser

fromUser

12345678

content

0

除文字訊息外,微信公眾平臺還支援使用者傳送圖片訊息、地理位置訊息、連結訊息、事件推送,而開發者還可以向微信公眾平臺回覆音樂訊息和圖文訊息,各類訊息XML規範也可以參見官方文件。

下面的程式碼是精簡了微信公眾平臺官方程式碼的

$wechatObj = new wechat();

$wechatObj->responseMsg();

class wechat {

public function responseMsg() {

//---------- 接 收 數 據 ---------- //

$postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; //獲取POST資料

//用SimpleXML解析POST過來的XML資料

$postObj = simplexml_load_string($postStr,'SimpleXMLElement',LIBXML_NOCDATA);

$fromUsername = $postObj->FromUserName; //獲取傳送方帳號(OpenID)

$toUsername = $postObj->ToUserName; //獲取接收方賬號

$keyword = trim($postObj->Content); //獲取訊息內容

$time = time(); //獲取當前時間戳

//---------- 返 回 數 據 ---------- //

//返回訊息模板

$textTpl = "

%s

%s

%s

%s

%s

0

";

$msgType = "text"; //訊息型別

$contentStr = 'wei43net; //返回訊息內容

//格式化訊息模板

$resultStr = sprintf($textTpl,$fromUsername,$toUsername,

$time,$msgType,$contentStr);

echo $resultStr; //輸出結果

}

}

?>

將上面的程式碼儲存為index.php並上傳到你的伺服器覆蓋掉剛才上傳的index.php。

現在使用者通過微信公眾平臺傳送任何訊息公眾賬號均會返回“wei43net”這個訊息了!

下面我們再來分享一個用CURL開發的一個微信小黃雞的簡易程式碼。大家可以練習一下!

function SimSimi($keyword) {

//----------- 獲取COOKIE ----------//

$url = "simsimi/";

$ch = curl_init($url);

curl_setopt($ch, CURLOPT_HEADER,1);

curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);

$content = curl_exec($ch);

list($header, $body) = explode("

", $content);

preg_match("/set-cookie:([^
]*);/iU", $header, $matches);

$cookie = $matches[1];

curl_close($ch);

//----------- 抓 取 回 復 ----------//

$url = "wei43net";

$ch = curl_init($url);

curl_setopt($ch, CURLOPT_REFERER, "http://www.simsimi.com/talk.htm?lc=ch");

curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);

curl_setopt($ch, CURLOPT_COOKIE, $cookie);

$content = json_decode(curl_exec($ch),1);

curl_close($ch);

if($content['result']=='100') {

$content['response'];

return $content['response'];

} else {

return '我還不會回答這個問題...';

}

}

?>

好了,將這兩個程式碼整合了,我們就能實現一個簡易的機器人聊天程式了

微信, 機器人, 訊息, 小黃,
相關問題答案