本文讲的是在Unity中如何接入图灵机器人,后面我会再写一篇博客,在Unity中实现和智能机器人的对话功能。
百度搜索图灵机器人,注册或者登陆一个,设置自己的机器人。然后点击帮助中心–>接入文档–>API接入文档。
阅读文档中的内容,perception和userInfo是必须的,其他的可以删除掉,删除后如下,可以在BeJson中实时校验:
{
"perception": {
"inputText": {
"text": "附近的酒店"
},
"inputImage": {
"url": "imageUrl"
}
},
"userInfo": {
"apiKey": "",
"userId": ""
}
}
然后在Unity中引入LitJson,新建一个脚本。新建的脚本如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using LitJson;
using System.Text;
public class TuLingTest : MonoBehaviour {
public string url = "http://openapi.tuling123.com/openapi/api/v2";
public string apiKey = "d2cf7b59357645d4a333517a197a8a9c";
private void Start()
{
HttpPostFunc("你叫什么名字?");
}
public void HttpPostFunc(string message)
{
StartCoroutine(HttpPost(message));
}
IEnumerator HttpPost(string message)
{
//JsonData可以表示JsonObject{},也可以表示JsonArry[]
JsonData request = new JsonData();
//perception
request["perception"] = new JsonData();
request["perception"]["inputText"] = new JsonData();
request["perception"]["inputText"]["text"] = message;
//userInfo
request["userInfo"] = new JsonData();
request["userInfo"]["apiKey"] = apiKey;
request["userInfo"]["userId"] = "1512267557";
//JsonMapper.ToJson(request)
//将Json对象转为Json字符串,直接ToString容易出错
//将Json字符串转为字节数组
//进行一个网络推送
WWW post = new WWW(url,Encoding.UTF8.GetBytes(JsonMapper.ToJson(request)));
yield return post;
Debug.Log(post.text);
}
}
运行Unity,debug出来得到的是一个标准的Json字符串
{
"emotion": {
"robotEmotion": {
"a": 0,
"d": 0,
"emotionId": 0,
"p": 0
},
"userEmotion": {
"a": 0,
"d": 0,
"emotionId": 0,
"p": 0
}
},
"intent": {
"actionName": "",
"code": 10004,
"intentName": ""
},
"results": [{
"groupType": 1,
"resultType": "text",
"values": {
"text": "在下木小星,请多多指教。"
}
}]
}
这里我们的表情和事件就不用了,留下results这个jsonArry数组,后面两个我复制的两个多余的是为了看得清楚一点,这个results数组的结构,然后把这后面两个多余的删除就行了:
{
"results": [{
"groupType": 1,
"resultType": "text",
"values": {
"text": "在下木小星,请多多指教。"
}
}, {
"groupType": 1,
"resultType": "text",
"values": {
"text": "在下木小星,请多多指教。"
}
}, {
"groupType": 1,
"resultType": "text",
"values": {
"text": "在下木小星,请多多指教。"
}
}]
}
如上Json字符串,我们需要的是它这个results数组里面的第0个元素的values里面的text这个字符串,然后进行下一步:
在之前的代码后面加上下面这三行代码就可以得到这个text了,如下:
更多内容请在我的博客中查看。