본문 바로가기

Technology

슬로워크의 식스맨, mrslo 봇 개발기



슬로워커의 궁금증을 풀어주고 있는 친구, mrslo는 간단한 명령에 반응하도록 만들어진 슬랙봇입니다. (왜 봇 이름이 mrslo일까요? 바로 슬로워크의 캐릭터인 Mr. Slo에서 유래했기 때문입니다.) 커뮤니케이션 도구를 라인 메신저에서 슬랙으로 바꿀 때, 슬랙에는 슬랙봇이라는 재밌는 기능이 있었습니다. 간단한 명령어와 대답을 쌍으로 입력해 두면 마치 대화처럼 응답을 받을 수 있는 기능이었죠. 이어서 hubot이라는 오픈소스프로젝트로 비슷한 기능을 만들 수 있다는 걸 알고, 탄생한 것이 바로 mrslo입니다. 조금은 심심한 탄생배경에 실망하셨을 지도 모르지만, mrslo에 대해 하나하나 알아보겠습니다. 


mrslo 가르치기 


mrslo에게 뭔가 물어보려면 미리 알고 있는 것들이 있어야겠죠? 물론 알파고처럼 스스로 정보를 찾고 학습할 수 있다면 참 좋겠지만요. 아직은 부족한 mrslo에게 무언가를 가르쳐야 합니다. 어떻게 가르칠까요? 슬로워크에서는 작은 게시판 형태로 개발된 웹서비스를 이용합니다. 임시도메인인 mrslo.heem.net으로 접속을 하고 회원가입/로그인을 하면 명령어를 입력할 수 있습니다. 즉, mrslo를 학습시킬 수 있습니다. 모두에게 열린 mrslo였다면 좋겠지만, 아쉽게도 슬로워크 이메일계정(@slowalk.co.kr)을 가진 사람만 가입할 수 있습니다 :)






mrslo에게 물어보기 


가르친 내용을 물어봐야 할 때는 그냥 슬랙에서 mrslo를 부르고 물어보면 됩니다. 물론 해당 채널에 mrslo가 들어와 있어야겠지요. 당연히 개인 대화에서도 질문, 명령이 가능하답니다. 





mrslo는 무엇으로 만들었을까요?


mrslo는 대략 4가지 정도의 기술 스택으로 이루어져 있습니다. 메시징 서비스인 슬랙, 오픈소스 프로젝트인 hubot, 간단한 응답 서버, 명령 등록 서비스가 그것입니다. 하나씩 알아보겠습니다. 


hubot


hubot은 공식 웹사이트의 설명처럼 ‘회사에서 쓰는 봇'입니다. 즉, 회사에서 흔히 있는 반복 작업, 단순 업무를 줄여주는 목적으로 개발된 것이죠. 간단한 스크립트로 명령을 등록해 놓으면, 연락처, 주소처럼 갑자기 생각나지 않는 단답형의 질문을 할 수 있습니다. 매 시간마다 실행되는 주기적인 작업도 가능하고, 사용자에게 알림을 줄 수도 있습니다. 사용 방법에 따라 무궁무진한 기능을 가질 수 있는 멋진 봇입니다. 다만 설치가 까다롭고 수행할 명령을 만들려면 어려운 개발 용어를 이해하고, 스크립트를 공부해야 하죠…





슬랙


최근 각광 받고 있는 멋진 메시징 도구입니다. 대화, 파일 전송은 물론 다양한 채널을 개설할 수 있고, 대화 내용의 갈무리도 가능합니다. 하지만 슬랙의 진가는 다른 서비스와의 연계(integration)입니다. 일정 관리 도구, 버전 관리 도구, 다른 메신저 등 수 없는 서비스들과 연계가 됩니다. 이를 통해 사용자는 기존의 사용하고 있는 도구와 쉽게 연동시켜 슬랙이라는 하나의 채널로 업무를 관리할 수 있게 되었습니다. 





명령 등록 서비스


명령 등록 서비스는 직접 만들어야 합니다. 보통은 hubot에 미리 단답형 응답을 등록해두고 씁니다. ‘주소’ -> ‘서울시 종로구 통의동 6’ 처럼 말이죠. 하지만 많은 구성원의 많은 요구를 그때그때 모두 등록하기엔 어려움이 있습니다. 그래서 온라인의 게시판처럼 구성원 각자가 직접 명령을 등록하고 수정할 수 있도록 했습니다. 사용 방법은 아주 간단합니다. 1) 회원 가입을 하고 2) 명령을 등록 한다 3) 명령을 테스트 해본다. node.js와 express로 백엔드를, bootstrap으로 프론트엔드를 구성하였습니다. 





응답 서버 


위의 명령 등록 서비스와 연동된 서비스입니다. 슬랙에서 mrslo에게 질문을 하면 응답 서버에 질문을 던지고, 미리 등록된 명령이 있다면 확인하여 응답을 사용자에게 돌려줍니다. 명령 등록 서비스의 한 부분입니다. ‘가위바위보’와 같은 특수한 명령은 조금 다른 방식으로 동작하게 되고, 해당 명령어가 없다면 유사한 명령을 찾아서 알려주는 역할도 합니다.

mrslo 서비스 구성도




마치며


“슬랙에서는 직접 만든 봇을 연동할 수 있다” 라는 말을 듣고 작은 호기심에서 시작한 프로젝트지만 구성원들의 업무에 조금이나마 보탬이 되었으리라 생각이 듭니다. 지난 얼마 간의 사용 통계를 보면 역시 ‘점심뭐먹지’가 제일 많네요. 아직 갈 길이 멀다는 이야기겠죠? 앞으로 mrslo봇은 업무를 진행하는데 도움이 되는 기능들을 추가해갈 계획입니다. 또한 다른 좋은 서비스들과 연계하여 더욱 편리한 도구로 발전시켜가고 싶습니다. 

지금 계신 곳에서 슬랙을 쓰고 계시다면, 귀여운 봇하나 장만하시면 어떨까요?



참고

- Slack에서 Hubot 사용하기

- hubot-slack module 



by 북극곰 발자국