https://start.spring.io/ 에서 다음과 같이 설정
일단 sdk가 11이라 자바 11로 함 인텔리제이에서 sdk 설정은 11 (3)로 하셈
+) mysql쓸거면 implementation 'mysql:mysql-connector-java' 추가
mongodb로 써야되는데.. 일단 이렇게 해보자
headers는 아래처럼 세팅
url은 ngrok를 사용해서 서버 url을 받아와야됨
ngrok 처음 시작 - https://ssjeong.tistory.com/entry/ngrok-%EB%A1%9C%EC%BB%AC-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC%EC%9D%98-%ED%84%B0%EB%84%90-%EC%97%B4%EA%B8%B0%EB%A1%9C%EC%BB%AC-PC-%EA%B0%9C%EB%B0%9C-%ED%99%98%EA%B2%BD-%EA%B5%AC%EC%B6%95
ngrok 사용법 - https://velog.io/@kya754/ngrok-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0#%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0
url을 dialogflow와 연결하기 - https://medium.com/@nitam/google-dialogflow-spring-boot-angular-mqtt-esp8266-anything-42d8e19dedec
중간에 저 그림 나오는데 설명 있음
src/main/java/chatbot_ex/chatbot_ex/dialogflow/DialogFlowRest.java
@RestController
@RequestMapping("/orchid/api")
public class DialogFlowRest {
private static JacksonFactory jacksonFactory = JacksonFactory.getDefaultInstance();
@RequestMapping(method = RequestMethod.POST, value = "/dialogFlowWebHook")
public ResponseEntity<?> dialogFlowWebHook(@RequestBody String requestStr, HttpServletRequest servletRequest) throws IOException {
try {
GoogleCloudDialogflowV2WebhookResponse response = new GoogleCloudDialogflowV2WebhookResponse(); // response 객체
GoogleCloudDialogflowV2WebhookRequest request = jacksonFactory.createJsonParser(requestStr).parse(GoogleCloudDialogflowV2WebhookRequest.class); // request 객체에서 파싱
Map<String,Object> params = request.getQueryResult().getParameters(); // 파라미터 받아서 map에다 저장
if (params.size() > 0) {
System.out.println(params);
response.setFulfillmentText("다음과 같은 파라미터가 나왔습니다 " + params.toString());
}
else {
response.setFulfillmentText("Sorry you didn't send enough to process");
}
return new ResponseEntity<GoogleCloudDialogflowV2WebhookResponse>(response, HttpStatus.OK);
}
catch (Exception ex) {
return new ResponseEntity<Object>(ex.getMessage(),HttpStatus.BAD_REQUEST); // 에러 발생 시 bad request 보내줌
}
}
}
아래 참고
+) 테스트하는 방법
Postman에서 하셈
method - POST
url - 다이얼로그 fulfillment에서 지정해준거
headers - 다이얼로그 fulfillment에서 지정해준 헤더 전부 넣었음(Content-Type, username, password)
body - 다이얼로그에서 개별 인텐트 하나 들어가면 우측 하단에 Diagnostic info가 있음 그거 클릭
Fulfillment request 복붙해서 body에 넣어주면 됨