Java对接图灵机器人

Java对接图灵机器人
在对应的方法传入与机器人的对话即可得到机器人回应
需要在图灵的官网注册图灵进行认证,非认证用户一天只能调用一次
已对官网文档进行封装,调用方法即可得到回应,傻瓜式操作

<!--导入图灵机器人的maven依赖-->
 <dependency>
            <groupId>net.sf.json-lib</groupId>
            <artifactId>json-lib</artifactId>
            <version>2.4</version>
            <classifier>jdk15</classifier>
        </dependency>
package com.jowim.util.robot;

import net.sf.json.JSONObject;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.util.List;

/**
 * 图灵机器人实现类,传入对话内容,返回对话结果。调用getReqMes()方法
 * @author  Wu
 * @time 2019/10/7 14:57
 */
public class TuLingApiUtil {
    //存储APIkey
    public static final String API_KEY = "自己认证的key值";
    //存储接口请求地址
    public static final String API_URL = "http://openapi.tuling123.com/openapi/api/v2";
    /**
     * 获取可以传输的正确的json格式的请求字符串
     *
     * @param reqMes 输入内容
     * @return
     */
    public static String getReqMes(String reqMes) {
        // 请求json,里面包含reqType,perception,userInfo
        JSONObject reqJson = new JSONObject();
        // 输入类型:0-文本(默认)、1-图片、2-音频
        int reqType = 0;
        reqJson.put("reqType", reqType);
        // 输入信息,里面包含inputText,inputImage,selfInfo
        JSONObject perception = new JSONObject();
        // 输入的文本信息
        JSONObject inputText = new JSONObject();
        inputText.put("text", reqMes);
        perception.put("inputText", inputText);
        // 用户信息
        JSONObject userInfo = new JSONObject();
        userInfo.put("apiKey", "自己实际的key值");
        userInfo.put("userId", "311630");
        reqJson.put("perception", perception);
        reqJson.put("userInfo", userInfo);
        String respStr = tulinPost(API_URL, reqJson.toString());
        String talk = getResultMes(respStr);
        return talk;
    }
    private static String tulinPost(String url, String reqMes) {
        String status = "";
        String responseStr = "";
        PrintWriter out = null;
        BufferedReader in = null;
        try {
            URL realUrl = new URL(url);
            // 打开和URL之间的连接
            URLConnection conn = realUrl.openConnection();
            HttpURLConnection httpUrlConnection = (HttpURLConnection) conn;
            // 设置请求属性
            httpUrlConnection.setRequestProperty("Content-Type", "application/json;charset=UTF-8");
            httpUrlConnection.setRequestProperty("x-adviewrtb-version", "2.1");
            // 发送POST请求必须设置如下两行
            httpUrlConnection.setDoOutput(true);
            httpUrlConnection.setDoInput(true);
            // 获取URLConnection对象对应的输出流
            out = new PrintWriter(httpUrlConnection.getOutputStream());
            // 发送请求参数
            out.write(reqMes);
            // flush输出流的缓冲
            out.flush();
            httpUrlConnection.connect();
            // 定义BufferedReader输入流来读取URL的响应
            in = new BufferedReader(new InputStreamReader(httpUrlConnection.getInputStream() ,"UTF-8"));
            String line;
            while ((line = in.readLine()) != null) {
                responseStr += line;
            }
            status = new Integer(httpUrlConnection.getResponseCode()).toString();
        } catch (Exception e) {
            System.out.println("发送 POST 请求出现异常!" + e);
        }
        // 使用finally块来关闭输出流、输入流
        finally {
            try {
                if (out != null) {
                    out.close();
                }
                if (in != null) {
                    in.close();
                }
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
        return responseStr;
    }

    private static String getResultMes(String tulinPostStr) {
        JSONObject thesultStr = JSONObject.fromObject(tulinPostStr);
        List<Object> results = (List<Object>) thesultStr.get("results");
        JSONObject resultObj = JSONObject.fromObject(results.get(0));
        JSONObject values = JSONObject.fromObject(resultObj.get("values"));
        return values.get("text").toString();
    }

    public static void main(String[] args) {
//        //声明并实例化我们刚刚封装好的工具类
        String talk = getReqMes("今天厦门天气怎么样");
        //直接输出机器人的回复
        System.err.println("Ta 对你说 -> " + talk);
    }
}

调用该工具类的getReqMes()方法即可得到机器人的回应

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值