All Articles

카카오 카페 봇

banner

  • (거의 2년 전 이야기라 기억이 가물가물 합니다)
  • (개발 적인 내용은 거의 없습니다 ㅈㅅ)

어쩌다가 시작했나

저는 카카오에서 봇플랫폼을 만들고 있습니다. 바로 카카오 i 오픈 빌더로 봇을 만들어서 카카오톡 채널(옛날의 플러스친구)에 연결할 수 있는 플랫폼인데요. 아직 많이 부족하지만 꾸준히 기능 개선을 하고 있습니다. 이와 관련된 내용은 나중에 기회가 되면 소개하면 좋겠네요.

서비스를 만들 때 중요한 것 중 하나는 개밥먹기입니다. 자기가 만든 것을 직접 먼저 써보는 것이죠. 저는 사실 봇만드는 것을 좋아했습니다. 중학생 때 게임 길드 멤버가 모여있는 IRC에서 작동하는 봇을 만들었는데 지금도 봇을 만들고 있으니 운명이라면 운명이고.. 덕업일치라고도 볼 수 있겠네요.

제가 저희 플랫폼으로 처음에 만들었던 봇은 소녀전선 정보를 제공하는 봇이었습니다.

소녀전선이미지

어느 정도 동작하게는 만들었습니다만 자료 채워넣기가 힘들더라구요. 카페에서 자료 올려주시는 분이나 유명한 사이트와 협업하여 만들고자 컨택 했습니다만 다들 고사하셔서 결국은 유지를 포기했습니다.

사내에 봇 만들기 데모를 했을 때 야한 일러스트에 덕후 게임이라 그런지 욕도 먹었습니다. 지금은 알려주는 시오리 땅(프리코네) 채널이 제일 활성화 된 것 같네요.

다음 개밥의 타겟을 찾아보다가 아침마다 사내 카페에 길게 줄 서서 커피를 주문하는 동료들을 보게 되었습니다. 저도 줄서기 싫어서 커피 마시기는 싫고 일찍 출근할 수는 없고 붐비는 시간대 피해서 가곤 했습니다. 그리고 진동벨을 받은 후 사무실에가서 일하다가 진동 울리면 음료받으러 가야했거든요. 이게 너무 불편하고 귀찮았어요. 시간아깝고.

그런데 가만 생각해보니 봇을 붙이면 간단하게는 진동 기능만 카톡으로 받을 수도 있고 더 나아가서는 주문까지 봇으로 할 수 있게하면 좋겠는데? 하는 생각이 들어 아이디어를 가볍게 스케치 해서 당시 사내 카페 및 회사 살림(..)을 담당하는 gwen에게 한번 보여드렸는데 괜찮다는 의견을 받았어요.

스케치이미지

POS기계와 연동만 될 수 있다면 충분히 구현 가능한 내용들이었습니다. 거기에 사람들의 구매, 주문 패턴 데이터까지 모아서 더더더 재미있는 것들도 할 수 있을 것이구요. 그러다가.. POS 업체 재계약 시점이 왔고 회사에서는 계약 조건에 API 제공을 걸어 두었습니다. 그리고 그렇게 계약을 맺은 업체는 제가 기억하기로 국내에서 세손가락? 다섯손가락 안에 드는 큰 업체였습니다.

시작

이제 본격적으로 시작할 수 있겠더라구요. 혼자 하기엔 부담이 있어 지금은 네이버로 가버린 동료 medivh와 위에서 말한 gwen과 그리고 skt에 가신 ellen과 짬짬히 만들기 시작했습니다. kotlin + spring boot와 mongodb 로 구성했고 당시 사내에 구축되어있던 marathon에 자동 배포되도록 세팅했습니다. 저는 큰 틀에서 리딩과 이것 저것 코딩, 메디브는 사내 주문 정보와 연동하는 작업위주로 하..는줄 알았지만 결국 이것 저것 다 닥치는대로 작업 했어요.

구상은 간단했지만,

1. 주문을 카카오톡에서 대화 시작
2. (인증 생략)
3. 주문메뉴를 열어서 음료 선택
4. 확인
5. 톡으로 푸시 알림
6. 수령

이것 외에 생각보다 디테일이 많이 필요 했습니다. 주문 관련 서비스를 진행해본적이 없으니 완전히 바닥부터 시작했어요.

장바구니에 물건 담는 것부터 사용자가 픽업을 완료할 때 까지 하나의 주문이라 정의하고 각각의 상태를 정의했습니다. 그 이후로 사용자가 물건을 담을 때, 주문이 들어갔을 때, 카운터에서 주문을 승인했을 때, 음료 제조가 완료 되었을 때, 픽업을 했을 때 마다 상태를 변경했습니다.

주문이 완료 되었을 때 알림을 보내는 것은 알람 정보를 redis에 넣어놓고 분단위로 체크하며 적절한 시점에 count 깍으면서 발송했습니다.

그리고 기본적인 기능 외에도 이달의 카페 주문 왕이라던지.. 가장 많이 팔린 메뉴라던지.. 재미있는 기능을 많이 준비하고 있었어요.

스케치이미지

이름이 “까까오” 인 것은 ‘카카오’는 채널 이름 회사명이 들어갈 수 없다는 룰에 걸려서 바꾼 것입니다. 덕분에 이런 저런 봇 만들 때 까까오로 많이 만들었습니다.

그러던 와중..

오다가 내려오다

어느날 갑자기 높은 분이 부르시더니 6월까지 개발을 마무리 해야한다고 말씀하셨습니다. ?? 그냥 사이드 프로젝트였는데 말이죠. 이야기를 들어보니.. 6월에 사내 카페 업체가 변경되고 변경되며 카페봇도 같이 오픈되었으면 하는 저어기 많이 높은 분의 의지가 있으시다는 말씀이셨어요.

찍힌 날짜까지 한달 정도 여유 시간이 있었습니다. 그래서 엄청 달렸어요.

스케치이미지

사이드프로젝트에서 메인으로 전환되고 제 리소스를 온전히 쏟아 부었습니다. 더불어 주변 분들의 많은 도움을 받기 시작했습니다. 제가 존경하는 martin에게 봇 시나리오에 대해 조언도 받고 개발자적인 디자인, 문구인 봇에 디자인쪽의 ruah가 봇 아이콘과 이미지들을 만들어주셨습니다. 인프라 세팅이나 외부 업체와의 조율도 시니어분들이 도움을 주셔서 너무 감사했어요.

우여곡절 끝에 오픈하는 주의 직전 주말 저녁에 최초로 테스트용 POS 기기에서 봇으로 주문한 영수증을 뽑았습니다.

스케치이미지

시간을 보시면.. 새벽 2시 10분입니다

그리고 오픈을… 카페 변경과 동시에는 못하고 1주 뒤에 오픈 했습니다.

스케치이미지

유지보수

오픈 후 큰 문제는 없었지만 사용자들의 기능 개선 요청을 지속적으로 받아 조금씩 업그레이드 해나아 갔습니다.

스케치이미지

이렇게 아지트 그룹을 하나 만들어서 기능 개선과 버그제보를 받았습니다. 예를 들면 사람들이 많이 쓰는 약어들을 추가하는 작업이 있습니다. 아메리카노아메리로 부른다던지 따아라던지..

스케치이미지

자주 마시는 메뉴를 바로 주문할 수 있게 한다던지

스케치이미지

후기

결과적으로 잘 되어서 영광스럽게도 매우 높은분에게 보고하는 자리도 가질 수 있게 되었어요. 아쉬운건 이걸 사외 카페에도 적용시킬 수 있다면 좋을 것 같아 건의를 하고 싶었는데 이미 저도 모르게 판이 짜여져 있더라구요.

그래서 짜게 식었습니다.

추가 기능 구현은 그래서 못하고 손을 놓았어요. 다음 POS 업체 파트너였던 나우버스킹과 협업은 꼭 해보고 싶었는데 못하게되어 아쉬웠습니다. 그래서 지금은 다른쪽에서 관리해주고 계세요. 제대로 마무리 못한 것 같아 미안합니다.

얻은건?

스케치이미지

작지만 서비스 오픈 경험이죠. 당시 (지금도 마찬가지지만)서비스 오픈, 운영 경험도 없고 개발자로서도 대단하지 않아 쉽게 생각 했습니다만 실제로 개발하다보니 디테일이 꽤 많이 들어가더라구요. Happy scenario 도 많이 보강해야했고 이 외에 정말 다양한 예외 케이스들이 많았어요.

현실적인 문제도 많이 봉착했었습니다. POS 업체에서 제공해주는 API가 굉장히.. 그러니깐.. 일반적으로 웹쪽에서 사용하는 형식과 많이 달랐습니다. 협업도 굉장히 힘들었구요. 그래서 나중에 나우버스킹쪽으로 업체를 바꿨습니다. 나우버스킹은 굉장히 세련된 API 제공과 커뮤니케이션이 정말 좋았습니다.

괜찮은 아이템이 있으면 나가서 사업을 해야겠다는 생각도 들었구요

카카오를 소개하는 아이템 중 하나가 된 것 같기도 하구요. 브런치에 소개되기도 하고 외부 사람 카카오 방문할 때 자랑했던 유튜브 영상도 본 것 같아요. 엘리베이터 탔을 때 봇으로 주문하시는 동료분들 보면 괜히 뿌듯합니다.

medivh도 그때 개발했을 때 굉장히 행복했다고 해요. 저도 마찬가지지만 오너쉽이 있는 상태에서 무언가를 만들 때 제일 기쁘고 열정이 있는 것 같습니다.