Chatbot (카카오 아이 오픈빌더 + Java Spring)

이번에 'Kakao i 오픈빌더' 를 이용할 수 있는 기회가 있어 카카오 플러스 친구를 활용하여

완벽하진 않겠지만, AI 챗봇을 만들어 보려고 한다.

준비물 - STS (Spring Tool Suite) + 카카오 i 오픈빌더(신청 해야함) + 카카오 플러스친구 관리자 계정 + AWS EC2

준비 단계

  1. 카카오 플러스친구 관리자 계정

    카카오 플러스친구 관리자센터에 들어가, 서비스 할 플러스친구를 만든다.

    플러스친구 계정을 만들어 '스마트 채팅' 카테고리를 들어가면 '챗봇' 이란 부분이 있는데

    이 '챗봇'을 카카오 i 오픈 빌더를 통해 만드는 것임

    플러스 친구 계정을 만든 후, 카카오 i 오픈 빌더 사이트로 들어가서 연동을 하면 된다

image

아 그리고 관리 -> 상세설정에서 아래와 같이 설정을 해주어야 사용자들이 카카오톡에서 검색할 수 있음

image

  1. 카카오 i 오픈 빌더

    카카오 i open builder는 신청을 하고, 만들수 있다는 가정하에 설명하겠음

    일단 카카오 i에 대해 짧게 설명해드리자면, 카카오 인공지능 기술을 이용하여 카카오톡 플러스친구 챗봇을 쉽게 설계할 수 있도록 도와주는 설계 플랫폼이다.

    기본적인 것들을 이것저것 사용해봤는데, 일단 장점은 카카오톡 이용자들이 정말 엄청나게 많은데, 이 사용자들이 잠재고객 이 될수도 있는? 음.. , 대형 플랫폼이다 광고만 잘한다면 저 많은 사람들이 한번쯤은 들어올 확률이 어느정도 있지않을까 한다.

    그리고 카카오 i 오픈빌더를 이용하면, 챗봇의 화면 구성이라던지, 발화에 따른 교육을 쉽게 할 수있다. 예를 들어 사용자가 '사용법'을 치면 챗봇을 어떻게 사용할 수 있는지 사용법이 쫘르르륵 나오는데(물론 버튼식으로도 만들수 있음) 오타로 '사용버ㅂ' 이라고 치던지, 'ㅅㅏ용법' 이라고 칠수도 있는데, 이러한 부분을 '학습' 시킴으로 써 위와 같은 오타를 쳤어도 '사용법'에 대한 내용을 쫙 보내줄수 있다. 그리고 STS를 활용하여 '스킬'을 구성할 수 있는데, 내가 제공하고 싶은 내용들을 이 '스킬'을 활용하면 더욱 SkillFul하게 챗봇을 만들 수 있다.

    kakao_i2

아래와 같이 설정을 해주면 카카오 챗봇과 연동할수 있음

image


그럼 밑에와 같이 연동이 된것을 확인할 수 있다

image


웰컴 블록을 만들면, 처음 사용자가 플러스친구에 접속했을 때 나오는 화면을 구성할 수 있다

화면 구성 및 스킬, 학습 사용법은 도움말을 이용해서 확인하시면 됨

image

####STS

카카오 플랫폼을 활용하며, 카카오톡 플러스친구를 통해 서비스 하기 때문에 따로 View가 필요하지 않다.

특정한 JSP와 같은 뷰가 필요하지 않기 때문에, REST방식으로 데이터를 처리하면 되기 때문에

@RestContoller 를 사용하며, 데이터를 반환만 하면 된다. @Controller를 사용해도 무방하며, @ResponseBody를 붙여주어야 함.

@RestController를 사용하기 위해선 Spring 버전을 4 이상으로 pom.xml에서 설정해주어야 한다.

(틀린거 지적해주시면 감사하겠습니당.)

STS는 일단 스킬 서버를 구성하기 위해 우리가 작업을 하는건데, 봇 시스템에서 스킬 서버로 요청을 하면, 그에 따른 알맞은 json을 스킬 서버에서 반환해 주어, 봇 시스템은 받은 json에 알맞게 화면을 구성해준다.

image

응답 타입별 JSON 포멧은 여러가지가 있는데, 가장 간단한 SimpleText의 예제를 보여드리겠슴다.

이걸 하기에 앞서 pom.xml 에서 Controller에서 객체 반환을 할 때 JSON형태로 반환하게끔 도와주는 디펜던시를 추가해줘야함, dependencies 가장 밑에 추가

image

봇 시스템에 반환할 객체 vo를 만들어보좌

image

그 다음 Controller 에서 반환하게 끔 코딩을 해보좌

image

이제 로컬 서버를 켜서 확인을 해보좌

image

다음으로 skill로 한번 만들어 보좌

일단 여기서 미리 만들어둔 AWS EC2 서버를 사용할 건데, 만드는 법은 나중에 올리던지, 아니면 필요하신분은 구글링을 통해 만들어 보시면 될듯 함

저는 ec2서버(ubuntu)에 jdk1.8에 tomcat(8.5) 설치하구 manager 설정을 통해 employ를 했습니당.

그럼 밑에 처럼 서버를 통해 요청을 할 수 있습니당.

image

이것을 이제 스킬로 한번 만들어보겠슴다. 카카오 i 오픈빌더를 통해 들어가 밑에 URL을 넣은 뒤

스크린샷 2019-03-18 오후 6 03 27

밑에 스킬서버로 전송을 누르면, 봇시스템에 제대로 응답이 왔는지 확인 할 수 있습니다.

스크린샷 2019-03-18 오후 6 03 54

그럼 이것을 위에서 우리가 만든 웰컴 블록에서 '사용법' 버튼에게 스킬을 적용시켜 보겠습니다.

SimpleText 라는 시나리오를 만들고, 거기에 발화(사용자가 발화로 지정한 단어를 입력했을 때, 현재 만든 시나리오가 발동!)를 지정하며, 스킬까지 같이 지정을 하고 어떻게 쓰는지 확인해보좌

발화를 '심플'로 지정, 파라미터 설정을 통해 내가 만든 스킬을 등록

image

웹훅객체 사용법은 도움말을 통해 보면 되시구, vo 로 만든 SimpleText에 text라는 이름의 string 타입의 데이터가 있었는데, JSON형태로 받은 봇시스템은 웹훅객체를 통해 요로코롬 불러올수 있다

image

저장을 하고, 오른쪽 상단위에 봇테스트를 통해 테스트 해보좌

image

요로코롬 나올수 있는걸 확인할수 있다..

+ Recent posts