【PHP微信公眾平臺開發系列】
01.配置微信介面
02.公眾平臺示例程式碼分析
03.訂閱事件(subscribe)處理
04.簡單回覆功能開發
05.天氣預報功能開發
06.翻譯功能開發
07.聊天機器人功能開發
本文地址:http://www.phpchina.com/archives/view-43393-1.html
本系列由PHPChina特邀作者@David_Tang供稿,轉載請註明作者資訊與本文地址。
一、簡介
上一篇文章介紹了微信公眾平臺翻譯功能的開發,實現了中、英、日語言互譯,在實際生活中也能使用到。在接下來的這一篇文章中,我們將完成一個比較有趣的功能,那就是聊天機器人,可以在你無聊的時候陪你聊天逗你開心。
二、思路分析
在這個實驗中,我們將調取小黃雞官方(http://www.simsimi.com/)提供的API,結合抓取小九機器人(http://www.xiaojo.com/)的網頁,互相補充。Simsimi 是收費的,但你可以嘗試7天測試,每天可以免費使用100條回覆;小九機器人可以無限制使用,但前提是官方不遮蔽。
三、小黃雞API 分析
3.1 API & URL
官方API 地址:http://developer.simsimi.com/api
Request URL:http://sandbox.api.simsimi.com/request.p
這裡使用免費版測試,付費版的類似,只是URL地址不同。
3.2 請求示例與引數說明
請求示例:
http://sandbox.api.simsimi.com/request.p?key=your_trial_key&lc=en&ft=1.0&text=hi
引數說明:
key: 申請的API Key
lc: Language code,支援的語言,簡體中文用ch,繁體中文用zh,英文用en,詳細請參考:http://developer.simsimi.com/lclist
ft: 是否設定過濾器,
0.0:未過濾(包含詛咒,性內容);
1.0:過濾不文明字句(暫時只支援韓文)
text: 請求的文字
3.3 返回值分析
result:執行結果返回碼
- [*]
- 100-OK.
- 400-Bad Request.
- 401-Unauthorized.
- 404-Not found.
- 500-Server Error.
response:回覆的訊息(只有result=100 時才會有此項)
msg:執行結果返回碼對應的狀態
四、獲取小黃雞API Key
4.1 註冊simsimi 賬號
URL: http://developer.simsimi.com/signUp
4.2 啟用賬號
4.3 獲取API Key
五、具體實現
5.1 呼叫小黃雞API 實現
呼叫simsim($keyword) 函式處理,將其中的“Your API Key” 換成申請到的API Key。
//小黃雞 public function simsim($keyword){ $key="41250a68-3cb5-43c8-9aa2-d7b3caf519b1"; $url_simsimi="http://sandbox.api.simsimi.com/request.p?key=".$key."&lc=ch&ft=0.0&text=".$keyword; $json=file_get_contents($url_simsimi); // 把整個檔案讀入一個字串中 $result=json_decode($json,true); // 對JSON 格式的字串進行編碼 //$errorCode=$result['result']; // 除錯用 $response=$result['response']; // 回覆的訊息 if(!empty($response)){ return $response; }else{ $ran=rand(1,5); switch($ran){ case 1: return "小雞雞今天累了,明天再陪你聊天吧。"; break; case 2: return "小雞雞睡覺嘍~~"; break; case 3: return "呼呼~~呼呼~~"; break; case 4: return "你話好多啊,不跟你聊了"; break; case 5: return "感謝您關注【卓錦蘇州】"."\n"."微訊號:zhuojinsz"."\n"."卓越錦繡,萬代不朽"; break; default: return "感謝您關注【卓錦蘇州】"."\n"."微訊號:zhuojinsz"."\n"."卓越錦繡,萬代不朽"; break; } } }
說明:
因為有時候小黃雞不回覆,所以在simsim() 函式中加入了一個判斷,如果$response 不為空,則返回$response;如果$response 為空,則加了一個小小的程式碼,讓其隨機回覆自定義的訊息,這樣就可以做到有求必應了。
5.2 呼叫小九機器人實現
小九機器人不提供API,故只能通過PHP函式實現網頁抓取,程式碼如下:
//小九機器人 public function xiaojo($keyword){ $curlPost=array("chat"=>$keyword); $ch = curl_init();//初始化curl curl_setopt($ch, CURLOPT_URL,'http://www.xiaojo.com/bot/chata.php');//抓取指定網頁 curl_setopt($ch, CURLOPT_HTTPHEADER, $header); curl_setopt($ch, CURLOPT_HEADER, 0);//設定header curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//要求結果為字串且輸出到螢幕上 curl_setopt($ch, CURLOPT_POST, 1);//post提交方式 curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost); $data = curl_exec($ch);//執行curl curl_close($ch); if(!empty($data)){ return $data; }else{ $ran=rand(1,5); switch($ran){ case 1: return "小雞雞今天累了,明天再陪你聊天吧。"; break; case 2: return "小雞雞睡覺嘍~~"; break; case 3: return "呼呼~~呼呼~~"; break; case 4: return "你話好多啊,不跟你聊了"; break; case 5: return "感謝您關注【卓錦蘇州】"."\n"."微訊號:zhuojinsz"."\n"."卓越錦繡,萬代不朽"; break; default: return "感謝您關注【卓錦蘇州】"."\n"."微訊號:zhuojinsz"."\n"."卓越錦繡,萬代不朽"; break; } } }
5.3 雙龍戲鳳
我們還可以將上面的小黃雞和小九機器人進行整合,具體程式碼如下:
//雙龍戲鳳 public function chatter($keyword){ $curlPost=array("chat"=>$keyword); $ch = curl_init(); //初始化curl curl_setopt($ch, CURLOPT_URL,'http://www.xiaojo.com/bot/chata.php'); //抓取指定網頁 curl_setopt($ch, CURLOPT_HTTPHEADER, $header); curl_setopt($ch, CURLOPT_HEADER, 0); //設定header curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //要求結果為字串且輸出到螢幕上 curl_setopt($ch, CURLOPT_POST, 1); //post提交方式 curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost); $data = curl_exec($ch); //執行curl curl_close($ch); if(!empty($data)){ return $data." [/::)小九]"; }else{ return $this->simsim($keyword)." [simsim/::D]"; } }
六、測試
評論(2)