java製作專屬智慧陪聊機器人詳解
目錄
- 1.智慧陪聊機器人演示
- 2.智慧問答平臺API介紹
- 3.整合第三方ON開源庫
- 4.智慧機器人專案框架搭建與模組劃分
- 5.封裝一個機器人HTTP工具類
- 6.實現機器人service層的介面與定義
- 7.製作專屬於你的機器人入口
- 8.把你的機器人打包使用
- 9.總結
1.智慧陪聊機器人演示
人工智慧一直是最近的熱點話題,自動人工智慧但是以來應用領域就不斷的擴大,在未來人工智慧也會在人們的生活中不斷普及與應用。這篇博文中的陪聊機器人,使用進行編寫,可以根據你發的資訊進行智慧的迴應,還算挺有意思的一個小玩意。最終效果的演示如下圖~
2.智慧問答平臺API介紹
這個陪聊機器人專案使用了青雲課的智慧API,通過呼叫API得到資訊反饋。
具體的呼叫格式如下:
http://api.qingyunke.com/api.?key=free&appid=0&msg=%s 其中的%s傳入我們需要傳送給機器人的內容,就可以得到API呼叫結果的反饋。
- key 固定引數 free
- appid 設定成0,為智慧識別
- msg 為搜尋關鍵詞
- result 表示返回狀態,返回0表示正常
- content api返回的資訊內容
可以看到資料是以JSON的形式進行返回。
3.整合第三方JSON開源庫
Gson是Google提供的類庫,可以用來處理java物件與JSON資料之間的對映,將一個JSON字串轉換成一個java物件,方便我們對API返回的JSON格式的資料進行處理,下面演示如何將Gson類庫匯入到我們的工程中。
首先可以去官網下載對應的jar包,或者直接私信我獲取。獲取jar包之後找個全英文路徑進行儲存。這裡我們使用的編輯器是IDEA,所以使用IDEA進行演示,小夥伴們使用的是其他編輯器的話匯入方法都是類似的哦。在IDEA開啟如下介面,找到jar包匯入即可。
4.智慧機器人專案框架搭建與模組劃分
專案搭建:搭建的部分無太多要求,只需要使用IDEA建立一個新的普通java工程即可
專案模組搭建:
- model 類 用來存放請求所返回的物件
- util 類用來存放工程所用到的工具類,比如說HTTP請求解析類
- app 類用來當作機器人專案的入口
- service 類用來實現業務的介面
相關的兩個實體類如下:
public class Request { private String key = "free"; private String appid = "0"; private String msg = ""; public Request(){} public Request(String msg){ this.msg = msg; } public String getKey() { return key; } public void setKey(String key) { this.key = key; } public String getAppid() { return appid; } public void setAppid(String appid) { this.appid = appid; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } } public class Response { private int code; private String content; public int getCode() { return code; } public void setCode(int code) { this.code = code; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } }
5.封裝一個機器人HTTP工具類
HTTP工具類主要用來對api進行請求,獲取返回的內容
public class HttpUtils {
public static String request(String api){
HttpURLConnection connection = null;
int responseCowww.cppcns.comde = 0;
try{
URL url = new URL(api);
//獲取對應的連線物件
connection = (HttpURLConnection) url.openConnection();
responseCode = connection.getResponseCode();
}catch (Exception e){
e.printStackTrace();
}
if(200 <= responseCode && responseCode<=299){
try(InputStream inputStream = connection.getInputStream();
BufferedReader in = new BufferedReader(new InputStreamReader(inputStream));
){
StringBuilder response = new StringBuilder();
www.cppcns.com String currentLine;
while ((currentLine = in.readLine())!= null){
response.append(currentLine);
}
String result = response.toString();
return result;
}catch (Exception e){
e.printStackTrace();
}
}
return null;
}
}
6.實現機器人service層的介面與定義
實現機器人介面層
public interface RobotService { Response qa(String msg) ; }
實現機器人介面實現類,這個類用來實現API的請求,將結果進行封裝成實體類返回
public class QkyRobotServiceImpl implements RobotService { private static final String apiTpl = "http://api.qingyunke.com/api.php?key=free&appid=0&msg=%s"; private static final Gson gson = new Gson(); @Override public Response qa(String msg) { String api = null; try { api = String.format(apiTpl,URLEncoder.encode(msg,"UTF-8") ); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } String result = HttpUtils.request(api); //可以做邏輯判斷,比如null的時候,或者出錯 Response response = gson.fromJson(result,Response.class); return response; } }
7.製作專屬於你的機器人入口
編寫入口主類,呼叫封裝好的模組進行機器人入口主類的編寫
public class Main {
private static final RobotService robotService = new QkyRobotServiceImpl();
public static void main(String[] args)throws Exception {
Scanner scanner = new Scanner(System.in);
System.out.println("尊敬的C站大佬,請給我取個響亮的名字!!");
System.out.println("-------------------------------");
String name = scanner.nextLine();
System.out.println("大佬好,我是大資料小禪部落格裡的機器人,直接給我下達指令哦~");
System.out.println("-------------------------------");
while (true){
String input = scanner.nextLine();
if("88".equalsIgnoreCase(input)){
System.out.println("歡迎下次使用,拜拜");
break;
}else {
Response response = robotService.qa(input);
if(response != null && response.getCode() == 0){
System.out.println("------http://www.cppcns.com-------------------------");
System.out.println(name+":"+ new String(response.getContent().getBytes(),"UTF-8"));
System.out.println("-------------------------------");
}else {
System.out.println(name+": 大佬你剛剛這句話我沒聽懂,可否再陳述一次~");
}
}
}
scanner.close();
}
}
8.把你的機器人打包使用
為了方便我們對專案的使用,這裡我們使用IDEA將專案打包成jar包。通過下面的步驟,就可以將我們專案裡的全部模組與類庫打包,需要呼叫的時候只需要使用 java -jar jar名字 即可。
首先點開IDEA的Project Structure之後找到Artifacts選項
點選Bulid,將專案進行打包
最後回產生一個out資料夾,這裡面的jar包也就是我們打包後的最終結果。
之後上傳到有java環境的終端就可以執行。
9.總結
打包完成後我們的機器人專案就完成啦,希望小夥伴們通過這篇博文可以有所收穫。
到此這篇關於java製作專屬智慧陪聊機器人詳解的文章就介紹到這了,更多相關java 陪聊機器人內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!