1. 程式人生 > >【轉載】使用圖靈機器人介面開發微信公眾號聊天功能、設定自定義選單及申請測試賬號

【轉載】使用圖靈機器人介面開發微信公眾號聊天功能、設定自定義選單及申請測試賬號

<?php header("Content-type: text/html; charset=utf-8"); //以下為固定用法,實現和微信的對接、驗證 define("TOKEN", "callTuling"); $wechatObj = new wechatCallbackapiTest(); if (isset($_GET['echostr'])) { $wechatObj-&gt;valid(); }else{ $wechatObj
-&gt;responseMsg(); } class wechatCallbackapiTest { public function valid() { $echoStr = $_GET["echostr"]; if($this-&gt;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; } } public function responseMsg() { $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; if (!empty($postStr)){ $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); $RX_TYPE = trim($postObj-&gt;MsgType); switch ($RX_TYPE) { case "text": $resultStr = $this-&gt;receiveText($postObj); break; case "event": $resultStr = $this-&gt;receiveEvent($postObj); break; } echo $resultStr; }else { echo ""; exit; } } //處理接受到使用者訊息的事件 private function receiveText($object) { $funcFlag = 0; $keyword = trim($object-&gt;Content); $contentStr = callTuling($keyword); $resultStr = $this-&gt;transmitText($object, $contentStr, $funcFlag); return $resultStr; } //處理公眾號被關注的事件 private function receiveEvent($object) { $contentStr = ""; switch ($object-&gt;Event) { case "subscribe": $contentStr = "你終於來了"; } $resultStr = $this-&gt;transmitText($object, $contentStr); return $resultStr; } //把圖靈機器人返回的資料轉換成微信使用的資料格式 private function transmitText($object, $content, $flag = 0) { $textTpl = "&lt;xml&gt; &lt;ToUserName&gt;&lt;![CDATA[%s]]&gt;&lt;/ToUserName&gt; &lt;FromUserName&gt;&lt;![CDATA[%s]]&gt;&lt;/FromUserName&gt; &lt;CreateTime&gt;%s&lt;/CreateTime&gt; &lt;MsgType&gt;&lt;![CDATA[text]]&gt;&lt;/MsgType&gt; &lt;Content&gt;&lt;![CDATA[%s]]&gt;&lt;/Content&gt; &lt;FuncFlag&gt;%d&lt;/FuncFlag&gt; &lt;/xml&gt;"; $resultStr = sprintf($textTpl, $object-&gt;FromUserName, $object-&gt;ToUserName, time(), $content, $flag); return $resultStr; } } //建立函式呼叫圖靈機器人介面 function callTuling($keyword) { $apiKey = "******"; //填寫後臺提供的key $apiURL = "http://www.tuling123.com/openapi/api?key=KEY&amp;info=INFO"; $reqInfo = $keyword; $url = str_replace("INFO", $reqInfo, str_replace("KEY", $apiKey, $apiURL)); $ch = curl_init(); curl_setopt ($ch, CURLOPT_URL, $url); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); $file_contents = curl_exec($ch); curl_close($ch); //獲取圖靈機器人返回的資料,並根據code值的不同獲取到不用的資料 $message = json_decode($file_contents,true); $result = ""; if ($message['code'] == 100000){ $result = $message['text']; }else if ($message['code'] == 200000){ $text = $message['text']; $url = $message['url']; $result = $text . " " . $url; }else if ($message['code'] == 302000){ $text = $message['text']; $url = $message['list'][0]['detailurl']; $result = $text . " " . $url; }else { $result = "好好說話我們還是基佬"; } return $result; } ?>