챗봇 만들기 — 간단한 설문 조사 챗봇 01

Minkang Heo
BotHub.Studio (ko)
Published in
3 min readAug 20, 2018
출처 Pixbay

챗봇을 만들다 보면 사용자에게 질문을 하고 답변을 관리 해야 하는 경우가 생깁니다. 설문조사를 하는 챗봇이라면 더더욱 그렇겠지요.

예를 들어 다음 2가지 설문을 받는다고 가정해 보겠습니다.

Q1. 오늘 점심은 어떤 걸 드셨나요? (객관식)
1. 자장면
2. 돈가스
3. 냉면
4. 해장국
5. 기타

Q2. 오늘 식사의 한 줄 맛 평가를 남겨주세요! (주관식)

기존 방식대로라면 사용자의 메시지가 어떤 질문에 대한 답변인지를 판단하기 위해 상태를 직접 관리 해야 하는 귀찮은 과정을 거쳐야만 했습니다.

하지만 BotHub SDK에 이미(?) 추가되어있는 dispatcher 함수를 이용하면 손쉽게 구현할 수 있습니다.

설문지 구성

설문을 위한 질문 내용 구성을 위해 챗봇 프로젝트를 생성하면 자동으로 만들어지는 bothub.yml 파일을 이용해야 합니다.

기본 bothub.yml 은 아래와 같이 구성되어 있습니다.

programming-language: python3

여기에 pools 라는 intents 를 추가합니다.
내용은 다음과 같습니다.

이제 bothub.yml 을 이용하는 코드를 제작해 보겠습니다.

코드구현

예제는 텔레그램을 기준으로 제작되었으며, 처음 시작 시 /start 메시지가 넘어오면 간단한 안내와 함께 quick reply 버튼을 통해 설문을 시작할 수 있습니다.

아래는 실제 텔레그램에서의 동작 화면입니다.

위의 예제만으로는 실제 환경에서 사용하기 어렵겠지만, 답변 내용을 관리하기 위한 관리자용 통계등을 붙인다면 간단한 설문 챗봇으로는 활용해 보실 수 있을 것 같습니다.

편의를 위해 구글 설문지를 활용하는 방법도 있습니다. 설문지를 작성하고 해당 내용을 bothub.yml 에 동일하게 구성 후 구글 설문지로 답변 내용을 전송하면 됩니다.

마무리

오늘 예제의 설문 챗봇은 쉽게 구성해서 만들 수 있지만, 아직 여러 제약 사항이 존재합니다.

첫 번째, 단순한 형태의 설문조사만 가능합니다.
설문조사를 하기 위해서는 객관식과 주관식 외에도 다중 선택형이나, 기타 의견 등을 기재하거나 이미지 선택이 필요할 수도 있습니다.

두 번째, 현재 SDK 버전에서는 설문조사가 진행되면 중간에 멈추거나, 이미 대답한 내용을 수정할 수 없습니다. (설문 중지는 업데이트 시 반영되면 해당 내용을 수정하도록 하겠습니다.)

물론 설계에 따라 최종 답변 후 수정하기 옵션을 둘 수 있지만, 전체 설문을 다시 받거나 개별 항목 수정을 위해서는 bothub.yml 이 복잡해 질 수 있습니다.

지금은 간단한 구성으로 이루어지는 설문에만 권장 드립니다.

그럼 다음에는 위에 언급한 구글 설문지를 연동한 설문 챗봇을 예제를 소개해 드리도록 하겠습니다.

본 아티클 관련 문의는 BotHub.Studio Community를 통해 지원받으실 수 있습니다. 챗봇 도입 및 제휴 문의는 bothub@bothub.sutdio로 연락해주세요.

--

--