日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

PHP CURL 图灵机器人

發(fā)布時間:2025/7/14 php 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHP CURL 图灵机器人 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
智能回復機器人,常用于客服、微信自動回復。。。本次我們主要講解PHP CURL的用法 ——@Author 云天河Blog

本次CURL的使用

是圍繞軟件工程8大步驟來的

1問題定義 2可行性研究 3需求分析 4總體設(shè)計 5詳細設(shè)計 6編碼和單元測試 7綜合測試?8軟件維護


一、問題定義

我們想獲取別人網(wǎng)頁上的東西,比如圖靈官網(wǎng)上的機器人,現(xiàn)在應該怎么弄呢?


二、可行性研究

因為都是網(wǎng)頁上的東西,服務器獲取數(shù)據(jù)的方式總是萬變不離其中,當你發(fā)送消息的時候,查看HTTP請求就知道其中發(fā)生了什么,然后你也就可以進行相應的爬取操作,然后這個小機器人你也自己也可以調(diào)用了。


三、需求分析

需要一個官網(wǎng)樣例上的機器人的調(diào)用接口。



四、總體設(shè)計。

通過觀察HTTP響應頭,了解表單與服務器數(shù)據(jù)交互的流程,然后仿照類似的方法,去調(diào)用服務器數(shù)據(jù)。


五、詳細設(shè)計

Step 1進入http://www.tuling123.com/experience/exp_virtual_robot.jhtml?nav=exp

進入與機器人對話的頁面



Step 2開啟 開發(fā)者工具,觀察Network的變化



Step 3提交表單后,會新出來了一個POST包,我們這時查看這個包的具體內(nèi)容



Step 4:分析這個數(shù)據(jù)包的Header



Step 5現(xiàn)在我們也模擬傳包到這個服務器響應地址。

很明顯,沒有按照它規(guī)定的user_id的值,多半會出問題,

比如這里的userid,經(jīng)我分析,缺少它,機器人會不知道你上一句話說的是什么,就不能達到連續(xù)對話的效果了

所以我們主要差的是userid這個值,我們要怎么去獲取呢?當然是查看該頁面哪個地方存了這個值就好了

現(xiàn)在我們查看http://www.tuling123.com/experience/exp_virtual_robot.jhtml?nav=exp的網(wǎng)頁源碼

通過瀏覽器輸入userid,嘗試是否能查找到類似這個表單的userid格式,如果有類似的存在,多半是找到了,如下面的圖



Step 6現(xiàn)在我們要做的是,把這個userid獲取下來,并存入$_SESSION['chart_id']變量就可以了。

我們只用匹配到這句話,然后對這句話 用正則表達式取出來userid就好了

window.localStorage.setItem("_userid", '57a2413c-1f19-4e74-95a5-0b79d041e81d');

Step 7接下來我們只需要獲取服務器返回的數(shù)據(jù)就好了


六、編碼和單元測試

<?php session_start(); /* * @Name 圖靈機器人 * @Function 圖靈機器人API * @Author 云天河Blog * @Link http://www.hlzblog.top/ * @date 2016-9-26 19:35:44 */ class TuLing_Robot{/*** @param String $get_unique_uid 通過此網(wǎng)址 可獲取與用戶 一對一的臨時對話 UID* @param String $to_api 圖靈機器人的實現(xiàn)接口,它會返回XML* @param String $form_data 格式化用戶消息后的 傳給圖靈服務器的信息*/private $get_unique_uid="http://www.tuling123.com/experience/exp_virtual_robot.jhtml?nav=exp";private $to_api="http://www.tuling123.com/api/product_exper/chat.jhtml";private $form_data;/***析構(gòu)函數(shù)* @param String $say 用戶輸入數(shù)據(jù)* @return void*/public function __construct($say="云天河Blog,你知道嗎?"){$this->get_char_id();$this->post_data($say);}/**獲取機器人與用戶的對話的userid,通過正則表達式即可獲取* @param $_SESSION['chat_id'] 機器人與用戶對話所用的唯一的臨時ID* @return void*/public function get_char_id(){//如果用戶還沒有臨時對話變量,則注冊一個 $_SESSION['char_id']if( !isset($_SESSION['chat_id']) ){$ch = curl_init(); //開啟curl連接curl_setopt($ch, CURLOPT_URL, $this->get_unique_uid); //寫入urlcurl_setopt($ch, CURLOPT_HEADER, 0); //是否有寫入頭信息需要寫入=>falsecurl_setopt($ch, CURLOPT_RETURNTRANSFER,true);//返回字符串,而不直接輸出$content = curl_exec($ch); //執(zhí)行curl,并把結(jié)果返回給一個字符串curl_close($ch); //關(guān)閉curl連接//通過正則表達式提取出與機器人對話的userid$reg="/setItem\(\"\_userid\", \'([^\']+)/i";preg_match($reg,$content,$match);$content=null;//用完了抓取頁面的臨時變量,就立馬釋放掉。$_SESSION['chat_id']=$match[1];$match=null;}}/***POST方式獲取數(shù)據(jù)過程,并將XML解析為對象后,獲取機器人發(fā)給用戶的消息* @param boolean $https https協(xié)議相關(guān), 默認false* @param method $method curl鏈接方式,默認POST* @param String @data 格式化后的傳入服務器的數(shù)據(jù);* @return String 機器人發(fā)給用戶的消息*/public function curl_request($https = false, $method = 'POST', $data = null){$data=$this->form_data;//請求 URL,返回該 URL 的內(nèi)容 $ch = curl_init(); // 初始化curlcurl_setopt($ch, CURLOPT_URL, $this->to_api); //設(shè)置訪問的 URLcurl_setopt($ch, CURLOPT_HEADER, false); //放棄 URL 的頭信息curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //返回字符串,而不直接輸出if($https){ //判斷是否是使用 https 協(xié)議curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //不做服務器的驗證curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, true); //做服務器的證書驗證}if($method == 'POST'){ //是否是 POST 請求curl_setopt($ch, CURLOPT_POST, true); //設(shè)置為 POST 請求curl_setopt($ch, CURLOPT_POSTFIELDS, $data); //設(shè)置POST的請求數(shù)據(jù)}$content = curl_exec($ch); //開始訪問指定URLcurl_close($ch);//關(guān)閉 cURL 釋放資源$XML_Obj=simplexml_load_string($content, 'SimpleXMLElement', LIBXML_NOCDATA);return $XML_Obj->Content;}/***格式化用戶輸入的數(shù)據(jù)參數(shù)* @param String $say 用戶輸入的聊天消息*/public function post_data($say){$say=urlencode($say);//因為要通過post傳值,所以轉(zhuǎn)碼中文內(nèi)容為,url傳值格式$this->form_data="info=".$say."&userid=".$_SESSION['chat_id'];} }/** *對了,那個服務器返回數(shù)據(jù)的樣式,見下 <xml> <ToUserName><![CDATA[27d7f9f2-106c-47e0-be2d-be44abaf9118]]></ToUserName> <FromUserName><![CDATA[toUser]]></FromUserName> <CreateTime>1474882713061</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[賭大10]]></Content> <FuncFlag>0</FuncFlag> </xml> */@$info=$_GET['content'];//通過GET方式傳入聊天信息 $ac_info=new TuLing_Robot($info); echo $ac_info->curl_request();//輸出機器人的話

七、綜合測試


經(jīng)過測試代碼,沒有問題



八、軟件維護

待各位小伙伴來維護。。。

總結(jié)

以上是生活随笔為你收集整理的PHP CURL 图灵机器人的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。