문서 조회수 확인중... Show 1. 개요 2. 작동 원리 4. 구동 앱 목록 5. 봇 목록 6. 유의사항 7. 논란 및 사건사고 7.1. 나는 원숭이다. 사건 7.2. 대규모 정지 사태 7.2.1. 나는 원숭이다. 대규모 정지사태 7.2.2. 2021년 3월 3일 대규모 정지사태 7.3. 카카오톡 알림 구조 변동으로 인한 오작동 8. 여담 1. 개요[편집]카카오톡 봇은 프로그래밍할 수 있는, 스마트폰 메신저 카카오톡에서 사용 가능한 자동 응답 기능을 가리키는 말이다. 줄여서 '카톡봇'. 보통은 카카오톡의 채팅방의 한 종류인 오픈채팅방에서 사용하지만 일반 단체 채팅방이나 1:1 채팅방에서도 사용할 수 있다. 원래는 카카오에서 공식 지원하는 기능이 아닌 사설 앱을 사용하여 유저들이 만들어 쓰던 기능만 존재했는데, 2020년 7월 21일 공식 오픈채팅 봇이 생겼다. 이름은 방장봇[1] 으로, 아래에 쓰여진 봇 설명의 경우 이 방장봇이 아닌 유저 제작 봇을 주로 설명하니 참고할 것. 주로 카카오톡에서 쓰이지만, 다른 메신저 앱에서 지원하기도 한다. 주의 : 현재 본 문서에서 다루는 내용은 카카오톡의 공식 API를 이용한것이 아닌 비공식적인 방법을 이야기 하고 있다. 2. 작동 원리[편집]먼저, 카카오톡과 카카오톡 봇 구동 어플[2] 이 필요하다. 안드로이드 7.0 미만일 경우엔 Wear OS by Google[3] 앱의 설치도 필요. 봇 앱의 (상단바) 알림 읽기 기능을 켜면, 봇 앱은 안드로이드의 'NotificationListener' 기능을 이용해 지정된 패키지의 앱[4] 이 보내는 알림을 읽어온다. 그러면 자바스크립트[5] 로 작성된 스크립트 내부의 'response'라는 이벤트 리스너[6] 가 호출된다. 이때, 알림에서 읽어온 방 제목, 보낸 이, 메시지 등이 매개변수로 넘어오고,[7] 봇 스크립트 'response' 함수 내부에서 채팅 데이터를 처리한다. 자동 응답의 경우 'replier.reply'[8] 함수가 호출되면 봇 앱은 설정된 메시지로 답장한다.[9] 3. 제작 방법[편집]자세한 내용은 카카오톡 봇/제작법 문서를 참고하십시오. 제작에 앞서, 카카오톡 봇의 대부분은 자바스크립트[10] 를 사용하기 때문에 되도록이면 자바스크립트의 기본 개념을 학습하고 봇 개발을 시작하는 것을 추천한다. 그러나 코딩 없이 간단하게 봇 기능을 설정할 수 있는 앱도 있기에, 초심자의 경우 이런 류의 앱을 사용해도 나쁘지 않다. 봇 앱의 종류는 후술. 그리고 카카오톡 봇을 개발하는 것은 많이 활성화가 되어 있지 않아서 유튜브에 있는 카카오톡 봇 강좌는 찾아보기 힘들며, 있다고 해도 대부분 매우 기초적인 과정만 강의하고 무엇보다 영상의 품질이 떨어진다. 그러면 영어로 구글링을 하면 되는 거 아닌가? 할 수 있는데, 카카오톡이 해외에서는 듣보이므로 당연히 의미가 없다(...) 구글이나 네이버, 다음과 같은 국내 포털사이트에서 봇 관련 강좌를 검색하면 내용이 일부 존재하므로 이를 따라하며 시작해도 좋다. 하지만 이 역시 정보의 수가 많지 않으므로 복잡한 코딩을 하고자 한다면 자바스크립트에 대한 이해가 필수. 다만, 2020년 초부터 꾸준히 내용이 추가되고 있는 카카오톡 봇을 위한 카카오톡 봇 문서가 존재한다 제작 방법의 경우 봇 구동 앱별로 차이가 있지만, 대부분 앱 내에서 스크립트를 생성하여, 자바스크립트를 통해 코딩하고, 이를 활성화하면 된다. 코딩 방법의 경우도 앱마다 차이가 있으므로, 앱의 이름을 확인하고 강좌를 찾아보기 바란다. 그 외 방식 이는 자바스크립트 방식과는 다르게 PC카톡 클라이언트의 메모리를 후킹하여 메시지를 캡처하는 방식으로 반응속도가 빠르며 자가응답이 가능한 특징이 있다 그 후 제작자 레스는 개발했던 PC카톡 API를 정리하여 2019년도에 공개하였다 4. 구동 앱 목록[편집]단순 자동응답[12] , 자바스크립트, 커피스크립트, 루아, 라코스크립트[13] , Visual Basic, IceBlock.js[14] 를 사용하여 개발할 수 있는 카카오톡 봇 앱이다. 메신저봇의 후속 버전이다. 메신저봇보다 더 많은 기능을 지원하며, 현재 가장 많이 쓰이는 봇 앱이다. 2021년 4월 21일경, 플레이 스토어
정책 위반으로 플레이 스토어에서 삭제되었다. 2021년 6월 13일에 복구가 완료되었다. 위에 나열된 앱 말고도 지금은 더 이상 한국 플레이 스토어에 뜨지 않거나, 게시되지 않은 앱 등이 존재한다. 5. 봇 목록[편집]5.1. 팬다 Jr. 봇 및 방장봇[편집]자세한 내용은 팬다 Jr. 봇 문서를 참고하십시오. 자세한 내용은 방장봇 문서를 참고하십시오. 상술했듯이 카카오톡 앱 내에 리소스로 존재하며 공식적으로 운영하는 봇이다. 앱 내에 내장되어 있기 때문에 반응속도가 굉장히 빠르며 유저들의 디컴파일도 이뤄지고 있다. 2018년부터 2년 전(2020년 7월)까지는 당시에는 정식으로 추가된 기능은 아니었으며, 오픈채팅 방들 중에 랜덤으로 등장하다가 7월 21일부터는 신설방 포함 모든 오픈채팅 방에서 활성화 가능 버튼이 등장한다. 기존에는 팬다 Jr. 봇이 등장했는데, 패치 이후 봇 활성화 시 방장봇이 대신 등장한다. 단, 팬다 Jr. 봇을 미리 활성화해둔 상태라면 계속 팬다 Jr. 봇을 이용할 수 있다. 기능으로는 반응할 메세지와 그에 대한 답변을 설정하는 기능과 시간 알림, 환영 메시지만 존재한다. 이마저도 10개 제한이 있으며, 개마다도 글자 수 제한이 있다. 환영메세지에는 공지 글 바로가기 버튼을 넣을 수 있는 기능이 있다. 이 점을 제외하면 현재는 유저 제작 봇의 기능이 훨씬 뛰어난 셈. 챗 데이터를 공식 api로 얻을 수 없기 때문에 아직까지 의미있는 봇은 아니다. 6. 유의사항[편집]위의 작동방식에서 알 수 있다시피 카카오톡의 상단바 알림을 읽어와 작동하기에, 카카오톡의 알림을 끄거나 봇을 구동시킬 기기에서 봇을 구동시킬 계정으로 카카오톡 채팅방에 접속하고 있으면 알림이 표시되지 않아 작동하지 않는다. 카카오톡 본계정으로 봇을 돌리기엔 무리가 있으므로 공기계나 노트북에서 봇을 돌리거나, 삼성 듀얼메신저[16] 나 보안폴더 앱 또는 App Cloner 등의 앱 복제 앱으로 동일한 기기에서 돌리는 등의 방법등이 있다. 단 복제된 카톡의 패키지명이 기존의 카톡 앱 패키지 명과 동일할 경우, 봇 구동 앱이 원본 카톡과 복제된 카톡을 구분하지 못하여, 두 카톡 모두 봇으로 구동되는데, 이는 봇을 구동할 계정의 카카오톡 채팅방 이름을 특수하게 변경한 후, 그 이름을 가진 방에서만 작동하도록 코딩하거나, 아예 본계정쪽의 카톡 알림을 꺼버리는 방법이 있다. 부계정을 사용할 경우 투폰 서비스 등으로 번호 하나를 발급받거나, 가상번호 사이트나 Talkatone 등의 앱을 이용해 인증용으로 해외 가상번호를 발급받아 계정을 만들면 된다. 해외 가상번호의 경우 계정 생성 시 이용자 보호조치에 걸릴 수 있는데, 이 경우에는 다른 사람들로부터 선 채팅을 여러번 받으면 해결된다. 그리고 절대로 eval 함수를 봇 안에 쓰지 말자. 정 쓰고 싶다면 기능으로 만들더라도 자신만 쓸 수 있게 만들거나, 구동 기기에 영향을 줄 요소를 싹 다 막아놓고 만들는 것이 좋다. 자세한건 eval 문서 참조. 수신 채팅과 응답 내용과 또 그 채팅을 보낸 사람도 같은 내용의 응답 봇을 보유하고있으면 무한으로 도배가 가능하다. 예를 들어, '안녕'이라는 단어가 포함된 채팅에 '안녕'이라는 내용이 포함된 채팅으로 반응하는 자동 인사봇이 둘 이상 있는 상태에서 누군가가 '안녕'이라는 문구가 포함된 인사를 하면, 처음에는 두 봇 그 사람의 인사에 반응하지만, 그 직후부터는 서로의 안녕이라는 말에 반응하며 채팅방을 도배하는 일이 벌어진다. 이는, 인사봇 뿐만 아니라, ㅋㅋ와 같은 채팅을 보내면 따라서 웃는 기능, 비속어 감지[17] 와 같이, 다른 예시들도 존재하며, 이처럼 동일한 기능을 가진 봇이 둘 이상 있으면 무한 루프가 일어나는 기능을 포함하고 있는 봇의 가동을 금지하는 채팅방들도 존재한다. 7. 논란 및 사건사고[편집]7.1. 나는 원숭이다. 사건[편집]2020년 5월 22일 여러 카카오톡 오픈채팅방에서 우와 ㄷㄷ 이거 눌러봐요라는 문구와 버튼이 포함되어 있는 카카오링크로 이루어진 어떤 메시지가 전달된다. 문제는 그 메세지에 있는 버튼을 누르면 자기는 메세지를 보내지 않았지만, 나는 원숭이다. 라는 메세지가 자동으로 보내진다는 것이다. 해당 분야에 대하여 잘 모르는 사람들의 입장에서는 본인의 계정이 해킹당했다고 생각을 하였을 가능성이 높다. 카카오톡에서 재빨리 이에 대해서 사실이 아니라고 반박하였다.
# 이것이 정체는 카카오톡에서 사용하는
프로토콜인 LOCO 프로토콜과 호환되는 라이브러리를 사용하여, 정상적인 카카오톡 클라이언트인 척 카카오 서버를 속이는 방식으로 전송된 채팅이다. 을 이용한 것으로, 지금은 막혔다.[20] 이 사건으로 많은 사람들이 카카오톡 봇에 흥미를 느끼기 시작하였고[21] , 카카오톡 봇에 대한 부정적인 인식이 나온 것이다. . 심지어, 이를 이용하여 금전적 이익을 취하는 사람들까지 존재한다. 지금도 가끔 코무에서 비판을 받곤 하다. 7.2. 대규모 정지 사태[편집]7.2.1. 나는 원숭이다. 대규모 정지사태[편집]위에 문단에 있는 내용 그대로 진행후, 대규모 정지사태가 벌어졌다. 7.2.2. 2021년 3월 3일 대규모 정지사태[편집]2021년 3월 3일, 카카오톡 봇 계정 및 계정 소유자의 본계정이 대규모로 정지당하는 사태가 벌어졌다. 이는 현재진행형이다.[23] 대상은 외국번호, 즉 가상번호를 사용하는 부계정으로 추측된다. 대다수는 봇을 운영하는 부계정만 정지당하고 끝나지만, 본계정도 정지당하는 위험이 있다. 7.3. 카카오톡 알림 구조 변동으로 인한 오작동[편집]7.3.1. 카카오톡 9.7.0 업데이트[편집]방 이름이 저장된 곳이 바뀌어서, 봇 구동 앱들이 방 이름을 불러오지 못한다 옛날에는 방 이름이 'android.summaryText'라는 key로 담겨있었다. 이후에 정확이 언제인지는 알 수 없는 시점에는 방 이름이 방 이름이 'android.subText'라는 key로도 담겨있기 시작했다. 하지만, 2021년 2월 21일에 출시된 카카오톡 9.7.0부터 안드로이드 11 이상에서는 알림이 다르게 출력되도록 변경되었는데, 그
변동사항 중 하나가 'android.summaryText'라는 key가 사라지고, 'android.subText'라는 key만 남았다. 옛날부터 존재하여 업데이트되고 있던 메신저봇과 채팅 자동응답 봇은 'android.summaryText'에서 방 이름을 꺼내왔기 때문에 안드로이드 11 이상에서는 방 이름을 불러오지 못하고 모두 1:1 채팅방으로 처리되었다. 또한, 안드로이드 11부터는 채팅을 보낸 상대방의 프로필 사진이 들어가있는 곳에 방 아이콘이 들어가도록 변경되어 채팅을 보낸 상대방의 프로필 사진 역시 불러오지 못하고 있다. 채팅 자동응답 봇은 개발자의 깃허브에 대응 패치가 적용된 베타 버전이 올라오고, 메신저봇은 공식 카페에 직접 알림을 파싱하는 방식으로 작동하는 대응 소스가 올라왔으니, 해당 방법을 통해 해결할 수 있다. 7.3.2. 카카오톡 9.7.5 업데이트[편집]응답을 보내는 동작이 삭제되어 채팅이 와도 응답을 보내지 못한다 안드로이드 앱 개발을 할 때, 상단바에 뜬 알림에서 어떠한 동작을 할 수 있게 해주는 것이 존재하며, 카카오톡의 알림을 예로 들자면 "채팅이 수신된 채팅방으로 응답을 보내는 동작"이 알림에 담겨있어서, 웨어러블 디바이스 등을 통해 카카오톡 채팅을 보낼 수 있는 것이다. 알림을 기반으로 작동하는 봇 구동 앱이 처음 개발되었을 때부터 존재하던 동작이 있고, 이후에 카카오톡에 업데이트되면서 동작 두 가지가 추가되어 총 3가지 동작이 알림에 담겨있었다.
그런데, 카카오톡 9.7.5부터 "원래부터 있던 동작"이 사라졌다. 메신저봇은 이미 중간에 추가된 동작들도 사용하는 방식을 통해 처리를 해두었기에 응답 전송이 가능했지만, 채팅 자동응답 봇의 경우는 원래부터 있던 동작만을 사용하였기에 봇 자체가 작동하지 않는 현상이 발생하였다 8. 여담[편집]
[1] 베타 테스트 당시 이름은
팬다 Jr.이다.[2] 여러 어플이 있었으나, 현재는 대부분의 어플이 카카오톡 측에서 이름 등에 'Kakao'가 들어갔다는 이유로 구글에 신고되어 내려간 상황이다. 정확히는 어플은 남아있으나, 한국 Google Play 에서는 검색이 되지
않는다.[3] 또는 삼성 웨어러블도 가능하다[4] 안드로이드는 각 앱마다 '패키지명'이라는 고유한 이름이 있다. 이 패키지명이 같은 앱은 내부 구조가 완전히 달라도 동일한 앱으로 인식하기에, 어떤 앱에서 알림을 전송했는지 구분이 가능하다. |