回顾一下:
第一篇:使用@livechat/ui-kit UI 和 react 开发一个聊天机器人的界面,用timeout模拟echo效果,无后端。
第二篇:laravel后端处理消息,返回echo的json串给前端。
本篇,对laravel中的echo功能进行修改,用图灵机器人的api替换echo。这样,用户就可以与机器人沟通交流了。
一、注册和建立一个图灵机器人
去 www.tuling123.com 注册一个账号,建立一个机器人就可以了。

如图所示,是apikey的地方,后续需要用到。
密钥后面的开关不要打开,否则api调用会出现错误。
二、安装和使用guzzle
guzzle是一个http的客户端,可以发送get、post、put、delete等请求。
1、输入命令安装guzzle:
composer require guzzlehttp/guzzle:^7.0
2、在 app/Http/Controllers/Chatbot.php 中增加:
use GuzzleHttp\Client;
3、修改 app/Http/Controllers/Chatbot.php 中的echo函数:
更改前:
public function echo(Request $request){
$data = $request->json()->all();
$text = $data['text'];
$echoText = "{$text} too";
return response()->json($echoText);
}
更改后:
public function echo(Request $request){
$data = $request->json()->all();
$text = $data['text'];
// $echoText = "{$text} too";
$url = 'http://openapi.tuling123.com/openapi/api/v2';
$jsonData = array(
'reqType' => 0,
'perception' => array(
'inputText' => array(
'text'=>$text
)
),
'userInfo'=>array(
'apiKey'=>'2a85851a4eea7a2fe1288b4e0ab0fcba',
'userId'=>'chatbot'
)
);
$client = new \GuzzleHttp\Client();
$res = $client->post($url, [ 'json' => $jsonData ]);
$json = json_decode($res->getBody()->getContents());
$msg = $json->{'results'}[0]->{'values'}->{'text'};
return response()->json($msg);
}
其中,apiKey填写你账号下建立的图灵机器人的apiKey。
三、最终效果
这个时候,试一下:

竟然次数超过限制了。
可见,还需要做个“异常拦截”。这里暂时不做拦截了。再创建一个机器人,用新的key。
现在,智能聊天机器人就做好了。

其实没什么技术含量,毕竟UI是别人的,API也是别人的。但是,把这些整合到一起,就成了自己的。
思考:
1、为什么不直接在react里调用图灵机器人的api? 2、API网关的原理及作用 3、饱和式API,当一个API不提供服务时,切换到另一个API,以降低对用户造成的影响。