智能聊天机器人之图灵机器人

今天从慕课网学习了图灵机器人的实现,感觉很有意思。视频地址:点击打开链接,因为视频是一年多以前的,现在图灵官网的api接口已经变了,所以视频仅作参考,本文是基于最新api讲解的。

无聊的时候可以找它陪你聊天,想想也挺有趣的,下面就看看具体的实现吧。

聊天功能的实现其实是借用了图灵机器人的第三方jar包,如果仅仅是实现聊天,几行代码就可以搞定了,所以重点其实是布局的实现。

要完成这个聊天机器人,大致需要这么几步:

1、需要到图灵机器人官网注册一个账号,这样在个人中心就可以看到你的API key和secret了,这两个信息代码里面会用到;

2、在个人中心可以设置机器人的一些信息,比如:年龄,爱好,地址等等。。。;

3、下载文档说明和SDK;

以上是准备工作,下面终于开始正式编码啦~

4、建立新的Android工程,并把下载的jar包导入工程(下载的jar包里面有android-support-v4.jar,而我使用的jdk本身包含有这个,所以不要导入这个,不然编译报错)

5、对图灵SDK进行初始化,如下:

SDKInitBuilder builder = new SDKInitBuilder(this)
                .setSecret(TURING_SECRET).setTuringKey(TURING_APIKEY).setUniqueId(UNIQUEID);
SDKInit.init(builder, new InitListener() {
	@Override
	public void onFail(String error) {
		Log.i(TAG, "onFail() called with: " + "error = [" + error + "]");
	}

	@Override
	public void onComplete() {
		// 获取userid成功后,才可以请求Turing服务器,需要请求必须在此回调成功,才可正确请求
		mTuringApiManager = new TuringApiManager(MainActivity.this);
		mTuringApiManager.setHttpListener(myHttpConnectionListener);
	}
});

HttpConnectionListener myHttpConnectionListener = new HttpConnectionListener() {
	@Override
	public void onError(ErrorMessage errorMessage) {
		Log.i(TAG, "onError() errorMessage = " + errorMessage.getMessage() + " code = " + errorMessage.getCode());
		Toast.makeText(MainActivity.this, "请检查网络是否正常", Toast.LENGTH_SHORT).show();
	}

	@Override
	public void onSuccess(RequestResult requestResult) {
		if (requestResult != null) {
			Log.i(TAG, "onSuccess: " + requestResult.getContent().toString());
			try {
				JSONObject jsonObj = new JSONObject(requestResult.getContent().toString());
				if (jsonObj.has("text")){
					String result = jsonObj.get("text").toString(); //接收到的消息
					...
				}
			} catch (JSONException e) {
				e.printStackTrace();
			}
		}
	}
};

 

6、发送消息到服务器,接收消息的地方见上面代码,至此就完成了发送和接收消息的过程,有木有感觉很简单呢?

mTuringApiManager.requestTuringAPI(new String(sendMsg)); //发送消息

7、关键是需要注意下布局的实现,聊天展示使用的是ListView,根据消息是“接收过来的”还是“发送出去的”来动态加载不同的布局,因此需要准备两套布局,具体实现可以下载代码参考,这里就不详细展开了。

有几点需要说明下:

1、图灵机器人还提供了语音相关的接口,所以可以在此基础上完成语音聊天功能;

2、我的MainActivity是继承的AppCompatActivity,设置requestWindowFeature(Window.FEATURE_NO_TITLE);没有生效,解决办法有两个:一、继承Activity二、加上语句:getSupportActionBar().hide();

3、发送消息的布局视频中原本使用的是LinearLayout,这是有问题的,如果发送的消息太长,会挡住自己的头像,所以我改成了RelativeLayout,Linearlayout试了好几次均没有成功;

代码下载地址:点我下载吧

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值