Kakao Chatbot 스킬 사용
사전준비
- Heroku 배포 이후에 진행
- Hello world가 출력된 페이지를 띄어야 한다.
스킬 서버 구축 기본편
- 스킬 서버에서 제공하는 2가지 API URI는 다음과 닽다.
- 단순 텍스트형 응답 스킬
- POST /api/sayHello
- 단순 이미지형 응답 스킬
- POST /api/showHello
(1) 스킬 서버 예제
- 코드 작성 : main.py
- 코드
print(body['userRequest']['utterance'])
와responseBody
영역은 추후 설명 할 예정이다.
- 코드
1 | from flask import Flask, request |
- 코드 저장 후 배포 시 주의점
- 경로에 주의해야 한다!
- 배포 진행한다.
1 | $ git add . |
(2) 스킬 서버 등록
단순 텍스트형 응답
- 아래와 같이 스킬 서버 정보를 입력하고 저장한다.
- 코드에서 정의한 이름을 URL 뒤에 덧붙인다 : /api/sayHello
단순 이미지형 응답
- 텍스트형 응답과 같은 과정을 거친다.
- /api/showHello
(3) 시나리오
- 여기가 가장 중요하다. 이제 시나리오를 등록한다. 이 때 중요한 것은 파라미터 설정 탭에서 스킬 선택을 개별적으로 호출 할 수 있다.
‘단순 텍스트형 응답’ 스킬 사용
- 봇 응답에서 스킬 데이터를 선택 후, 저장 버튼을 클릭한다.
‘단순 이미지형 응답’ 스킬 사용
- 사용할 스킬 데이터를 선택 후, 저장한다.
(4) 배포
- 배포 탭을 클릭한 후, 배포를 진행
(5) 테스트
봇 테스트를 열고 아래와 같이 테스트를 한다.
배포 완료 후 사용 가능
단순 텍스트형 응답
- 설정한 텍스트 출력
- 정상 작동
단순 이미지형 응답
- 설정한 이미지 출력
- 정상 작동
(6) 로그 확인
- Heroku 에서는 로그를 쉽게 확인 가능
1 | heroku logs |
(7) 출력
- outputs는 출력 그룹을 나타내며, 출력 그룹은 1~3개까지 출력 요소를 포함시킬 수 있다.
- 출력요소는 크게 7가지이다. (2022년 5월 기준)
- simpleText : 간단 텍스트 (https://i.kakao.com/docs/skill-response-format##simpletext)
- simpleImage : 간단 이미지 (https://i.kakao.com/docs/skill-response-format##simpleimage)
- basicCard : 기본 카드 (https://i.kakao.com/docs/skill-response-format##basiccard)
- commerceCard : 커머스 카드 (https://i.kakao.com/docs/skill-response-format##commercecard)
- listCard : 리스트 카드 (https://i.kakao.com/docs/skill-response-format##listcard)
- ItemCard : 아이템 말풍성 카드 (https://i.kakao.com/docs/skill-response-format##itemcard)
- Carousel : 케로셀 카드 (https://i.kakao.com/docs/skill-response-format##carousel)
- 그 외에도 다양한 기능들은 도움말 및 예제코드를 확인하도록 한다.
챗봇 빌더를 활용한 사칙연산 계산기 구현
- 사칙 연산을 구현하는 챗봇을 만들어 본다.
(1) 엔티티 구성
- 엔티티(Entity) : 봇이 이해할 수 있는 용어를 체계적으로 정리한 데이터 사전
- 엔티티 구조는 = 엔티티명, 대표 엔트리, 동의어
- 엔티티의 자세한 설명은 다음 링크에서 확인
- 사칙연산을 예로 들면 아래와 같이 지정할 수 있다.
- division, subtraction 등은 대표 엔트리를 말한다.
- 동의어에 해당하는 값이 나오면 추후에 확인할 로그 값에는 대표 엔트리만 별도로 데이터를 수집할 수 있다.
(2) 시나리오 구성
- 엔티티를 구성했다면, 이제 시나리오를 구성한다.
- 사용할 파라미터를 설정한다.
- 패턴 발화를 할 때 원하는 파라미터를 별도로 지정할 수 있다.
- 패턴 발화를 보면 빨간색 네모 박스를 확인할 수 있는 데, 이 부분에서 파라미터를 설정할 수 있다.
- 더하기, +에서의 파라미터는 엔티티 그룹을 설정하게 된다.
- 실제 파라미터 설정된 값은 다음과 같다.
(3) 파이썬 코드
- 이제 다음 코드를 작성하여 기존 main.py에 추가한다.
- 코드 작성시, 한가지 유의 사항은 json.loads() 함수를 반드시 써줘야 한다. Python Dictionary를 String으로 변경하는 것은 str() 함수를 사용하면 쉽게 변경이 가능하지만, 문자열 dictionary를 Dictionary로 바로 변경은 되지 않는다. 따라서, json.loads()를 사용한다.
1 | from flask import Flask, request |
- 코드를 저장 후 git배포한다.
- 스킬 설정
- 스킬을 사용할 블록에서 스킬을 지정하고 챗봇 배포한다.
배포 후 카카오톡에서 직접 실험
(+) 연산 정상작동
(-)연산 정상작동
(x) 연산 정상작동
(%) 연산 정상작동
사칙연산 모두 정상작동하므로 성공
Kakao Chatbot 스킬 사용
You need to set
install_url
to use ShareThis. Please set it in _config.yml
.