我们一直在思考未来的工作方式将走向何处,最后在 ChatOps 上找到了属于这个时代的答案。有关于 ChatOps,《ChatOps的前世,今生和未来》,是我在平台上看到较为详尽的一篇介绍,这里无须再次赘述。而其解放了日复一日繁琐工作内容的同时,也带来了个性化工作方式,佐之与出乎意料的惊喜。
试着描绘一下你所能想象到的未来景象,那里或许会有霓虹与 LED 闪烁的赛博朋克
或许有穿梭游于楼宇之间的飞行器
或许有全智能化的家居设备
但必然出现的是各类呼出式的各类智能助手。在引爆漫威电影热度的经典系列钢铁侠中,Javis 是这位魅力型科技英雄的好伙伴。除了在生活中的调侃
Javis 更是在每件机甲研发与令人肾上腺素飙升的战斗过程中的左膀右臂。
正如预言一般的凡尔纳小说,今时今日,找到一个属于你自己的 Javis 已经不再是一个类似超级英雄一般的幻想。今天为大家介绍的就是如何创造一款 Javis 的原型机——图灵机器人。
效果图 效果图接下来就让我们在最短的时间内让「Javis」诞生在倍洽之上:
Javis首先你需要在倍洽上创建一个沟通团队,它是 Javis-1号-图灵的孵化平台。
然后需要在 Turing Robot 上注册账号,拿到调用图灵机器人的 key:
接下来我们要在 BearyChat 上设置 Outgoing 机器人,在其中设置触发词为你想要的机器人名字。真的要「Javis-1号-图灵」嘛?这个名字可不比丹妮莉丝·坦格利安的前缀简洁多少,所以我给这个机器人起了个代号——「牛萌萌」,听起来相比于 Javis 的胞妹 Friday 还要更接地气些。总之,「@ 触发词 」就可以随时调用机器人进行对话了。
考虑到倍洽的新手村村民,你只需要按照下图,点击团队域名旁的按钮在下拉菜单中找到「机器人管理」,点击进入机器人管理面板。
点击右上角的添加机器人
在弹出的面板中选择「自定义机器人」即可找到 Outgoing
接下来需要创建一个 bearychat.php 的文件:
<?php
/**
* @abstract 用于转换bearychat机器人和图灵机器人之间的转换
* @author aishan
* @date 2015-10-26
* Bearychat:https://bearychat.com/
* 图灵机器人:http://www.tuling123.com
* 由于bearychat的outgoing机器人是post指定类型数据到某处,而图灵机器人接收信息是get方式,并且图灵机器人返回的数据形式之于Bearychat机器人
* 需要接收的返回数据类型也是有一定的出入,所以需要此文件做个中转
*/
require_once 'curl.php';//引入curl类
$content = file_get_contents("php://input");//读取bearychat机器人post过来的数据
$content_arr=json_decode($content);//json转对象
$info=urlencode(substr($content_arr->text,11));//获取传过来的内容中的text字段并截取实际内容部分,去掉触发bearychat机器人的前缀
$key='2d6************************d52';// 图灵机器人网站获取的key
$request_url="http://www.tuling123.com/openapi/api?key=".$key."&info=".$info;//拼接图灵机器人所需请求url
$curl=new CURL();
$request=$curl->vget($request_url);//发送请求
$request=json_decode($request,1);//将请求转换成数组,由于图灵机器人的菜谱、列车等查询会涉及到返回list形式数据,而bearychat机器人默认不能处理,故将图灵机器人返回的list数据转化拼接到text中
if(isset($request['list'])){//如果有list形式数据,则进行转换处理
$list=$request['list'];
$text=$request['text'].PHP_EOL;//取到text数据,开始拼接
for($i=1;$i<=3;$i++){//在list中的数据可能会有很多,为了bearychat机器人返回数据不至于过多,将最多只取前三条数据
if(!isset($list[$i])){
break;
}
$val=$list[$i];
$list_key=array_keys($val);
foreach($list_key as $key_val){
if(!in_array($key_val,array('icon'))){//由于icon图标在bearychat上无法显示,所以此处直接抛弃
$text.=$val[$key_val].PHP_EOL;
}
}
}
$request['text']=$text;//将拼接好的text数据赋值
unset($request['list']);//丢弃list数据
}
if(isset($request['url'])){//此处是当询问图灵机器人“xxx的照片”,会返回url形式数据,也拼接到text之后
$text=$request['text'].PHP_EOL.$request['url'];
$request['text']=$text;
unset($request['url']);
}
$request['text']=str_replace('<br>',PHP_EOL,$request['text']);//最后图灵机器人返回的text数据会以<br>作为换行,而<br>在bearychat中不被转义,所以此处要将<br>标签替换
echo json_encode($request);
在其中引入的 curl.php 文件:
<?php
class CURL
{
function vget($url){ // 模拟获取内容函数
$curl = curl_init(); // 启动一个CURL会话
curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0); // 从证书中检查SSL加密算法是否存在
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转
curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
curl_setopt($curl, CURLOPT_HTTPGET, 1); // 发送一个常规的Post请求
curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环
curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
$tmpInfo = curl_exec($curl); // 执行操作
if (curl_errno($curl)) {
echo 'Error'.curl_error($curl);
}
curl_close($curl); // 关闭CURL会话
return $tmpInfo; // 返回数据
}
}
最后,有关于图灵机器人的相关设置只需要在图灵机器人网站做设置就好,这样你的「Javis」就已经孵化成功了。
我知道,我知道,不同去猜,你不出意外地也将你的机器人也命名为了 Javis,OK,那么接下来只需要说出那句经典「密语」:
本文参考 S & J 的博客
网友评论