兩個機器人聊天對話實現原始碼

uoou發表於2015-02-10

這是藉助圖靈機器人提供的免費API實現的兩個機器人對話的功能,系統自動提取圖靈平臺提供的智慧聊天庫,自己還能匯入自己的知識庫讓機器人更具個性化,更符合你的胃口, 圖靈機器人接入文件地址http://www.tuling123.com/openapi/cloud/access_api.jsp
下面就是實現程式碼

      package net.lxy520.tuling;

      import com.mashape.unirest.http.HttpResponse;        
      import com.mashape.unirest.http.JsonNode;              
      import com.mashape.unirest.http.Unirest;

      public class Main {   
          private static final String KEY = "91e71ab13d4f1be71de4a7ef1c1ec2ef";   
          private static final String BASEURL= "http://www.tuling123.com/openapi/api?key="+KEY+"&userid=";   
          private static final String ALICE = "Alice";             
          private static final String TITAN = "Titan";

    public static void main(String[] args) {
          //第一次交談
          String first = "你好啊!";
          System.out.println(ALICE+"對"+TITAN+"說:"+first);
          new Main().communication(ALICE, first);
    }

/**
 * ALICE 與 TITAN 交談
 * @param user 使用者
 * @param text 聊天室內容
 */
   public void communication(String user, String text) {
          // 構造 訪問圖靈的地址
          StringBuffer url = new StringBuffer("");
          url.append(BASEURL);
          url.append(user);
          url.append("&info=").append(text);
          // 輸出日誌
          System.out.println(url.toString());  
          // 取回交談內容         
          String msg = getRobotMsg(url.toString());           
          if (ALICE.equals(user)){
             //如果對ALICE說                
             System.out.println(TITAN+"對"+ALICE+"說:"+msg);    
             communication(TITAN, msg);          
           }else if (TITAN.equals(user)){
             //如果對TITAN說            
             System.out.println(ALICE+"對"+TITAN+"說:"+msg);      
             communication(ALICE, msg);  
           }  
     }

/**
 * 取回機器人的回答
 * @param url 圖靈機器人完全訪問地址;帶 userid和info
 * @return 機器人的回答
 */
    public String getRobotMsg(String url) {
    try {
        HttpResponse<JsonNode> jsonNodeHttpResponse = Unirest.get(url).asJson();
        String text = jsonNodeHttpResponse.getBody().getObject().get("text").toString();
        return text;
    }catch (Exception e) {
        return "我不知道!";
    }
  }
}

相關文章