一、簡介
上一篇文章介紹了微信公衆平台翻譯功能的開發,實作了中、英、日語言互譯,在實際生活中也能使用到。在接下來的這一篇文章中,我們将完成一個比較有趣的功能,那就是聊天機器人,可以在你無聊的時候陪你聊天逗你開心。
二、思路分析
在這個實驗中,我們将調取小黃雞官方(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.
id:回複的消息id(隻有result=100 時才會有此項)
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,故隻能通過網頁抓取,代碼如下:
//小九機器人
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]";
}
}
六、測試
七、完整代碼擷取
請通路 樂思樂享 官方論壇
URL:http://pan.baidu.com/s/1c0s3Jby
八、關注
請關注 卓錦蘇州 微信公衆帳号,卓錦蘇州 基于BAE 平台開發,針對于主流的微信功能進行開發測試。
您可以關注 卓錦蘇州 公衆帳号進行功能測試,以及擷取新的應用開發。
1. 登入微信用戶端,通訊錄 -> 添加朋友 -> 查找公衆号 -> zhuojinsz,查找并關注。
2. 掃描二維碼:
卓錦蘇州 菜單功能:
David Camp
我們永遠相信,分享是一種美德 | We Believe, Great People Share Knowledge...