程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP微信公眾平台開發 聊天機器人開發

PHP微信公眾平台開發 聊天機器人開發

編輯:關於PHP編程

【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.

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,故只能通過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]";
        }
    }
復制代碼

六、測試

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved