멀티 플랫폼 운영을 위한 챗봇 프레임워크
안녕하세요. 오늘은 저희가 개발하고 있는 챗봇 프레임워크인 BOTGRIDA에 대해서 소개할까 합니다. 참고로 본 자료는 2017년 02월 22일 국내 봇 그룹 커뮤니티에서 진행한 쇼케이스를 통해 디캠프에서 발표했던 자료를 정리했습니다.
저희는 온라인 여행 매칭 서비스 트립그리다(https://www.tripgrida.com)를 개발하고 있습니다. 단순히 여행 서비스를 개발하는 것보다 새로운 기술들을 접목시키면서 좀 더 유연하고 확장성이 있는 서비스를 만들기 위해 여러 가지 실험을 진행 중입니다. 현재는 대화형 인터페이스인 챗봇을 통해 기존의 서비스 기능들을 하나씩 챗봇으로 적용해 가면서 서비스 가능성에 대해서 지속적으로 실험하고 있습니다.
저희는 서비스의 각 기능들이 서로 의존적이지 않고 각 기능별로 분리 결합이 용의 하도록 설계하고있습니다. 그렇기 때문에 복잡한 분리 작업 없이 기능별로 챗봇을 적용해 나가는 작업을 진행할 수 있게 되었습니다.
다음은 저희가 트립그리다 기능들을 단계별로 챗봇으로 적용했던 사례에 대한 내용을 공유합니다.
전 세계 - https://www.tripgrida.com/app/eq
국내 - https://www.tripgrida.com/app/worldeq?area=korea
일본 - https://www.tripgrida.com/app/worldeq?area=japan
중국 포함 아시아 전역 - https://www.tripgrida.com/app/worldeq?area=china
https://telegram.me/tripgrida_safe_bot
웹 - https://www.tripgrida.com/been/1
안드로이드 - https://play.google.com/store/apps/details?id=com.tripgrida.app.visitedworldmap
아이폰 - https://itunes.apple.com/app/visited-world-map/id1025253397?mt=8
https://www.facebook.com/messages/t/501182150086545
웹 - https://www.tripgrida.com/been/korea
안드로이드 - https://play.google.com/store/apps/details?id=com.tripgrida.app.koreanbeen
아이폰 - https://itunes.apple.com/kr/app/visited-korea-map/id1023585118?mt=8
https://line.me/R/ti/p/%40pjt7813h
https://www.messenger.com/t/mangwondongbot/
실제 망원동 봇은 동네 커뮤니티를 통해 동네 주민분들의 엄청난 호응을 받았고 올린 지 하루 만에 200명 이상이 사용을 하게 되었습니다. 그리고 또한 실제로 거래가 이루어지는 것들을 사용자 분들의 공유를 통해 확인할 수 있었습니다. 챗봇 가능성에 대해서 충분히 확인할 수 있었던 순간이었습니다.
주의 : 서버가 불안하여(트립그리다, 테스트 챗봇들이 사정상 한 곳에서 돌고 있습니다.. 저흰 아직 집 러닝 중입니다..ㅠㅠ) 동시접속자 수가 증가하면 Webhook 끊김 현상이 발생하여 작동을 멈추는 경우가 종종 발생합니다. 작동이 안 되어도 다음 기회에 시도해 주세요.
커스텀한 챗봇들을 개발하다 보니 계속적으로 중복 반복되는 작업들이 생기기 시작했습니다. 저희처럼 적은 규모의 제한된 자원(두 명..)으로는 그런 불필요한 작업들을 매번 처리하기엔 시간도 많이 걸리고 굉장히 비효율적이었습니다.
그래서 챗봇들을 하나씩 개발하면서 학습된 경험을 토대로 중복되거나 반복되는 작업을 좀 더 효율적으로 처리할 수 있는, 그리고 다양한 메신저 플랫폼을 한 번에 지원해줄 수 있는 방법을 고민하다 자체적으로 자동화가 가능한 챗봇 개발 도구를 개발하기 시작했습니다.
그런데 이게 단순하게 생각할 문제가 아니었습니다. 저희 프로젝트들은 기본적으로 글로벌 서비스를 목표로 진행 중입니다. 그래서 국내 사용자뿐만 아니라 해외 사용자에게도 적합한 환경을 고려하면서 작업을 진행해야 했습니다. 문제는 국가마다 사용자마다 선호하는 메신저 플랫폼이 다양하다는 것입니다. 그러다 보니 다양한 국가 사용자들의 메신저들을 통합 관리를 해야 하는 상황에 이르렀습니다.
문제는 생각보다 복잡했습니다. 우선 각 플랫폼별 지원하는 기능들이 다릅니다. 제공하는 API 가이드라인도 서로 다릅니다. 이걸 통합하는 게 가장 큰 문제였습니다. 가령 버튼 템플릿의 경우 페이스북의 경우 3개까지 지원을 하지만 라인은 4개까지 지원을 합니다. 그리고 캐로셀(스와이프가 되는 리스트) 템플릿일 경우 템플릿 자체를 지원하지 않는 경우도 있습니다. 페이스북이나 라인은 지원을 하지만 카톡이나 텔레그램은 지원을 해주지 않습니다. 그리고 엘러먼트 개수도 차이가 있습니다. 페이스북은 10개 라인은 5개. 이런 식으로 서로 지원하는 양식, 정책 등이 서로 상이합니다.
네 그래서 저희는 한 곳에서 작성하면 다양한 플랫폼에 자동으로 동기화하여 동시에 적용이 가능한 기능을 개발하게 되었습니다. 각 플랫폼별로 지원하는 기능에 한해서 유사한 기능으로 적절히 적용하도록 지원을 해드립니다.
반복에 지치지 않는 자가 성취한다.
미생이라는 만화(드라마도 있죠)를 보면 "반복에 지치지 않는 자가 성취한다"라는 멋진 말이 있더군요. 저희는 지치지 않기 위해 반복되는 작업을 자동화하는데 집중했습니다. BOTGRIDA는 반복되는 작업을 간소화, 자동화했으며 가이드라인이 다른 다양한 플랫폼에 대한 기능 동기화를 진행했습니다.
그렇게 해서 우리는 한 번의 작업으로 다양한 플랫폼에서 동시에 작동이 되는 챗봇 빌더라는 장점을 지니고 있습니다.
이제 빌더를 이용하여 챗봇을 어떻게 설계를 하는지에 대해서 설명을 드리겠습니다.
사용방법을 설명하기 전에 시스템 전반적인 프로세스에 간략히 빌더 시스템 아키텍처를 요약해 보았습니다. 이 부분은 아직 확립된 것보다 개발 단계이기 때문에 추후 수정 보완이 가능한 부분이니 참고해서 봐주시길 바랍니다.
저희는 다양한 설계 방법을 제공해 드립니다. 사용자 편의에 초점을 맞춘 UI를 설계하고 있습니다. 기본적으로 마우스로 간단히 작성이 가능한 UI 기반의 설계 방법과 프로세스를 시각적으로 확인하면서 플로우를 작성할 수 있는 플로우차트 기반 설계 방법을 제공해드리고 있습니다.
사용자가 직접 대화 패턴을 생성/관리가 가능 토록 지원해 주는 기능을 제공해드립니다. 추후 기계 학습 과정을 적용하여 생성된 규칙을 분석하여 더욱더 견고한 결과를 도출할 수 있도록 진행할 예정입니다.
내부 전처리 과정을 통해 문장 내 중요 entities를 추출하여 사용자가 지정한 패턴에 적용하기에 적합한 형태로 제공해드립니다.
다이렉트 메시지 또는 랜덤 한 메시지를 설정하실 수 있습니다.
메시지가 아닌 다음에 시행할 오브젝트를 지정해 줄 수 있습니다.
자체 전처리 과정을 통한 처리 방법도 지원하지만 외부 NLP를 연결하여 처리할 수 있는 기능을 지원해 줍니다.
간단히 저희가 적용한 형태소 분석을 통한 자연어 처리 과정을 테스트해 볼 수 있는 데모 화면입니다.
저희는 형태소 분석 라이브러리 중 가장 빠른 성능을 보인 Mecab을 사용하고 있습니다. stemming을 지원하지 않더라도 전처리 과정에서 커버가 가능하기 때문에 크게 신경 쓰지 않고 있습니다. 우선 기본적으로 속도에 중점을 두고 있습니다.
챗봇 시스템에 있어서 기본적으로 질문에 대한 대답을 기록해주는 시스템이 필요합니다. 이 부분에 대해선 정확한 답이 없기 때문에 충분히 다양한 시도를 통해서 보다 합리적이고 효율적인 방법이 무엇인지 찾고 있습니다.
챗봇을 설계하셨다면 실제 채팅 플랫폼에서 테스트하기 전 웹에서도 시뮬레이션이 가능하도록 에물레이터를 지원해 드리고 있습니다. 기본적인 채팅 인터페이스뿐만 아니라 플로우차트로 흐름을 파악하며 코드를 분석할 수 있는 다중 에디터 툴도 제공해드립니다.
음성인식에 대한 실험도 계속 진행 중에 있습니다.
자체적으로 다양한 API 들을 제공해드리려고 준비를 했습니다. OCR 처리를 지원해드리고 있으며 번역, 날씨정보 위치기반 서비스를 위한 자체 스팟 데이터들을 API로 제공해 드릴 예정입니다.
OCR 라이브러리 - Tesseract
https://github.com/tesseract-ocr/tesseract
Weather API
https://openweathermap.org/api
Translate API
https://cloud.google.com/translate/docs/getting-started
위치정보 데이터 (Tripgrida API)
사용자 통계뿐만 아니라 리퀘스트 콜 통계를 확인하실 수 있습니다. 좌측은 페이스북 통계 그래프이고 오른쪽이 저희 빌더의 통계 그래프입니다. 누락된 값 없이 높은 정확도를 보여줍니다. 그리고 페이스북뿐만 아니라 여러 플랫폼들의 통계를 한 곳에서 확인 관리가 가능합니다.
다양한 플랫폼 Webhook 연결을 간편하게 한 화면에서 처리가 가능합니다.
BOTGRIDA 에선 기업 회원분들이 직접 상품을 등록 판매가 가능한 커머스 기능을 제공해 드립니다.
현재는 시범적으로 실제 챗봇 개발 리소스가 부족한 협력 업체들을(SDSIT - http://www.sdsit.co.kr)
시작으로 단계적으로 진행하고 있습니다. 이와 같이 여행업 뿐만 아니라 다양한 분야의 업체들과 상호 협력하여 체계화된 작업을 진행할 예정입니다.
다양한 채팅 플랫폼을 관리하다 보니 회원 간 통신에 대해서도 고민을 안 할 수가 없었습니다. 그래서 서로 다른 플랫폼 간 통신에 대한 실험도 진행해 봤습니다. 간단히 예제 화면을 통해 서로 다른 플랫폼 간 통신이 가능함을 확인하실 수 있습니다.
앞서 말씀드렸다시피 저희는 다양한 분야에 대한 실험을 진행 중입니다. 비즈니스 영역으로의 확장성에 대해서도 충분한 실험과 시도를 진행하고 있습니다.
다음은 챗봇을 통해 지속적으로 서비스가 가능한 분야가 어떤 것인지 저희가 도전해야 하는 분야에 대해 간략히 설명드리겠습니다. (다음 내용은 저희의 주관적인 생각이 반영되었기 때문에 알고 계신 정보와 다를 수 있습니다.)
컨시어지 서비스라 함은 간단히 말해 호텔 투숙객이 필요로 하는 서비스들을 제공해주는 행위를 의미합니다. (실제로 받아 본 적은 없지만...) 호텔 투숙객들에게 불편하지 않도록 필요로 하는 모든 것들을 해결해 주는 호텔 서비스라고 보면 되겠습니다. ( = 집사?)
기본적으로 호텔 입구에서 짐을 들어주는 것부터 시작으로 신문이나 잡지 제공, 항공권이나 티켓 예약 대행. 공항까지 가는 택시 잡아주기 등 소소한 문제까지 해결해 주는 편의 서비스입니다.
다양한 연계 방법으로 충분히 적용 가능한 새로운 사업 분야라고 생각하며 이미 많은 업체에서 챗봇을 활용한 컨시어지 서비스에 도전하고 있습니다.
컨시어지 서비스의 일부가 될 수도 있겠지만 OTA 개별적으로 서비스에 도입할 도수 있을 것으로 보입니다. 물론 개인 업체에서도 개별적으로 적용이 가능할 수도 있습니다.
외국인 대상으로 하는 로컬 딜리버리 서비스에 유용하게 활용될 것으로 보입니다. 그리고 전화통화가 원활하게 이루어지지 않는 또는 불편해하시는 분들에게도 유용하게 활용될 것으로 보입니다.
가장 큰 이슈인 부분입니다. 상담 같은 경우는 정확한 이해도와 정확한 다량의 데이터가 필요로 하는 굉장히 복잡한 분야라고 생각합니다. 그리고 아직까지 인공지능 수준이 만족할 만 수준이 아님을 감안한다면 아직까지 접근하기 쉽지 않은 분야일 수도 있다고 보이지만 기술은 지속적으로 발전하고 있고 꾸준히 관련 데이터들을 쌓이고 있기 때문에 조만간 우리가 원하는 수준의 기술이 적용된 상담 서비스가 나타나지 않을까 생각해 봅니다. 물론 저희도 꾸준히 기계학습과 같은 전문화된 기술을 도입하여 해당 기술 발전에 조금이라도 힘을 보탤 수 있길 소망해 봅니다.
정보제공은 다양한 곳에 활용이 가능할 것으로 예상합니다. 단순한 회사 소개, 트립그리다 처럼 여행 서비스에 도 적용할 수 있고, 추천 서비스에도 활용이 가능할 것으로 보입니다.
엔터테인먼트로 가장 대표적인 것으로 소셜데이팅 서비스가 있을 것입니다. 챗봇은 기본적으로 채팅 기반으로 시작하기 때문에 조금 더 수월하게 접근할 수 있지 않을까 생각합니다. 저희도 곧 챗봇 소셜 데이팅 서비스를 시범 운영을 할 예정이니 많은 사용 부탁드리겠습니다(은근슬적 홍보..)
위 내용은 새로 추가 중입니다. 이후에 다시 확인 부탁드리겠습니다. 사실 이걸 쓸까 말까 고민하다가.. 그냥 적어 봅니다. 관련 내용은 다시 자세히 재 편집하여 게시하도록 하겠습니다..
다음은 저희가 현재 어떤 카테고리에 속해 있는지 앞으로 어떤 방향으로 진행해 가야 할지에 대해 고민하기 위해 직접 조사하여 작성한 전 세계 봇 생태계 지도입니다.
저희는 참고로 아래의 표에 보이듯 멀티 플랫폼을 지원하는 챗봇 빌더 영역에 포함되어있습니다 ^^;
그리고 위 자료에 있는 기업들의 자세한 설명은 다음에 따로 정리를 해 두었으니 확인하기 바랍니다.
https://brunch.co.kr/@pilsogood/2
百聞不如一見!
자! 그럼 실제 실행 화면을 감상해 보도록 합시다.
지금까지 간략히 발표 내용을 정리해 보았습니다. 저희는 지속적으로 저희가 작업하는 내용들을 정리하여 공개하고 있습니다. 부족하지만 도움을 드릴 수 있는 내용이 있길 바라봅니다.
더 궁금하신 부분이 있으시거나 내용이 잘 못 기입이 되었다면 주저하지 마시고 댓글이나 메일
(pil@tripgrida.com)로 문의하시기 바랍니다. 감사합니다.
개선 버전이 업데이트 되었습니다. 개선된 기능은 다음 브런치 글에서 확인해주세요.
https://brunch.co.kr/@pilsogood/10