图灵SDK的简单实用

图灵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);
            }
        });
    }
}

到此Over了,O(∩_∩)O~~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章