android第三方---->android智能机器人的使用

  在网上找了个第三方智能机器人,可以实现聊天语音等功能,比较不错的。今天我们就开始智能机器人聊天的学习,例子中涉及的handler的有关知识和json数据的解析,请参见我的博客:android基础---->JSON数据的解析android高级---->Handler的原理android基础---->子线程更新UI

目录导航

  1. 获取图灵机器人key
  2. 图灵机器人的一些api介绍
  3. 在android程序中使用图灵机器人
  4. 友情链接

获取图灵机器人key

<1>访问图灵机器人官方网站: www.tuling123.com

<2>点击右上角注册按钮

<3>填写注册信息,并完成激活操作

<4>进入个人中心板块,在”机器人接入”页面即可获得图灵APIKEY,获取之后您可以根据自己的需要来接入到微信公众号、QQ等各个平台中使用

图灵机器人的一些api介绍

API简介

  图灵机器人API是在人工智能的核心能力(包括语义理解、智能问答、场景交互、知识管理等)的基础上,为广大开发者、合作伙伴和企业提供的一系列基于云计算和大数据平台的在线服务和开发接口。

  开发者可以利用图灵机器人的API创建各种在线服务,灵活定义机器人的属性、编辑机器人的智能问答内容,打造个人专属智能交互机器人,也支持多渠道(微信公众平台、QQ聊天)的快速接入。

接口地址

  http://www.tuling123.com/openapi/api

请求方式

  HTTP POST/GET

  注:若采用get方式请求,需将参数中的空格须用“%20”替换(URL转码),否则会被服务器当作无效请求拒绝。我们更推荐使用post方式请求。

请求参数

  请求URL示例:http://www.tuling123.com/openapi/api?key=APIKEY&info=今天天气怎么样。详细文档请参见官网:http://tuling123.com/html/doc/api.html

在android程序中使用图灵机器人

我们创建一个android项目,来体验一下图灵机器人的用法,项目结构如下:

使用步骤:

  • 发送http请求,url为:http://www.tuling123.com/openapi/api?info="你要发送的信息"
  • 得到响应结果,是一个Json格式的信息
  • 用Json解析结果,得到有用的信息

一、 在layout中简单的布局,增加一个TextView用于显示返回的Json数据,EditView用于用户输入发送的信息,Button是发送按钮:

<?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.example.linux.robottest.MainActivity">

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World, huhx." />

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <EditText
            android:id="@+id/editView"
            android:minWidth="200dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

        <Button
            android:layout_marginLeft="20dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="sendMessage"
            android:text="发送" />
    </LinearLayout>
</LinearLayout>

二、  在MainActivity中处理整个发送接收的流程:

oncreate()方法中初始化一些数据:

private final static String TAG = "huhxRobot";
private TextView textView;
private EditText editText;
private final String apiUrl = "http://www.tuling123.com/openapi/api";
private final String apiKey = "你的apikey";
String urlStr = apiUrl + "?key=" + apiKey;
final static int ROBOT_MESSAGE = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    textView = (TextView) findViewById(R.id.textView);
    editText = (EditText) findViewById(R.id.editView);
}

用post请求向机器人发送信息:

// 向机器人发送信息
public void sendMessage(View view) {
    String sendmessage = editText.getText().toString();
    final String params = "info=" + sendmessage;
    new Thread(new Runnable() {
        @Override
        public void run() {
            HttpURLConnection connection = null;
            OutputStream outputStream = null;
            BufferedReader reader = null;
            StringBuilder result = new StringBuilder();
            String line = "";
            try {
                URL url = new URL(urlStr);
                connection = (HttpURLConnection) url.openConnection();
                connection.setRequestMethod("POST");
                connection.setReadTimeout(5000);
                connection.setConnectTimeout(5000);

                outputStream = connection.getOutputStream();
                outputStream.write(params.getBytes());

                reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
                while ((line = reader.readLine()) != null) {
                    result.append(line);
                }

                Message message = new Message();
                message.obj = result.toString();
                message.what = ROBOT_MESSAGE;
                handler.sendMessage(message);
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                if (reader != null) {
                    try {
                        reader.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                if (outputStream != null) {
                    try {
                        outputStream.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                connection.disconnect();
            }
        }
    }).start();
}

handler处理信息:若对handler不了解的,请参见我的博客,在友情链接中会提到。

private Handler handler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        switch (msg.what) {
            case ROBOT_MESSAGE:
                String Jsonmessage = (String) msg.obj;
                Log.i(TAG, Jsonmessage);
                String text = "";
                try {
                    JSONObject jsonObject = new JSONObject(Jsonmessage);
                    text = (String) jsonObject.get("text");
                } catch (JSONException e) {
                    e.printStackTrace();
                }
                textView.setText(Jsonmessage);
                Log.i(TAG, text);
                Toast.makeText(MainActivity.this, text, Toast.LENGTH_SHORT).show();
        }
    }
};

三、 在Manifest中声明网络权限:

<uses-permission android:name="android.permission.INTERNET"/>

四、 输出结果如下:

输入:hello
结果: {"code":100000,"text":"你也好 嘻嘻"}

五、 异常码的说明:

code 说明
100000 文本类
200000 链接类
302000 新闻类
308000 菜谱类
313000(儿童版) 儿歌类
314000(儿童版) 诗词类
40001 参数key错误
40002 请求内容info为空
40004 当天请求次数已使用完
40007 数据格式异常

六、 自定义回复功能:

在个人中心-->左侧NLP知识库-->新增:

测试一下:

输入:huhx
结果:huhx的:http://www.cnblogs.com/huhx

友情链接

时间: 2024-10-27 17:42:07

android第三方---->android智能机器人的使用的相关文章

Android第三方服务(1):语音识别(1)

App开发中为了让软件功能更加强大,经常会引用许多的第三方框架或服务,其中可能会碰到这样一种场景,让用户语音输入,App接受用户的输入信息,做出相应的相应,这就是所谓的语音识别,当然这也是最基础最简单的语音识别,还有什么语音听写.在线语音合成.开发语义.人脸识别.声纹识别.语音唤醒等等. 关于Android的语音识别,首先是大多模拟器没法模拟,需要用真机来测试. Android原生系统自带有语音识别模块,不过由于后台是访问Google云服务器数据,基于中国的国情,是没法真正的使用的.因此寻找一种

Android第三方登录详解2

接着Android第三方登录详解1讲 1.找到友盟  文档中心 2.找到 3.将 UMSocialService mController = UMServiceFactory.getUMSocialService("com.umeng.login");       这句话放到对应activity 弄成全局即可 4QQ 登录 //参数1为当前Activity, 参数2为开发者在QQ互联申请的APP ID,参数3为开发者在QQ互联申请的APP kEY. UMQQSsoHandler qqS

Android 第三方类库简单使用之EventBus

Android 第三方类库之EventBus 1 PS 工欲善其事必先利其器. Eventbus也是一款在开发中常用的利器 这篇也对EventBus的简单介绍和使用,与之前个xutils介绍的级别一样.http://www.cnblogs.com/greentomlee/p/6025470.html 作者:修雨轩陈 @博客园 2 简介 开源项目地址: https://github.com/greenrobot/EventBus EventBus是一款针对Android优化的发布/订阅事件总线.主

Android第三方授权(新浪微博篇)

Android第三方认证新浪微博,相对微信,也比较简单,并且sina给了一个sdk和sdkdemo,这个demo封装了许多,但是自己不准备记录这个demo,而是直接使用sdk 同样去sina官方下载sdk,自己去搜吧,地址不给了 1.初始化SsoHandler 1 AuthInfo mWeiboAuthInfo = new AuthInfo(this, Constants.APP_KEY, Constants.REDIRECT_URL, Constants.SCOPE); 2 SsoHandle

Android 第三方开源库收集整理(转)

原文地址:http://blog.csdn.net/caoyouxing/article/details/42418591 Android开源库 自己一直很喜欢Android开发,就如博客签名一样, 我是程序猿,我为自己代言 . 在摸索过程中,GitHub上搜集了很多很棒的Android第三方库,推荐给在苦苦寻找的开发者,而且我会 不定期的更新 这篇文章. Android下的优秀开发库数不胜数,在本文中,我列举的多是开发流程中最常用的一些.如果你还想了解更多的Android开源库,可以关注我的博

Android第三方登录详解1

android第三方登录是一种很流行的方式下面我来讲讲怎么做 1.打开百度搜   友盟 2.进入官网 注册 登录进入主页面 3.点击添加新应用 进入 4.提交  会生成一个K值 5.点击最上面的文档中心 进入 6.点击社会下分享  机器人 7.点击sdk下载 8.找到Android社会化组件sdk (看个人情况选择版本)点击下载 9.勾选要的第三方登录下载会下载一个压缩包 解压 10.点击最后一个jar包 11.现在对应android项目 填写对应K值点击快速集成  完了刷新android项目

Android 第三方应用接入微信平台(1)

关键字:微信开放平台   Android第三方应用接入微信 微信平台开放后倒是挺火的,许多第三方应用都想试下接入微信这个平台, 毕竟可以利用微信建立起来的关系链来拓展自己的应用还是挺不错的,可 以节约很多在社交方面的开销,我最近由于实习需要也在研究这个东西, 不过发现网上的相关资料还是挺少的,这里把我的整个研究情况给出来,希 望可以共同学习. 一.微信SDK中会用到主要类的类图 上面这张类图中显示的是与微信通信过程中的请求类和响应类,第三方应用通过他们 附带的message字段来携带消息传输给微

Android 第三方应用接入微信平台(2)

微信平台开放后倒是挺火的,许多第三方应用都想试下,毕竟可以利用微信 建立起来的关系链来拓展自己的应用还是挺不错的,可以节约很多在社交方 面的开销,我最近由于实习需要也在研究这个东西,不过发现网上的相关资 料还是挺少的,这里把我的整个研究情况给出来,希望可以共同学习. 第三方应用接入微信平台(1) 二.第三方应用与微信通信的时序图 2.接收微信的请求信息 前面四步和之前的“1.向微信发送消息”是一样的,不需要重复执行,这里给出来只是为了 流程的整体性.当我们注册后,应用图标会出现在微信聊天的列表中

Android 第三方分享中遇到的问题以及解决方案

本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 第三方登录和分享过程中难免遇到各种纠结的问题,下面将我遇到的分享给大家. 先说第三方登录 1.首先要搞清楚后台同事要你传的是code还是token,因为先传code,token值后台同事也可以获得.正常的步骤是先获得code,再拿code去取得token. 2.新浪和QQ的第三方登录,网上例子大把,但要做奇虎和支付宝的比较困难,还好网上找到一个例子,加部分注释分享给大家:http://downlo