使用图灵机器人做简单的聊天系统

    首先要在图灵机器人官网注册(http://www.tuling123.com)一个帐号,新帐号可以免费创建一个机器人并且拥有自己的apikey,虽然功能有限制,但是简单的使用还是很赞的。

    图灵机器人提供了多种多样的外部接口,这里使用Web API v2.0接口来进行开发,相对web API v1.0支持更多的输入格式。具体的使用介绍请参照官网文档https://www.kancloud.cn/turing/web_api/522992

    最终的运行结果如下:


    具体实现代码如下,代码比较简单,不做过多解释了。

    

package com.wcf;


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;


import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;


public class Chatbot {
	


	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String url="http://openapi.tuling123.com/openapi/api/v2";
		String question="";
		String apikey="d38891d7ab524688919dce4f3a95abbd";
		String userID="001";//任意值,如果用于微信平台开发,建议使用微信粉丝的userID作为此值
		@SuppressWarnings("resource")
		Scanner scanner=new Scanner(System.in);
		while((question=scanner.nextLine()) != null)
		{
			String data="{\"perception\": {\"inputText\": {\"text\": \""+question+"\"}},\"userInfo\": {\"apiKey\": \""+apikey+"\",\"userId\": \""+userID+"\"}}";
			
			try {
				String response=sendPost(url,data);
				JSONObject jsonObject=JSON.parseObject(response);
				//这里仅仅提取出了文本答案,如果需要其他答案请自行修改代码
				System.out.println(jsonObject.getJSONArray("results").getJSONObject(0).getJSONObject("values").getString("text"));
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}


	}
	
	public static String sendPost(String url,String Params)throws IOException{
        OutputStreamWriter out = null;
        BufferedReader reader = null;
        String response="";
        try {
            URL httpUrl = null; //HTTP URL类 用这个类来创建连接
            //创建URL
            httpUrl = new URL(url);
            //建立连接
            HttpURLConnection conn = (HttpURLConnection) httpUrl.openConnection();
            conn.setRequestMethod("POST");
            conn.setRequestProperty("Content-Type", "application/json");
            conn.setRequestProperty("connection", "keep-alive");
            conn.setUseCaches(false);//设置不要缓存
            conn.setInstanceFollowRedirects(true);
            conn.setDoOutput(true);
            conn.setDoInput(true);
            conn.connect();
            //POST请求
            out = new OutputStreamWriter(
                    conn.getOutputStream());
            out.write(Params);
            out.flush();
            //读取响应
            reader = new BufferedReader(new InputStreamReader(
                    conn.getInputStream()));
            String lines;
            while ((lines = reader.readLine()) != null) {
                lines = new String(lines.getBytes(), "utf-8");
                response+=lines;
            }
            reader.close();
            // 断开连接
            conn.disconnect();


            
        } catch (Exception e) {
        System.out.println("发送 POST 请求出现异常!"+e);
        e.printStackTrace();
        }
        //使用finally块来关闭输出流、输入流
        finally{
        try{
            if(out!=null){
                out.close();
            }
            if(reader!=null){
                reader.close();
            }
        }
        catch(IOException ex){
            ex.printStackTrace();
        }
    }


        return response;
    }


}


猜你喜欢

转载自blog.csdn.net/luchengtao11/article/details/80184036