Link Search Menu Expand Document

카카오톡 버전별 변동사항

  • 채팅 자동응답 봇메신저봇 같은 봇 구동 앱들은 카카오톡의 알림을 기반으로 작동하기 때문에, 카카오톡의 알림에 변화가 생기면 정상적으로 작동하지 않곤 해요.
  • 여기선 편의상 채팅이 수신된 방의 이름수신된 채팅 내용, 그 채팅을 보낸 사람을 각각 room, msg, sender로 표기할거에요.
  • 채팅이 수신된 채팅방이 1:1 채팅방인지 아니면 단체 채팅방인지는 isGroupChat으로 표기할거구요.

봇 구동 앱 최초 공개 시점

  • 카톡봇 최초버전이 공개된 시점 이야기에요. 원작자가 깃허브 탈퇴해서 포크 상태가 죰 요상해요.
  • 1:1 채팅방인지 아니면 단체 채팅방인지에 따라 알림 구조 자체가 달랐던 시절이에요.

1:1 채팅방

  • 알림에 roommsg만 각각 따로따로 담겨있었어요.
  • 어차피 1:1 채팅방이니, sender에다가는 room을 넣는 방식으로 처리하면 끝

단체 채팅방

  • room1:1 채팅방과 동일하게 넘어왔는데, msgsender이 한 곳에 함께 담겨서 왔어요.
  • 따라서, msgsender를 분리시기는 과정에서 msg의 뒤에 실제로는 보낸 적이 없는 공백이 붙어서 나오는 경우가 종종 있었지요.
  • 그래서 이 시절에 작성된 봇 소스들을 아래와 같은 부분들이 많이 보일거에요.
msg = msg.trim();

초록봇(현 채팅 자동응답 봇)이 출시되기 직전 시점

  • 안드로이드 6.0 이상에서는 room, msg, sender가 각각 따로따로 담겨서 오기 시작했지만, 안드로이드 6.0 미만에서는 기존처럼 오던 시절이어요.
  • 당시 주로 사용되던 젤브봇이나 수용봇 등은 전부 안드로이드 버전에 따라 다르게 알림을 파싱하도록 하는 대응 패치가 적용되었지만, 모든 키워드에 대한 응답입니다로 유명한 모 자동응답 앱의 경우, 개발자가 안드로이드 파편화 문제라 해결할 수 없다는 잘못된 정보를 퍼트리고 있었구요.

카카오톡 7.2.x

  • 카카오톡 최신버전에서 또 알림 구조가 바뀌었다는 것을 2018년 7월에 확인하였으니, 아마 당시에 최신버전이였던 카카오톡 버전 7.2.x일거에요.
  • 롤리팝(안드로이드 5)에서는 알림 구조가 또 달라져서, 기존 방식으로는 room을 가지고 오지 못하여 모든 채팅방이 1:1 채팅방으로 처리되었어요.
  • 즉, 안드로이드 버전에 따라 나누고, 카톡 버전에 따라 또 나눠야 하는 아주 불-편한 상태가 되었어요.
  • 킷켓(안드로이드 4.4) 이하에서는 애초부터 봇 구동 자체가 불가능하니 해당사항 없음
  • 이후에 카카오톡 7.3.0 미만 버전이 지원 중단되면서 아무튼 해결.

언제인지는 모르겠지만 이 사이 구간

  • 카카오톡 알림에는 Nofitication.Action의 인스턴스가 들어있어요.
  • 대충 알림에서 할 수 있는 동작이 담겨있디고 보면 될거에요. 그 동작채팅이 수신된 채팅방으로 응답을 보내는 행위구요.
  • 원래는 그 Action이 하나만 담겨있던걸로 추정되는데, 언제부턴가 Action이 2개 더 담겨서 총 3개가 되었어요.
  • 원래부터 있던 Action으로는 채팅방에 응답을 보내는 것과, 채팅을 보내지 않고 읽음으로 처리하는 것이 가능하고,
  • 새로 추가된 Action 1으로는 채팅방에 채팅을 보내지 않고 읽음으로 처리하는 것만 가능하며,
  • 새로 추가된 Action 2로는 채팅방에 응답을 보내는 것만 가능해요.

카카오톡 9.7.0

  • 알림 구조가 변경되었어요.
  • 신기한 점은, 만능톡은 대응 패치가 없었음에도 알림을 잘 파싱하고 있어요.

안드로이드 11 이상

  • room이 담겨있던 곳이 다른 곳으로 바뀌었어요.
  • 모든 채팅방이 1:1 채팅방으로 처리되면서 isGroupChat은 항상 false고, room에는 방 이름 대신 sender가 담겨있는 상황이 벌어졌어요.
  • 알림의 아이콘도 기존에는 채팅을 보낸 사람의 프로필 사진이 들어가 있었지만, 방 아이콘이 대신 들어가기 시작했어요.
  • 따라서, ImageDB.getProfileImage();와 같이, ImageDB를 통해 채팅을 보낸 사람의 프로필 사진과 관련된 정보를 가지고 오려고 하면 프로실 사진이 아니라 방 아이콘을 기준으로 처리되기 시작했구요.

안드로이드 11 미만

  • room기존에 담겨있던 곳에도 담겨서 오고, 새로 바뀐 곳에도 담겨서 오기 때문에, 딱히 변한건 없어요.
  • 알림 아이콘도 그대로라 ImageDB와 관련된 것도 그대로구요.
  • 애초에 카카오톡 업데이트 내역부터가 알림센터 내 미리보기 개선 (Android OS 11 이상)였어요.

해결 방법

  • 채팅 자동응답 봇의 경우, 대응 패치가 적용된 버전 5.0 베타가 공개되었어요.
  • 메신저봇의 경우, 아직 대응 패치가 적용된 버전이 공개되지는 않았으나, 앱 사용자가 직접 알림을 파싱하는게 가능하기 때문에, 사용자가 직접 알림을 파싱해서 해결할 수 있어요. 이 부분을 클릭해보세요.

카카오톡 9.7.5

  • 아까 위애서 언급한 원래부터 있던 Action이 사라졌어요.
  • 따라서, 카톡이 와도 카톡 알림을 파싱해서 채팅이 온 것을 인식하는 동작 자체가 작동하지 않기 시작했어요.
  • 지금까지는 채팅 수신 인식 관련된 부분이 바뀐거였는데, 이번에는 응답 전송 부분이 바뀐거에요.
  • 물론, 봇 구동 앱 개발자가 새로 추가된 Action 두 가지를 사용해서 어케어케 하면 해결할 수 있어요.

해결 방법

  • 채팅 자동응답 봇의 경우, 대응 패치가 적용된 버전 5.0 베타 2가 공개되었어요.
  • 메신저봇은 이 변동사항에 영향을 받지 않아요.
  • 하지만, 카카오톡 9.7.0에서의 변동 사항을 고쳐주는 소스채팅 자동응답 봇의 소스를 기반으로 작성되었기 때문에 영향을 받으니, 이 부분을 클릭해보세요.

Back to top

© 2018 - 2024 Dark Tornado, All rights reserved.