Intro:
현재 많은 정보를 얻고 있는 카카오톡 오픈 채팅방에 챗봇이 존재한다. 한 멤버분이 만들어 주셨는데, 디스코드봇을 연상시키면서도 접근성이 좋아 편리해보였다. 어떻게 만드나 궁금해 하던 도중 직접 해보기로 했다.
메신저봇R
그 과정에 메신저봇R이라는 앱을 사용하는데, 이 앱은 주로 JavaScript를 사용하여 스크립트를 작성한다. Rhino JavaScript 엔진을 기반으로 작동하며, 이를 통해 사용자들이 카카오톡과 같은 메신저 앱의 알림을 처리하고 자동 응답 기능을 구현할 수 있다.
JavaScript 외에도 일부 다른 언어(예: CoffeeScript, Lua)를 지원하지만, JavaScript가 가장 널리 사용되고 기본적으로 권장된다. 메신저봇R의 스크립트 작성 환경은 ECMAScript의 이전 버전을 기반으로 하기 때문에 최신 JavaScript 문법이 모두 지원되지 않을 수 있다.
준비물
- 안드로이드 공기계
- 카카오톡 계정(듀얼 넘버)
방법
동작 원리
메신저봇R은 핸드폰에 오는 알람을 기준으로 동작한다. 따라서, 알람이 안오는 경우(카톡방에 들어가있거나, 알람을 끈 경우)는 동작하지 않는다.
코드 설명
기본적으로 여러 함수들이 있을텐데, 가장 메인이 되는 function은 response이다.
1
2
3
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 였고, 여러 카카오톡 챗봇 개발자들이 모여, 새로운