현재 카카오톡 봇은 간단한 내 비서역할을 수행중이다.
잘때는 잔다고, 수업들을 떈 수업듣는다고 알려주는 정도이다.
나는 여기에 새로운 기능을 추가했다.
알람이 온 뒤로 30분뒤에도 답이 없다면
상대방에게 나 대신 봇이 답을 해주는 기능이다.
(답을 해준다기보다는 일방적인 안내메세지에 가깝다..)
타이머 기능을 이용해 구현해봤고, 나쁘지 않게 작동하였다.
그런데 치명적인 문제가 있었다.
알람이 온뒤로 바로 읽지는 않았지만, 30분이 지나기 전에 읽어서 답장을 한 경우
나는 분명 읽어서 답장했는데, 30분이 지나면 타이머에 의해 답장이 보내진다.
안타깝게도 메신저봇에는 수신한 메세지를 감지하여 자동 답장을 할 뿐이기 때문에,
내가 임의로 보낸 메세지를 감지한다거나, 읽지 않은 메세지가 사라지는 것을 감지하는 기능은
내가 아는선에서는 없었다.
내 추측일 뿐이지만, 내가 임의로 보낸 메세지를 감지하거나, 읽지 않은 메세지가 사라지는 것을 감지하는 것은
안드로이드 시스템 자체 기능이 아닌 카카오톡 앱 내부 기능이라
카카오톡 앱 자체를 뜯지 않는 이상 외부에서 감지하는 것은 불가능할 것 같다고 생각한다.
그래서 실제 업무처럼 봇을 활용하는 걸 떠올려봤다.
친구에게 톡이 오면, 봇이 그걸 나한테 알려준다.
내가 봇에게 확인했다고 알려주면 봇이 체크해서 30분뒤에 알람이 가지 않도록 하는 것이다.
친구에게 톡이 올때마다 일일히 봇에게 확인했다고 답장하는 건 불편할지도 모르겠다.
한번에 확인하겠다고 하는 기능을 넣을 수도 있을 것 같고... 여러가지 아이디어들이 떠오르고 있다.
이런 문제는 나중에 처리하기로 하고, 지금까지 생각한 것을 구체적인 순서도로 짜보았다.
봇을 3개를 둔 이유는..
내가 매니저 봇에게 톡을 보내도, 매니저 봇은 타이머를 직접 설정하고 끌 수가 없기 때문이다.
내가 매니저 봇에게 카톡을 보냈다는 것은. 내가 매니저 봇과의 채팅방에 있다는 이야기이고,
그 말은 매니저 봇이 보낸 채팅 알람이 뜨지 않는다는 이야기이다.
따라서 별개루트로 알람을 받아야 한다.
===================================
라고 생각했으나...
이 글을 쓰면서 이 알고리즘을 구현하느라 카톡 부계정을 만들고 테스트하려고 하는데,
공기계 폰에 카톡을 깔았을 때, 듀얼메신저 기능을 사용할 것인지 여부를 물었다.
나는 내가 뭐 별도로 다른 앱을 깐게 있었나 싶었는데...
검색해보니 듀얼메신저 기능이 갤럭시 기본기능이었다!
메신저 앱에 한해 복제를 할 수 있도록 해주어
업무용 폰과, 개인용 폰을 분리해 사용하는 사람들이 편하게 쓸 수 있도록 만든 기능이었다.
여기에서 문득 한가지 호기심이 발동했다.
메신저봇은 "com.kakao.talk" 이라는 패키지를 통해 카톡 알림을 읽는다.
그런데, 만약 복제된 카카오톡이 동일한 패키지를 통해 카톡 알림을 보낸다면?
확인해보기 위해 새로운 구글 부계정을 파서 가상번호를 받아, 카톡 부계정을 팠다.
이용자제한조치는 어차피 상관 없었다.
이 봇은 나와 톡만 할 수 있으면 된다.
만약 복제된 카카오톡이 동일한 패키지로 카톡알림을 보낸다면,
내 카카오톡과 복제된 카카오톡 사이에 친구 추가를 해두고
내가 복제된 카카오톡을 메세지를 보냈을 때,
복제된 카카오톡에서 뜬 알림을 캐치해 반응할 것이다.
1. 공기계를 더 이상 사용할 필요가 없어졌다.
사실 듀얼메신저을 쓰지 않고도 카카오톡은 복제할 수 있었다.
가상공간을 만들어서 그쪽에 설치하는 방법이 있기는 한데,
문제는 배터리소모가 매우 빠르다는 것.
그리고 복제된 카카오톡의 알람은 캐치할 수 없다는 것이었다.
2. 메신저봇을 하나만 쓰게된다.
공기계를 만들어 봇으로 관리한다는 이야기는,
각각의 공기계마다 메신저봇을 깔고, 그 안에 각각 공기계마다 따로 코딩을 해주어야 한다는 뜻이다.
이 얼마나 귀찮고 번거로운 일인가.
하나의 폰에서 이제 하나의 코드로 둘다 컨트롤 할 수 있다.
이 내용을 바탕으로 다시 순서도를 그려보았다.
훨씬 더 간단하게 바뀌었다.
다음에는 이 아이디어를 직접 코드로 구체화 시켜볼 것이다.
실제로 구현을 하다보니 결국은 봇이 3개가 필요하게 됐다.
내가 관리자봇에게 명령을 내려서 조작하려면, 관리자봇에게 들어간 명령이 알림으로 떠야한다.
그 알림의 내용을 통해 스크립트가 실행되기 때문이다.
다만, 기존에 공기계가 3개가 필요했던 것이 2개로 줄어들었고, 봇역할을 하는 계정은 3개가 필요하지만,
메신저 봇 자체는 2개로 충분하게 되어 더 편리해진 것은 맞다.
따라서 듀얼메신저 기능은 유용하게 활용할 예정이다.
'개인 프로젝트 > [2020] 카카오톡 봇' 카테고리의 다른 글
[카카오톡 봇 만들기] 3. 카카오링크 전송하기(1) : 테스트 & 봇 기능 수정 (3) | 2020.10.22 |
---|---|
[카카오톡 봇 만들기] 2. 명령어로 조작하기(3) : 테스트 (0) | 2020.10.18 |
[카카오톡 봇 만들기] 2. 명령어로 조작하기(2) : 알고리즘 구현(2) (2) | 2020.10.16 |
[카카오톡 봇 만들기] 2. 명령어로 조작하기(2) : 알고리즘 구현(1) (0) | 2020.10.15 |
[카카오톡 봇 만들기] 1. 수업시간 / 취침시간 자동응답 구현하기 (0) | 2020.10.10 |