목적
현재 작성자가 재학중인 학교에서 운영중인 셔틀버스의 시간표를 알려주는 채팅봇을 개발하여 서비스 중입니다. 해당 서비스는 MIT 라이선스의 오픈소스로 오픈하여 모든 학우분들이 자유롭게 기여할 수 있도록 오픈한 상태입니다. 이번에 이렇게 글을 쓰는 이유는 채팅봇으로 할 수 있는 일이 꼭 버스 시간표를 알려주는걸로 끝이 아니라 더 많은 여러 서비스를 만들어 낼 수 있다고 생각하였습니다. 예로 오늘의 학식 알림이, 신입생 안내 봇 등등 여러가지로 확장할 수 있을 것이라 생각하였고 보다 다양한 서비스가 나오길 바라면서 카카오톡 챗봇을 개발하는 기본 과정을 알려주기 위해 약간의 글을 남기게 됐습니다.
들어가기 앞서
- 작성자가 최근 들어서 두벌식 자판에서 세벌식 자판으로 갈아 탔으나 아직 익숙치가 않아 오타가 발생할 수도 있습니다.
- 본 게시물은 파이어베이스, 카카오톡 플랫폼을 이용하여 구현하였으며 추후 각 플랫폼의 정책 혹은 상황에따라 변경사항이 있을 수도 있습니다.
개발 환경
IDE: Intellij 2018.3
Nodejs: 6.11.5
NVM: 0.33.1
Firebase-tools: 3.18.2
OS: MacOS High Sierra
목표
- 카카오톡 플러스 친구를 생성할 것입니다.
- 파이어베이스 프로젝트를 생성할 것입니다.
- 파이어베이스의 Cloud Functions 기능을 이용할 것입니다.
- 카카오톡 API 를 이용해 기본적인 Echo 봇을 개발할 것입니다.
과정
카카오톡 플러스 친구 만들기
- 카카오톡 플러스 관리자 페이지로 접속합니다.
- 우측 상단의 새 플러스 친구 만들기를 클릭합니다.
- 생성하는 카카오톡 플러스 친구의 프로필을 완성합니다.
- 그럼 기본적인 카카오톡 플러스 친구가 완성되었습니다.
파이어베이스 프로젝트 생성하기
- 파이어베이스 홈페이지에 접속합니다.
- 우측 상단의
GO TO CONSOLE버튼을 눌러 콘솔 화면으로 넘어갑니다.
- 새로운 프로젝트 생성하기를 눌러 새 프로젝트를 제작합니다.
- 새로운 프로젝트가 준비되면 대쉬보드가 열리게 됩니다.
파이어베이스 Cloud Functions 프로젝트 셋팅하기
- 위에 보았던 파이어베이스 프로젝트 대쉬보드에서 좌측의 메뉴들 중
Functions메뉴를 선택합니다.
- 화면이 보이면 우측의 시작하기를 눌러 시작 메뉴얼을 참고합니다.
- 자신이 원하는 IDE를 실행합니다. 여기서는 JetBrains 사 의
Intellij를 이용하겠습니다.
- 먼저
Firebase의 명령줄 도구를 설치해야합니다.
- 설치 후
Firebase에 로그인 합니다.
Firebase초기화를 진행합니다.
- 현재 디렉토리 기본 프로젝트로
Echo-Miku를 선택하였습니다.
- 기타 원하는 설정을 진행하였습니다.
- 초기화 설정이 완료되면 프로젝트 디렉토리에
functions폴더와index.js등의 파일이 추가된걸 확인 할 수 있습니다.
index.js파일 안에는 기본적인hello firebase를 출력하는 API가 구현되어 있으며 해당 API를 베포해 보도록 하겠습니다.
기본 환경 테스트 해보기
테스트는 크게 2가지로 나누어 집니다.
- 로컬에서 진행하는 로컬 테스트
- 배포해서 라이브로 테스트 하는 라이브 테스트
로컬 테스트
- IDE 하단의 터미널에 아래의 명령어를 입력후 출력되는 테스트 링크로 접속합니다.
sudo firebase serve --only functions
예시
functions: helloWorld: http://localhost:5000/echo-miku/us-central1/helloWorld
라이브 테스트
- IDE 하단의 터미널에 아래의 명령어를 입력후 출력되는 테스트 링크로 접속합니다.
firebase deploy --only functions
예시
✔ functions[helloWorld]: Successful create operation.
Function URL (helloWorld): https://us-central1-echo-miku.cloudfunctions.net/helloWorld
기본 카카오톡 봇 API 서버 구현하기
- 중간 개발 과정 중
cors라이브러리를 사용하였습니다.
cd functions
sudo npm i --save cors
sudo npm i --save express
본 소스에서 중요시 봐야하는 부분은 2가지로 keyboard, message가 되는데
keyboard 는 사용자가 채팅방에 채팅을 치려 할때 어떤 형식으로 메시지를 보낼껀지 정하는 API가 됩니다.
- 위 소스를 보면 현재 Type는 Text 형식의 메시지를 받을 수 있게끔 하라는 메시지를 리턴하도록 구현 되어 있습니다.
message 는 사용자가 봇에게 메시지를 보냈을 시 해당 메시지를 받고, 그에 맞는 처리를 한 뒤 메시지를 리턴하는 API가 됩니다.
- 이번 목표는 에코 봇이기 때문에 사용자가 입력한 메시지 그대로 반환하고 있습니다.
카카오톡 플러스와 연결하기
- 다시 카카오톡 플러스 관리자 페이지로 돌아와 좌측 메뉴 중, 스마트 채팅의 API를 선택합니다.
- 여기서 이번에 직접 구현한 에코 봇의
Endpoint주소를 입력하고 저장합니다.
예시
url: https://us-central1-echo-miku.cloudfunctions.net/v1
- 뒤로 나와 API 채팅 시작을 눌러줍니다.
- 이후 카카오톡에서도 검색 가능하도록
관리 > 상세설정으로 들어가 공개 설정을 ON 합니다.
써보기
- 직접 원하는 말을 적어서 전송하면 같은 말을 반환하는 것을 확인 할 수 있습니다.
마무리
아주 기본적인 채팅봇을 개발하였습니다. 이외에도 여러가지 플랫폼에서도 봇을 개발 할 수 있는데 작성자는 최근 카카오와 라인 플랫폼에서 동시에 지원하는 프로젝트를 개발중에 있습니다. 그 과정도 어렵지 않은 덕분에 개발에 시간을 쏟기 보다는 어떤 서비스가 이용자들이 원하는지에 더 기울여 볼 수 있게 되었고 그런 봇들이 계속 생겨남에 따라 생활속 일들을 자동화 시켜주어 편리하게 해주고 있습니다.
우리 모두 각자의 다양한 봇을 만들어 봅시다.