본문 바로가기
사이드 프로젝트/음악추천 챗봇 서비스

음악추천챗봇1. 카카오챗봇 설정 | 카카오 i 오픈빌더 API 이해

by 카프리썬_ 2021. 5. 27.
728x90

카카오톡에서 사용할 챗봇을만들기 위해서는 아래와 같은 작업을 진행할 것이다. 

1. 카카오 채널 생성

2. 카카오에서 제공해주는 카카오i 오픈빌더 사용신청

3. 챗봇기획 

- 시나리오 생성

- 블록작성

- 엔터티 설정 

4. 봇을 채널에 연결

 

 


카카오채널 생성

카카오채널관리자 센터 바로가기 : https://center-pf.kakao.com/

나는 "오늘의 음악 추천"을 컨셉으로 오.음.추 라는 채널을 생성했다.

카카오 i 오픈빌더?

카카오톡 채널(플러스친구) 프리미어리그봇으로 

해당 플러스친구에서 채팅 화면에서 특정 메시지를 입력하면 메시지를 분석해 특정 메시지를 리턴해주는 서비스.

내부 UI는 일반 말풍선만 있는게 아니라 이미지도 있고, 조그만 말풍선 UI도 있다.

나는 뉴스봇이라는 카카오톡 플러스친구를 사용하고 있는데 이게 대표적인 카카오i오픈빌더 UI같다. 

이렇게 만들어져 있는 틀을 오픈빌더라는 툴을 활용해서 제작할 수 있는 것이다. .

 

 

카카오i 오픈빌더에서 카카오톡 챗봇 만들기 : https://i.kakao.com/

아.. 생각보다 오래걸리는데..? 일단 챗봇연결은 보류하고..

백단에 spotify api와 연동이 되는지 부터 해야겠다. 

엄밀히 생각해보면 카카오톡 부분은 fron부분이니까 back부분인 람다부터 구현해야겠다. 

 

카카오 i 오픈빌더 승인완료! 5일이나 걸렸따..

이제 카카오에서 정식으로 봇 서비스를 만들어도 된다고 승인이 난 것이다!! 

 

이제 나만의 카카오톡 챗봇을 만들 수 있다. 카카오톡 채널을 기반으로 한 챗봇이 될 것이다.

 


챗봇 기획 - 시나리오 생성 / 블록작성 / 엔터티 설정 

챗봇에게 예상되는 사용자의 발화패턴을 미리 사전에 정의해두는 작업이다. 

 

시나리오 생성

챗봇 시나리오는 사용자가 입력한 내용에 따라 특정 메세지를 리턴하도록 설정하는 것이다. 

즉, 사용자가 챗봇을 통해 경험할 수 있는 서비스를 의미한다.

어떤 인풋을 받을떄, 어떤 아웃풋을 어떻게 표현할 것인지 직접 구성하고 디자인하는 과정이라고 보면 된다.

 

블록 작성

시나리오를 위해서는 블록을 작성해야한다.

블록은 사용자의 의도를 응대하는 가장 작은 단위를 의미한다. 

하나의 상황이라고 보면 될 것 같다.

즉, 다양한 블록이 모여 하나의 시나리오를 구성하는 것이다. 

 

  • 웰컴블록 : 봇이 사용자를 처음 만날때 발송하는 환영메세지
  • 폴백블록 : 봇이 사용자의 의도를 이해하지 못할때 응답하는 메세지
  • 탈출블록 : 사용자가 대화를 초기화하거나 탈출하고 싶을때 쓰는 사용자 명령어
  • 커스텀블록 : 이외에 블록을 추가하여 기본시나리오 외에 커스텀 시나리오를 구성할 수 있다 
단, 시나리오와 블록은 미리 철저하게 설계를 하고 진행해야한다. 
블록을 수정하고 학습하기 위해 머신러닝 실행버튼을 실행해야하는데 이 학습이 최소 10분이 소요되기 때문.
빈번하게 수정이 어렵다는 이야기! 

 

나의 경우, 아티스트명을 검색어로 받기 때문에 사용자 발화에 해당하는 패턴발화는 아래와 같다.

엔터티 설정 

언터티는 봇이 이해할 수 있는 용어를 체계적으로 정리한 데이터 사전을 말한다. 

엔티티가 정의되어 있다면, 봇은 사용자가 입력한 발화가 어떤 의도인지 어떤 동작을 해야하는지 데이터를 추출 가능

  • 나의 엔터티 : 작업자가 직접 정의
  • 시스템 엔터티 : 자주 사용하는 엔티티를 미리 정의 

 

봇을 생성한 직후에는 시스템 엔터티만 있기 때문에 알아들을 수 있는 용어가 제한적일 수 있다

그래서 봇의 특성에 맞도록 엔터티를 잘 설계해야한다고 한다.

 

하지만 나의 경우 아티스트를 검색하기 떄문에, 해당 아티스트가 사람이름이거나 그룹이라는 시스템엔터티만 추가했다 

엔터티 매핑

이제 각 발화에 엔터티를 매핑해야한다. 

사용자가 입력한 값(아티스트)가 어떤 엔터티에 속하는지를 지정해주면

카카오톡을 보낼떄 파라미터로 보낼 수 있는 것이다. 즉, 이 파라미터 값으로 코드에서 전달할듯?!?

이렇게 각 발화패턴을 더블클릭해서 엔터티를 일일이 찾아 선택해줘야한다. 그럼 발화명이 블록으로 바뀐다.

위에서 엔터티로 name이랑 group을 지정했다. 

그래서 대표적인 그룹으로 방탄소년단과, 대표적인 name에 해당하는 아이유를 등록해봤다. 

그럼 이렇게 챗봇입장에선 입력받은 아티스트명을 파라미터로 인식할 수 있게 된다. 

 

파라미터 설정

아티스트명을 파라미터로 받을때는

아래와 같은 파라미터 변수($sys_person_group, $sys_person_name)으로 인식하게 된다. 

이 변수명에 따라서 코드를 짤때 받으면 될 것 같은데 약간 이름을 변형하도록 하자. 

 

사용자 패턴 발화 입력

광기로...국내외 아티스트에 해당하는 사용자발화를 70개정도 입력했다...

너무 많을것 같아서 약간의 제약사항을 두었다. 

  • 검색어 입력은 띄어쓰기를 포함하면 안된다.
  • 영어로검색하는 경우 소문자로만 검색해야한다.
  • 그리고 약어(?)도 가능하다. (ex : 방탄소년단-방탄, 빌리아일리시-빌리) 

봇 응답 입력

위에서 설정한 예상된 아티스트명이 검색이 되었을때 봇이 어떻게 응답할지도 설정해준다.

나는 카드형을 선택했다. 나중에 바뀔수도 있껬지만..

이미지 주소는 스포티파이에서 주는 image URL주소를 넣고,,

설명과 타이틀은 아티스트명과 앨범을 나타내면 되려나? 

그리고 응답테스트를 해보았다. 

단, 응답테스트는 2개이상의 시나리오가 작성이 되어야하고, 사용자발화가 최소20개 작성되어야한다. 

월컴블록과 시나리오01을 완료하고 봇테스트를 해보았다. 

 

봇을 채널에 연결 

마지막으로 이렇게 기획한 챗봇을 카카오톡에서 사용하기 위한 채널이 필요하다.

그래서 앞서 만든 채널에 봇을 연결해야한다. 

 

마무리

카카오i빌더로 기획하고 구성하는 부분은 약간 프론트단 작업같았다. 

이제 앞단에 어떻게 사용자아게 보여지는지를 상상해보았으니 이걸 뒤에 api와 연결을 잘 해보자! 이게 백단부분! 

 

출처 

카카오i빌더 레퍼런스 : https://i.kakao.com/docs/key-concepts-entity#%EC%97%94%ED%8B%B0%ED%8B%B0%EC%9D%98-%EC%A2%85%EB%A5%98

 

카카오i 빌더 사용사례 : https://vmpo.tistory.com/59?category=733430 

카카오i 빌더 익히기 : https://luckygg.tistory.com/293

반응형