Unity 图灵 之 在Unity中实现图灵 聊天机器人 简单聊天的功能
目录
Unity 图灵 之 在Unity中实现图灵聊天机器人简单聊天的功能
一、简单介绍
Unity 工具类,自己整理的一些游戏开发可能用到的模块,单独独立使用,方便游戏开发。
本节介绍,在Unity中通过调用图灵的聊天api,实现简单的聊天功能。
二、图灵官网关于在线聊天机器人的接入介绍
网址:https://www.kancloud.cn/turing/www-tuling123-com/718227
API V2.0是基于图灵机器人平台语义理解、深度学习等核心技术,为广大开发者和企业提供的在线服务和开发接口。
目前API接口可调用聊天对话、语料库、技能三大模块的语料:
聊天对话是指平台免费提供的近10亿条公有对话语料,满足用户对话娱乐需求;
语料库是指用户在平台上传的私有语料,仅供个人查看使用,帮助用户最便捷的搭建专业领域次的语料。
技能服务是指平台打包的26种实用服务技能。涵盖生活、出行、购物等多个领域,一站式满足用户需求。
UTF-8(调用图灵API的各个环节的编码方式均为UTF-8)
http://openapi.tuling123.com/openapi/api/v2
HTTP POST
请求参数格式为 json
三、注意事项
1、调用图灵机器人API报错加密方式错误
结果报错 :加密方式错误。
不是代码的问题啦,是因为你打开了秘钥开关
解决方法:关上再运行代码就好了,或者参看文档添加该功能(这里不做介绍)
2、请求次数超过限制,想多几次,可以开通认证
3、记得添加 litjson.dll 插件到工程中
四、效果预览
五、实现步骤
0、到 图灵官网创建一个自己的聊天机器人,得到 apikey
创建机器人网址(前提有登陆图灵账号):http://www.tuling123.com/member/robot/index.jhtml
1、打开Unity,新建一个工程
2、在工程中添加一个脚本,来介绍输入的信息,然后传给图灵进行聊天结果返回
3、在场景中,添加两个输入框和一个Text
4、把脚本添加到场景中,并对应赋值
5、运行场景,效果如上
六、关键代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using LitJson;
using System.Text;
using UnityEngine.UI;
public class TuLingTest : MonoBehaviour
{
private string url = "http://openapi.tuling123.com/openapi/api/v2";
private string apiKey = "你的 apiKey ";
public InputField InputText;
public InputField id;
public Text text;
private void Update()
{
if (Input.GetKeyDown(KeyCode.A)) //按A发送消息,(鼠标要移出输入框)
{
HttpPostFunc(InputText.text);
}
}
public void HttpPostFunc(string message)
{
StartCoroutine(HttpPost(message));
}
IEnumerator HttpPost(string message)
{
//JsonData可以表示JsonObject{},也可以表示JsonArry[]//4e03ee9c4e8cc2af//"1512267543"
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"] = id.text;
//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);
JsonData response = JsonMapper.ToObject(post.text);
string result = response["results"][0]["values"]["text"].ToString();
Debug.Log(result);
text.text += "我:" + message + "\n" + "机器人:" + result + "\n";
}
}