智能回复机器人,常用于客服、微信自动回复。。。本次我们主要讲解PHP CURL的用法 ——@Author 云天河Blog

本次CURL的使用

是围绕软件工程8大步骤来的

1问题定义 2可行性研究 3需求分析 4总体设计 5详细设计 6编码和单元测试 7综合测试 8软件维护

一、问题定义

我们想获取别人网页上的东西,比如图灵官网上的机器人,现在应该怎么弄呢?


二、可行性研究

因为都是网页上的东西,服务器获取数据的方式总是万变不离其中,当你发送消息的时候,查看HTTP请求就知道其中发生了什么,然后你也就可以进行相应的爬取操作,然后这个小机器人你也自己也可以调用了。


三、需求分析

需要一个官网样例上的机器人的调用接口。



四、总体设计。

通过观察HTTP响应头,了解表单与服务器数据交互的流程,然后仿照类似的方法,去调用服务器数据。


五、详细设计

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

进入与机器人对话的页面

Step 2:开启 开发者工具,观察Network的变化


Step 3:提交表单后,会新出来了一个POST包,我们这时查看这个包的具体内容


Step 4:分析这个数据包的Header


Step 5:现在我们也模拟传包到这个服务器响应地址。

很明显,没有按照它规定的user_id的值,多半会出问题,

比如这里的userid,经我分析,缺少它,机器人会不知道你上一句话说的是什么,就不能达到连续对话的效果了

所以我们主要差的是userid这个值,我们要怎么去获取呢?当然是查看该页面哪个地方存了这个值就好了

现在我们查看http://www.tuling123.com/experience/exp_virtual_robot.jhtml?nav=exp的网页源码

通过浏览器输入userid,尝试是否能查找到类似这个表单的userid格式,如果有类似的存在,多半是找到了,如下面的图


Step 6:现在我们要做的是,把这个userid获取下来,并存入$_SESSION['chart_id']变量就可以了。

我们只用匹配到这句话,然后对这句话 用正则表达式取出来userid就好了

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

Step 7接下来我们只需要获取服务器返回的数据就好了

六、编码和单元测试

<?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 通过此网址 可获取与用户 一对一的临时对话 UID* @param String $to_api     图灵机器人的实现接口,它会返回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;/***析构函数* @param  String $say 用户输入数据* @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);    //执行curl,并把结果返回给一个字符串curl_close($ch);    //关闭curl连接//通过正则表达式提取出与机器人对话的userid$reg="/setItem\(\"\_userid\", \'([^\']+)/i";preg_match($reg,$content,$match);$content=null;//用完了抓取页面的临时变量,就立马释放掉。$_SESSION['chat_id']=$match[1];$match=null;}}/***POST方式获取数据过程,并将XML解析为对象后,获取机器人发给用户的消息* @param boolean $https https协议相关, 默认false* @param method $method curl链接方式,默认POST* @param String @data 格式化后的传入服务器的数据;* @return String 机器人发给用户的消息*/public function curl_request($https = false, $method = 'POST', $data = null){$data=$this->form_data;//请求 URL,返回该 URL 的内容 $ch = curl_init(); // 初始化curlcurl_setopt($ch, CURLOPT_URL, $this->to_api); //设置访问的 URLcurl_setopt($ch, CURLOPT_HEADER, false); //放弃 URL 的头信息curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //返回字符串,而不直接输出if($https){ //判断是否是使用 https 协议curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //不做服务器的验证curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, true);  //做服务器的证书验证}if($method == 'POST'){ //是否是 POST 请求curl_setopt($ch, CURLOPT_POST, true); //设置为 POST 请求curl_setopt($ch, CURLOPT_POSTFIELDS, $data); //设置POST的请求数据}$content = curl_exec($ch); //开始访问指定URLcurl_close($ch);//关闭 cURL 释放资源$XML_Obj=simplexml_load_string($content, 'SimpleXMLElement', LIBXML_NOCDATA);return $XML_Obj->Content;}/***格式化用户输入的数据参数* @param String $say 用户输入的聊天消息*/public function post_data($say){$say=urlencode($say);//因为要通过post传值,所以转码中文内容为,url传值格式$this->form_data="info=".$say."&userid=".$_SESSION['chat_id'];}
}/**
*对了,那个服务器返回数据的样式,见下
<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();//输出机器人的话

七、综合测试

经过测试代码,没有问题

八、软件维护

待各位小伙伴来维护。。。

PHP CURL 图灵机器人相关推荐

  1. ItChat与图灵机器人的结合

    前景: 我在知乎关注一位大佬 名字叫 LittleCoder 我是在他开发ItChat包时关注的 ItChat已经完成了微信的个人账号的API接口 已经实现了实时获取用户的即时信息并自动化进行回应 后 ...

  2. python 图灵机器人_图灵机器人 python 试玩

    看一个小伙伴分享的图灵机器人Python玩法,觉得挺好的 linux上,可以尝试更简单的方法.比如说使用curl命令 curl "http://www.tuling123.com/opena ...

  3. ros+科大迅飞语音包+图灵机器人(三)通过图灵进行语义理解

    首先我们需要下载 sduo apt install libcurl3 libcurl4-openssl-dev sudo apt install libjsoncpp0 libjsoncpp-dev ...

  4. 图灵机器人api接入c语言,apikey创建接入图灵机器人

    图灵机器人很多人都听说过,这个开放平台有很多功能,今天来介绍如何用apikey接入图灵机器人.以下是python代码 http://www.turingapi.com import requests ...

  5. 机器人编程语言python-个人微信接入图灵机器人(基于Python)

    开发环境:Ubuntu14.04 编程语言:Python2.7 1.在图灵机器人官网(http://www.tuling123.com)注册账号,创建机器人,如果只是学习的话,可以使用免费版,一个账号 ...

  6. 专属个人的聊天机器人的实现——图灵机器人

    先体验一下:图灵机器人智能聊天体验:http://www.tuling123.com/openapi/cloud/proexp.jsp 1.简单介绍 本篇为大家介绍使用图灵机器人api实现聊天机器人的 ...

  7. 微信公众号接入图灵机器人实现自动回复消息

    2019独角兽企业重金招聘Python工程师标准>>> 1.创建图灵机器人 进入图灵机器人网址:http://www.tuling123.com/ 登录/注册,进入机器人管理,然后点 ...

  8. Python 技术篇 - 微信调用图灵机器人的api接口实现自动回复实例演示。图灵机器人的注册与使用

    这是一个把接收的消息传给图灵机器人,再把图灵机器人回复的消息传回来的函数. def get_response(msg):apiUrl = 'http://www.tuling123.com/opena ...

  9. Python 微信机器人:属于自己的微信机器人制作,简单易懂。图灵机器人接口api调用

    首先你需要安装 itchat 库. 进入 cmd,先直接 pip install itchat 就好了. 我调的是图灵机器人的接口,可以了解一下: 图灵机器人的注册,图灵机器人api获取方式 微信机器 ...

最新文章

  1. Javascript中的Callback方法浅析
  2. ldap导入mysql_openLDAP 部署(亲测可用)
  3. java.lang.OutOfMemoryError:GC overhead limit exceeded
  4. 艰难的选择_处理艰难对话的6种方法:分享如何衡量成功
  5. Consul在.Net Core中初体验
  6. linux 如何查看fb中分辨率_Ubuntu: Linux下查看本机显示器分辨率(xrandr)
  7. 3. 盒子模型与兼容性
  8. Nginx二级目录反向代理网站
  9. css absolute relative 定位
  10. 道德经和译文_道德经 - 道德经全文及译文 - 道德经全文 - 老子道德经
  11. CCF计算机职业资格认证系列一CCF软件能力认证
  12. Dynamics 365 窗体中设置可编辑的子网格
  13. linux ntpdate同步错误,差一个小时的问题
  14. MySQL学习教程(超全)
  15. 【英语竞赛】专项练习之听力
  16. TypeScript Property ‘XXX‘ does not exist on type ‘never‘.
  17. centos7 同步网络时间
  18. 2021年中式烹调师(高级)考试内容及中式烹调师(高级)复审模拟考试
  19. 论文阅读笔记——[MPN]: Multi-task Learning with Coarse Priors for Robust Part-aware Person Re-identification
  20. Python一维列矩阵转换成行矩阵

热门文章

  1. new,delete和malloc,free以及allocatorT
  2. SharePoint 2010/SharePoint 2013 Custom Action: 基于Site Collection 滚动文字的通知.
  3. ROS Learning-032 (提高篇-010 Launch)Launch 深入研究 --- (启动文件编程)ROS 的 XML语法简介...
  4. Gitlab服务器搭建
  5. 【cs229-Lecture19】微分动态规划
  6. Checked ==true ? Y:N ;
  7. input[type=file] 异步上传文件
  8. 如何让PhpStorm同时打开多个项目?(多项目并存的问题)
  9. 介绍4种HTML5 Canvas库
  10. 五 Django 1.5.4 User Authentication 用户认证