축! 닥터다이어리 챗봇 탄생!
목차
카카오톡 챗봇 개발 스토리
[카카오톡 챗봇 개발은 어떻게 시작하게 되었는가?]
카카오톡 챗봇은 “어떻게하면 보다 혈당 기록을 쉽게 남길 수 있을까?”라는 생각에서 시작되었습니다. 혈당관리에서 가장 중요한 것은 주기적으로 혈당을 기록하는 것인데… 지속적으로 혈당 기록을 하는 것은 참으로 어려운 일이죠. 그래서 개발팀과 기획팀은 생각했습니다. 유저가 앱을 떠나서도 일상 생활을 하면서 혈당 기록에 대한 자극을 받고 보다 쉽게 기록을 남길 수 있는 방법은 없을까?
카카오 i 오픈빌더로 제작된 카카오톡 챗봇 서비스 예시
카카오톡 챗봇에서 발화는 요청(request), 블록은 컨트롤러(controller), 메시지은 응답(response)의 역할을 하게 됩니다. 그래서 챗봇을 개발하면서 유저가 특정 발화를 하도록 유도하여 올바른 요청이 블록으로 갈 수 있도록 만들고, 블록은 들어온 요청을 잘 분석하여 필요한 데이터를 가공하고, 메시지 응답으로 유저가 원하는 내용을 보여주는 것이 핵심이라 할 수 있습니다.
우리가 개발을 하면서 특정 API를 사용하면 올바른 요청을 보내야하는 것이 중요한 만큼, 챗봇을 설계할 때도 유저가 블록을 실행할 수 있도록 특정 발화를 하도록 유도해야합니다. 그래서 엔티티를 설정할 때는 유저 입장에서 자연스럽게 입력할 수 있으면서도 핵심적으로 요청의 속성을 구분할 수 있는 단어와 패턴을 고려해서 설정하는 것이 중요합니다. ex) “공복{혈당기록 시점} 120{수치값} 기록해줘” 자세한 내용은 오픈빌더 도움말에도 있으니 참고하시길 바랍니다.
사용자 발화 기반으로 블록의 작동 원리
블록은 마치 API를 호출했을 시 실행되는 함수와 같은 역할이며 발화문에서 필요한 파라미터를 추출할 수 있습니다. 위 이미지를 예시로 들면 “아이유 노래 틀어줘”에서 가수의 이름과 음악재생의 액션을 뽑은 것처럼 블록이 어떠한 엔티티를 파라미터로 인식하고, 어떠한 액션을 취할지를 설정해야합니다. 여기서 ‘스킬’은 외부 API를 직접 연결하여 카카오 챗봇 내부가 아닌 외부에서 데이터 처리를 한 다음에 응답값을 받을 수 있도록 하는 장치입니다. 스킬이야 말로 챗봇 활용의 꽃이라 할 수 있기 때문에 자세한 부분은 오픈빌더 연결파트와 까다로웠던 핸들링 부분에서 더 말씀드리도록 하겠습니다.
카카오톡으로 혈당 관리를 할 수 있다고?