logo

메신저봇R로 카카오톡 챗봇 만들기 기초

2024-09-18Updated 2026-03-093 min read·
#kakao
#chatbot
#messenger-bot-r
#android
#javascript
#tutorial

메신저봇R을 활용하여 카카오톡 오픈 채팅방 챗봇을 만드는 기본 가이드

Summary

메신저봇R 앱을 활용하여 카카오톡 오픈 채팅방에서 작동하는 챗봇을 직접 만드는 기초 가이드이다. 디스코드 봇과 유사하면서도 접근성이 좋은 카카오 챗봇의 개발 환경 설정, 기본 스크립트 작성, 메시지 수신/응답 구현 방법을 다룬다.

Intro:

현재 많은 정보를 얻고 있는 카카오톡 오픈 채팅방에 챗봇이 존재한다. 한 멤버분이 만들어 주셨는데, 디스코드봇을 연상시키면서도 접근성이 좋아 편리해보였다. 어떻게 만드나 궁금해 하던 도중 직접 해보기로 했다.

PodlyBot 프로젝트

이 튜토리얼을 바탕으로 만든 PodlyBot은 안드로이드 공기계에서 24/7 운영되는 카카오톡 LLM 챗봇이다.

주요 기능

  • LLM 대화: 단체 채팅방에서 즉시 호출 가능한 GPT 기반 대화 기능
  • URL 자동 요약: 채팅방에 공유된 URL을 자동으로 감지하고 내용 요약
  • Notion 자동 정리: 요약된 내용을 Notion 데이터베이스에 자동 저장
  • 개인 워크플로우 최적화: 유용한 URL을 카톡으로 보내면 자동으로 정리되어 나중에 Notion에서 확인 가능

기술 스택

  • Platform: 메신저봇R (Android)
  • Language: JavaScript (Rhino Engine)
  • AI: OpenAI GPT API
  • Integration: Notion API, Web Scraping
  • Deployment: 안드로이드 듀얼넘버 공기계

확장 버전: LabQ Bot

회사에서는 PodlyBot을 기반으로 LabQ Bot을 추가로 개발했다:

  • 회사 자체 LLM 서비스 연동으로 고객사 테스트 지원
  • 회사 Notion 워크스페이스에 팀 지식 자동 정리
  • 팀원들의 협업 및 생산성 향상

이 문서는 이러한 봇들의 기반이 되는 메신저봇R 사용법을 다룬다.

메신저봇R

그 과정에 메신저봇R이라는 앱을 사용하는데, 이 앱은 주로 JavaScript를 사용하여 스크립트를 작성한다. Rhino JavaScript 엔진을 기반으로 작동하며, 이를 통해 사용자들이 카카오톡과 같은 메신저 앱의 알림을 처리하고 자동 응답 기능을 구현할 수 있다.

JavaScript 외에도 일부 다른 언어(예: CoffeeScript, Lua)를 지원하지만, JavaScript가 가장 널리 사용되고 기본적으로 권장된다. 메신저봇R의 스크립트 작성 환경은 ECMAScript의 이전 버전을 기반으로 하기 때문에 최신 JavaScript 문법이 모두 지원되지 않을 수 있다.

준비물

  • 안드로이드 공기계
  • 카카오톡 계정(듀얼 넘버)

방법

  1. 카카오톡메신저봇R를 구글스토어에서 다운 받아준다

  2. 카카오톡 듀얼넘버로 인증

  3. 메신저봇R 에서 봇 생성

  4. 아래 메뉴 중 연필 모양 아이콘 선택하여 코드 수정

동작 원리

메신저봇R은 핸드폰에 오는 알람을 기준으로 동작한다. 따라서, 알람이 안오는 경우(카톡방에 들어가있거나, 알람을 끈 경우)는 동작하지 않는다.

코드 설명

기본적으로 여러 함수들이 있을텐데, 가장 메인이 되는 function은 response이다.

function response(room, msg, sender, isGroupChat, replier, imageDB, packageName){
 
}

Parameter을 살펴보자

  • string room: 방 이름
  • string msg: 메시지 내용
  • string sender: 전송자 이름
  • boolean isGroupChat: 단체채팅방 여부
  • ImageDB imageDB: 이미지 정보를 담고 있는 객체
  • string packageName: 알림을 띄운 메신저앱의 패키지 이름
  • SessionCacheReplier replier: 채팅방의 정보를 담고 있으며, 알림을 받은 채팅방으로 답장을 할 수 있도록 하는 객체

Methods:

  • replier.reply(string room, string msg, boolean hideToast = false): 특정 방에 메시지를 보냄
  • hideToast: 아직 정보를 얻지 못한 채팅방으로 전송하려고 할 때 발생하는 토스트 경고 메시지를 생략할 것인지에 대한 여부 (기본값은 false)
  • replier.reply(string msg): replier가 담고 있는 채팅방에 메시지를 보냄

TODO: API V2라는게 있다는걸 찾았다..내가 쓰고있던건 legacy 였고, 여러 카카오톡 챗봇 개발자들이 모여, 새로운 API 프로토콜을 만들었고, V2를 사용하면, 좀 더 깔끔한 코드로 변환 가능해 보인다.

Comments