결과물 : http://pf.kakao.com/_xoEBQC (챗봇 링크)
추후 회사 업무에 필요한 챗봇을 만들기 위해 테스트로 개발중인 카카오톡 플러스친구 챗봇 개발기 (작성중)카카오톡 플러스친구 API v.2.0의 Document를 보고 만들었다.
- AWS Ubuntu EC2
- Spring boot 2.0.3.
- Java 8
카톡 플러스친구 챗봇 개발시 사용할 수 있는 객체는 API Document에 명시되어있다.
Getter/Setter, ToString()을 생성하고, KeyboardVO의 경우에만 생성자로 버튼 배열 지정(버튼으로만 쓰이므로)
- KeyboardVO.java
String type; String[] buttons;
- MessageButtonVO.java
String label; String url;
- MessageVO.java
String text; PhotoVO photo; MessageButtonVO message_button;
- PhotoVO.java
String url; int width; int height;
- RequestMessageVO.java (메세지 수신)
String user_key; String type; String conent;
- ResponseMessageVO.java (자동 응답)
MessageVO message; KeyboardVO keyboard;
package com.example.demo.controller;
~~~~~~ (import) 생략 ~~~~~~
@RestController
public class BotController {
@RequestMapping(value = "/keyboard", method = RequestMethod.GET)
public KeyboardVO keyboard() {
KeyboardVO keyboard = new KeyboardVO
(new String[] {"챗봇이랑 대화하기", "공지사항 보기", "FAQ 보기", "1:1 문의하기"});
return keyboard;
}
@RequestMapping(value = "/message", method = RequestMethod.POST)
public ResponseMessageVO message(@RequestBody RequestMessageVO vo) {
ResponseMessageVO res_vo = new ResponseMessageVO();
MessageVO mes_vo = new MessageVO();
String command = vo.getContent();
if(command.equals("메뉴")) {
mes_vo.setText("메뉴에서 명령을 선택해주세요~");
KeyboardVO keyboard = new KeyboardVO(new String[]
{"챗봇이랑 대화하기", "공지사항 보기", "FAQ 보기", "1:1 문의하기"});
res_vo.setKeyboard(keyboard);
}
else if(command.equals("1:1 문의하기")) {
MessageButtonVO messageButton = new MessageButtonVO();
messageButton.setLabel("1:1 문의하러 가기");
messageButton.setUrl("https://www.funda.kr/v2/contact");
mes_vo.setMessage_button(messageButton);
mes_vo.setText("안녕하세요 고객님, 아래의 URL을 클릭하여 1:1 문의사항을 작성해주세요. (메뉴 다시보기 = '메뉴' 입력!)");
}
~~~~~~~~~~~~~~~~~~~~~~ 생략 ~~~~~~~~~~~~~~~~~~~~~
else if(command.equals("챗봇이랑 대화하기")){
PhotoVO photo = new PhotoVO();
photo.setUrl("http://www.businesscomputingworld.co.uk/wp-content/uploads/2018/01/Chatbot.jpg");
photo.setHeight(427);
photo.setWidth(540);
mes_vo.setPhoto(photo);
mes_vo.setText("(하트뿅) 저와 대화를 나눠볼까용? 아직은 매우 멍청하답니다ㅎㅎ (메뉴 다시보기 = '메뉴' 입력!)");
}
else if(command.contains("안녕")){
mes_vo.setText("안녕하세요ㅎㅎ");
}
else {
mes_vo.setText("아직 구현하지 않은 명령어입니다. Ryan에게 문의하세요~");
}
res_vo.setMessage(mes_vo);
return res_vo;
}
}
AWS EC2 서버에 자바 소스코드 배포 및 재배포 (Deploying Java project on AWS EC2) 참고