原创| 开发动态| 一个月前| 阅读 81 次 | 0赞同 0反对
概述:板砖是6年前开始使用图灵机器人的,随着微信公众号的普及,我是这样10分钟打造自己的聊天机器人的(附代码)。
图灵机器人在早先除了文字对话以外,还有一些基于文字的自动处理功能,而且可以根据关键词返回指定问题。
在微信公众号和智能语音设备普及之后,图灵机器人真正的走向了全面商用的阶段,今天板砖就来讲解一下图灵机器人是如何做到公众号文字回复和语音回复的!
首先我们来做一个公用函数,用于和图灵的大脑链接并获得自动回答,请注意下方的uid,uid可以是数字、字符串等可以代表唯一身份确认的内容,不然就会出现鸡同鸭讲的现象。
function tulingchat($words, $uid = 10000) { $api = 'http://www.tuling123.com/openapi/api'; $appid = 'e16355116e0da27aeb6e6cc9'; $secret = '453a1daf5b7'; $array = array( 'key' => $appid, 'info' => $words, 'secret' => $secret, 'loc' => '重庆市', 'userid' => $uid ); $curl = curl_init(); curl_setopt($curl, CURLOPT_HTTPHEADER, array( "Content-Type:application/json; charset=utf-8" )); curl_setopt($curl, CURLOPT_URL, $api); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($array)); curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE); $result = curl_exec($curl); curl_close($curl); return $result; }接下来是使用easywechat SDK对接图灵机器人,注意:机器人对话最好的位置是微信文本最后无法通过关键词等返回任一内容的情况下,才调用,具体示例如下:
function robot($word, $uid) { $result = tulingchat($word, $uid); $json = json_decode($result, true); $txt = ''; if ($json['code'] == 40001 || $json['code'] == 40002 || $json['code'] == 40004 || $json['code'] == 40007) { $txt = $json['text']; } if ($json['code'] == 100000) { $txt = $json['text']; } if ($json['code'] == 200000) { $txt = $json['text'] . '-><a href="' . $json['url'] . '">点击阅读全文</a>'; } if ($json['code'] == 302000) { $txt = $json['text'] . ':\n'; foreach ($json['list'] as $item) { $txt .= '<a href="' . $item['detailurl'] . '">' . $item['article'] . '</a>\n'; } } if ($json['code'] == 308000) { $txt = $json['text'] . ':\n'; foreach ($json['list'] as $item) { $txt .= '<a href="' . $item['detailurl'] . '">' . $item['name'] . '</a>\n'; } } return new Text($txt); }图灵机器人官方同样页给出了第三方授权方式接入机器人,板砖的建议是复杂的业务环境下最好还是使用自己的SDK进行自动对话,这样可以插入自定义业务,而且不会出现多次回复的情况。
当然,公众号和其他智能硬件怎么返回语音内容的呢,其实我们可以借用百度的语音转化API,可以将多种语气的语音转换和保存到本地当中,方法可以看下方函数
function makevoice() { $client = new AipSpeech('107310', 'RHUzrY7GArqySqUW1Ey', 'jvKmOZ49T7rb6yQtO852hE'); // tex String 合成的文本,使用UTF-8编码,请注意文本长度必须小于1024字节 是 // lang String 语言选择,填写zh 是 // ctp String 客户端类型选择,web端填写1 是 // cuid String 用户唯一标识,用来区分用户,填写机器 MAC 地址或 IMEI 码,长度为60以内 否 // spd String 语速,取值0-9,默认为5中语速 否 // pit String 音调,取值0-9,默认为5中语调 否 // vol String 音量,取值0-15,默认为5中音量 否 // per String 发音人选择, 0为女声,1为男声,3为情感合成-度逍遥,4为情感合成-度丫丫,默认为普通女 否 $txt = input('get.code'); $result = $client->synthesis($txt, 'zh', 1, array( 'vol' => 10, 'per' => 4, 'spd' => 4, 'pit' => 6 )); $path = '/audio/' . time() . '.mp3'; // 识别正确返回语音二进制 错误则返回json 参照下面错误码 if (! is_array($result)) { file_put_contents('.' . $path, $result); } return redirect($path); }以上就是我怎样10分钟打造自己的聊天机器人的,如果你对这个小窍门感兴趣,赶快体验一下。
本频道需要登陆后才能评论,请登录