图灵SDK的简单实用
介绍
我们先看看官网的介绍:官网链接
特点
- 智能度高:对话和语义准确度受到用户及行业认可
- 场景丰富:能够应用在网站、软件及智能硬件各个领域里
- 技能全面:图灵机器人提供了涵盖几乎所有生活领域的技能服务
- 知识库强大:基于语义技术且支持批量上传的知识库功能
- 响应快速:毫秒级响应速度,轻松应对巨量请求
- 接入方便:只需简单的注册激活便可让自己的产品化身为智能机器人
使用场景
- 虚拟机器人
- 智能客服
- 智能手表
- 智能家居
- 智能车载
比如:虚拟机器人 HTC的语音助手(小Hi)
使用
说了那么多,接下来我们也实现一个虚拟机器人(聊天机器人):我们输入一句话,会自动回复我们。
官方文档
步骤
- 第一步:进入官网->注册登录->按照提示完成认证
- 第二步:选择个人中心->我的机器人->创建机器人
- 第三步:选择自定义
- 第四步:填写信息
- 第五步:下载demo和文档
实现步骤
下面开始实现(简单点),Demo就一个输入框,一个按钮,一个文本
- 新建工程
布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.rair.demo.MainActivity">
<EditText
android:hint="请输入"
android:id="@+id/et_request"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:text="请求"
android:id="@+id/btn_request"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/tv_result"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
导入下载的jar包只需要三个,倒入Gson包(不然会报错,找不到Gson类)
初始化SDK,最好放在Application中初始化
演示实在Activity中初始化
/**
* 初始化图灵
*/
private void initTL() {
SDKInitBuilder sdkInitBuilder = new SDKInitBuilder(this)
.setTuringKey(TURING_KEY)
.setUniqueId(UNIQUE_ID)
.setSecret(SECRET);
SDKInit.init(sdkInitBuilder, new InitListener() {
/**
* 初始化成功后再实例化TuringApiManager,否则很多功能不能使用
*/
@Override
public void onComplete() {
apiManager = new TuringApiManager(getApplicationContext());
Toast.makeText(getApplicationContext(), "初始化成功", Toast.LENGTH_SHORT).show();
}
@Override
public void onFail(String s) {
Toast.makeText(getApplicationContext(), "发生意外", Toast.LENGTH_SHORT).show();
}
});
}
添加权限
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
- 请求数据
按钮点击事件(获取输入文本并请求)
@Override
public void onClick(View v) {
final String request = etRequest.getText().toString();
if (TextUtils.isEmpty(request)) {
Toast.makeText(this, "你没有输入内容", Toast.LENGTH_SHORT).show();
return;
}
if (apiManager != null) {
apiManager.requestTuringAPI(request);
}
apiManager.setHttpListener(new HttpConnectionListener() {
@Override
public void onError(ErrorMessage errorMessage) {
}
@Override
public void onSuccess(RequestResult requestResult) {
//成功回调
Result result = new Gson().fromJson(requestResult.getContent().toString(), Result.class);
String text = result.getText();
tvResult.setText(text);
}
});
}
Gson解析需要一个JavaBean对象
public class Result {
private int code;
private String text;
private String url;
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
}
code 状态码
text 文本
url url链接
- 完成,我们来运行一下
一个简单的聊天机器人就好了。
一个小程序
我们可以自由发挥添加很多功能
菜谱查询:
点击立即查看:
点击条目后:
还有例如航班查询:
天气查询:
也可以动动小脑经,利用图灵的智慧,结合android的辅助服务,自己研究一个QQ聊天机器人
总结:本应该总结一下,不过我想不到了O(∩_∩)O哈哈~,还是把上面Demo代码贴上
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private EditText etRequest;
private Button btnRequest;
private TextView tvResult;
//appkey
private static final String TURING_KEY = "自己申请";
//随便写一个
private static final String UNIQUE_ID = "645207307";
//秘钥
private static final String SECRET = "xxxxxxxxxxxxx保密";
private static final String TAG = "Rair";
private TuringApiManager apiManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
etRequest = (EditText) findViewById(R.id.et_request);
btnRequest = (Button) findViewById(R.id.btn_request);
tvResult = (TextView) findViewById(R.id.tv_result);
btnRequest.setOnClickListener(this);
initTL();
}
/**
* 初始化图灵
*/
private void initTL() {
SDKInitBuilder sdkInitBuilder = new SDKInitBuilder(this)
.setTuringKey(TURING_KEY)
.setUniqueId(UNIQUE_ID)
.setSecret(SECRET);
SDKInit.init(sdkInitBuilder, new InitListener() {
/**
* 初始化成功后再实例化TuringApiManager,否则很多功能不能使用
*/
@Override
public void onComplete() {
apiManager = new TuringApiManager(getApplicationContext());
Toast.makeText(getApplicationContext(), "初始化成功", Toast.LENGTH_SHORT).show();
}
@Override
public void onFail(String s) {
Toast.makeText(getApplicationContext(), "发生意外", Toast.LENGTH_SHORT).show();
}
});
}
@Override
public void onClick(View v) {
final String request = etRequest.getText().toString();
if (TextUtils.isEmpty(request)) {
Toast.makeText(this, "你没有输入内容", Toast.LENGTH_SHORT).show();
return;
}
if (apiManager != null) {
apiManager.requestTuringAPI(request);
}
apiManager.setHttpListener(new HttpConnectionListener() {
@Override
public void onError(ErrorMessage errorMessage) {
}
@Override
public void onSuccess(RequestResult requestResult) {
//成功回调
Result result = new Gson().fromJson(requestResult.getContent().toString(), Result.class);
String text = result.getText();
tvResult.setText(text);
}
});
}
}