ChatOps,喚醒你的原型體 Javis

我們一直在思考未來的工作方式將走向何處,最后在 ChatOps 上找到了屬于這個時代的答案。有關(guān)于 ChatOps,《ChatOps的前世,今生和未來》,是我在平臺上看到較為詳盡的一篇介紹,這里無須再次贅述。而其解放了日復(fù)一日繁瑣工作內(nèi)容的同時,也帶來了個性化工作方式,佐之與出乎意料的驚喜。

試著描繪一下你所能想象到的未來景象,那里或許會有霓虹與 LED 閃爍的賽博朋克

或許有穿梭游于樓宇之間的飛行器

或許有全智能化的家居設(shè)備

但必然出現(xiàn)的是各類呼出式的各類智能助手。在引爆漫威電影熱度的經(jīng)典系列鋼鐵俠中,Javis 是這位魅力型科技英雄的好伙伴。除了在生活中的調(diào)侃

Javis 更是在每件機(jī)甲研發(fā)與令人腎上腺素飆升的戰(zhàn)斗過程中的左膀右臂。

正如預(yù)言一般的凡爾納小說,今時今日,找到一個屬于你自己的 Javis 已經(jīng)不再是一個類似超級英雄一般的幻想。今天為大家介紹的就是如何創(chuàng)造一款 Javis 的原型機(jī)——圖靈機(jī)器人。

效果圖
效果圖

接下來就讓我們在最短的時間內(nèi)讓「Javis」誕生在倍洽之上:

Javis

首先你需要在倍洽上創(chuàng)建一個溝通團(tuán)隊,它是 Javis-1號-圖靈的孵化平臺。

然后需要在 Turing Robot 上注冊賬號,拿到調(diào)用圖靈機(jī)器人的 key:

接下來我們要在 BearyChat 上設(shè)置 Outgoing 機(jī)器人,在其中設(shè)置觸發(fā)詞為你想要的機(jī)器人名字。真的要「Javis-1號-圖靈」嘛?這個名字可不比丹妮莉絲·坦格利安的前綴簡潔多少,所以我給這個機(jī)器人起了個代號——「牛萌萌」,聽起來相比于 Javis 的胞妹 Friday 還要更接地氣些??傊?,「@ 觸發(fā)詞 」就可以隨時調(diào)用機(jī)器人進(jìn)行對話了。

考慮到倍洽的新手村村民,你只需要按照下圖,點(diǎn)擊團(tuán)隊域名旁的按鈕在下拉菜單中找到「機(jī)器人管理」,點(diǎn)擊進(jìn)入機(jī)器人管理面板。

點(diǎn)擊右上角的添加機(jī)器人

在彈出的面板中選擇「自定義機(jī)器人」即可找到 Outgoing

接下來需要創(chuàng)建一個 bearychat.php 的文件:

<?php
/**
 * @abstract 用于轉(zhuǎn)換bearychat機(jī)器人和圖靈機(jī)器人之間的轉(zhuǎn)換
 * @author aishan
 * @date 2015-10-26
 * Bearychat:https://bearychat.com/
 * 圖靈機(jī)器人:http://www.tuling123.com
 * 由于bearychat的outgoing機(jī)器人是post指定類型數(shù)據(jù)到某處,而圖靈機(jī)器人接收信息是get方式,并且圖靈機(jī)器人返回的數(shù)據(jù)形式之于Bearychat機(jī)器人
 * 需要接收的返回數(shù)據(jù)類型也是有一定的出入,所以需要此文件做個中轉(zhuǎn)
 */
require_once 'curl.php';//引入curl類
$content = file_get_contents("php://input");//讀取bearychat機(jī)器人post過來的數(shù)據(jù)
$content_arr=json_decode($content);//json轉(zhuǎn)對象
$info=urlencode(substr($content_arr->text,11));//獲取傳過來的內(nèi)容中的text字段并截取實(shí)際內(nèi)容部分,去掉觸發(fā)bearychat機(jī)器人的前綴
$key='2d6************************d52';// 圖靈機(jī)器人網(wǎng)站獲取的key
$request_url="http://www.tuling123.com/openapi/api?key=".$key."&info=".$info;//拼接圖靈機(jī)器人所需請求url
$curl=new CURL();
$request=$curl->vget($request_url);//發(fā)送請求
$request=json_decode($request,1);//將請求轉(zhuǎn)換成數(shù)組,由于圖靈機(jī)器人的菜譜、列車等查詢會涉及到返回list形式數(shù)據(jù),而bearychat機(jī)器人默認(rèn)不能處理,故將圖靈機(jī)器人返回的list數(shù)據(jù)轉(zhuǎn)化拼接到text中
if(isset($request['list'])){//如果有l(wèi)ist形式數(shù)據(jù),則進(jìn)行轉(zhuǎn)換處理
    $list=$request['list'];
    $text=$request['text'].PHP_EOL;//取到text數(shù)據(jù),開始拼接
    for($i=1;$i<=3;$i++){//在list中的數(shù)據(jù)可能會有很多,為了bearychat機(jī)器人返回數(shù)據(jù)不至于過多,將最多只取前三條數(shù)據(jù)
        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圖標(biāo)在bearychat上無法顯示,所以此處直接拋棄
                $text.=$val[$key_val].PHP_EOL;
            }
        }
    }

    $request['text']=$text;//將拼接好的text數(shù)據(jù)賦值
    unset($request['list']);//丟棄list數(shù)據(jù)
}

if(isset($request['url'])){//此處是當(dāng)詢問圖靈機(jī)器人“xxx的照片”,會返回url形式數(shù)據(jù),也拼接到text之后
    $text=$request['text'].PHP_EOL.$request['url'];
    $request['text']=$text;
    unset($request['url']);
}
$request['text']=str_replace('<br>',PHP_EOL,$request['text']);//最后圖靈機(jī)器人返回的text數(shù)據(jù)會以<br>作為換行,而<br>在bearychat中不被轉(zhuǎn)義,所以此處要將<br>標(biāo)簽替換
echo json_encode($request);

在其中引入的 curl.php 文件:

<?php

class CURL
{
    function vget($url){ // 模擬獲取內(nèi)容函數(shù)
        $curl = curl_init(); // 啟動一個CURL會話
        curl_setopt($curl, CURLOPT_URL, $url); // 要訪問的地址
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 對認(rèn)證證書來源的檢查
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0); // 從證書中檢查SSL加密算法是否存在
        curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自動跳轉(zhuǎn)
        curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自動設(shè)置Referer
        curl_setopt($curl, CURLOPT_HTTPGET, 1); // 發(fā)送一個常規(guī)的Post請求
        curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 設(shè)置超時限制防止死循環(huán)
        curl_setopt($curl, CURLOPT_HEADER, 0); // 顯示返回的Header區(qū)域內(nèi)容
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 獲取的信息以文件流的形式返回
        $tmpInfo = curl_exec($curl); // 執(zhí)行操作
        if (curl_errno($curl)) {
            echo 'Error'.curl_error($curl);
        }
        curl_close($curl); // 關(guān)閉CURL會話
        return $tmpInfo; // 返回數(shù)據(jù)
    }
}

最后,有關(guān)于圖靈機(jī)器人的相關(guān)設(shè)置只需要在圖靈機(jī)器人網(wǎng)站做設(shè)置就好,這樣你的「Javis」就已經(jīng)孵化成功了。

我知道,我知道,不同去猜,你不出意外地也將你的機(jī)器人也命名為了 Javis,OK,那么接下來只需要說出那句經(jīng)典「密語」:

本文參考 S & J 的博客

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 本文為約稿文,謝絕約稿者之外的一切轉(zhuǎn)載,違者必追究法律責(zé)任。 首發(fā)于《外灘畫報》旗下微信公眾號“文工團(tuán)”。 開場白...
    LostAbaddon閱讀 17,343評論 26 35
  • 芠芐whisky閱讀 315評論 6 8
  • 在我老家的房子左邊有一雜草叢生的小山坡。山坡不高,僅有兩三百米,坡上除了雜草和樹木就是一條只可供一人行走的狹窄小路...
    ld熊壯壯閱讀 428評論 0 0
  • 六年級 王思睿 上課的時候,我...
    橘子老師閱讀 483評論 1 1
  • 已經(jīng)是凌晨的兩點(diǎn)我還是醒著的,這樣的生活作息已經(jīng)連續(xù)一個多月了,估計很多人都跟我一樣,放假就是這樣的節(jié)奏才對啊...
    董咚吧啦閱讀 260評論 0 0

友情鏈接更多精彩內(nèi)容