그동안 카카오톡 봇 관련 글을 쓰면서 이론적인 내용이나 코드만 담았을 뿐
실제 결과물을 사진으로 넣은 적은 없어서, 결과물 스크린샷을 기록하고자 한다.
카카오톡 봇을 개발하다보면 메신저봇 이라는 핸드폰 어플리케이션 안에서 코딩을 하고 디버깅을 해야하는데,
폰코딩이라는 것이 생각보다 쉽지가 않았다.
그래서 핸드폰 화면을 컴퓨터에 띄워두고 컴퓨터로 코딩하는 것을 떠올렸다.
삼성의 경우 samsung flow 라는 앱이 그 기능을 지원해주었다.
근데 이 앱은 정말 말 그대로 핸드폰 화면을 컴퓨터에 그대로 출력해주는 앱이라
모바일에서 화면 사이즈때문에 한번에 볼 수 있는 정보량이 제한된다는 단점이 그대로였다.
그리고나서 알게된 Dex는 정말 최고였다. 역시 삼성..
핸드폰 환경을 컴퓨터에 맞게 옮겨서 실행시켜주는 프로그램이다.
코딩도 테스트도 너무 편하게 할 수 있고,
컴퓨터-핸드폰 간 파일전송도 단순 드래그앤드롭으로 가능해서 너무 좋았다.
그래서 덱스를 이용해 테스트 결과를 올리고자 한다.
우선 실제 상황에 적용해보니 5초라는 타이머는 너무 짧아서 타이머를 30초로 늘렸다.
"리테스트" 라는 메세지를 보내자 커맨드봇이 "악!!" 으로 대답한다.
(모든 대답은 악!!으로 통일합니다.)
그 후 send_time 객체의 정보를 출력한다.
"리테스트" 라는 메세지에 대한 타이머는 2020년 10월 18일 1시 16분 58초 0 까지 작동한다.
이후 "ㄱㄱ" 라는 메세지를 보내자
send_time 객체의 내용이 2020년 10월 18일 1시 17분 0초 410 으로 갱신된다.
첫 메세지를 받은 후 30초가 흘러 2020년 10월 18일 1시 16분 58초 24가 됐을 때
(정확히 30초 후가 아닌 30.024초 후에 메세지를 보냈다.)
메세지를 보낼 수 있는지 체크하자 "false"값이 나온다.
두번째 메세지 때문에 send_time이 갱신되었기 때문이다.
두번째 메세지를 받고 30초가 흘러 2020년 10월 18일 1시 17분 0초 422 이 되고
메세지를 보낼 수 있는지 체크하자 "true"값이 나온다.
카카오톡 부계정을 활용해 나에게 메세지를 보내 테스트해보았다.
여러개의 메세지를 한번에 보냈지만
마지막 문자에만 답장하는 모습을 보인다.
취침 안내 문구는 조금 수정해서 메세지를 남겨달라는 말을 추가했다.
물론 메세지를 30초내로 남기지 않는다면
안내 메세지를 30초 후 또 받게 된다ㅋㅋ
안내문구를 여러번 보내지 않도록하는 알고리즘을 고민중이라
생각이 나는대로 구현할 계획이다.
이번엔 타이머를 중간에 잘 끌 수 있는지 확인해보겠다.
명령어는
"타이머 확인" / "모두 확인" / "(방이름) 확인"
3가지이다.
각각의 기능은
타이머 확인 => 한번이라도 등록되었던 타이머들의 상태를 보여준다.
모두 확인 => 모든 방의 타이머를 해제하고, 타이머들의 상태를 보여준다.
(방이름) 확인 => (방이름)의 타이머를 해제하고, 타이머들의 상태를 보여준다.
현재는 내가 보낸 메세지를 띄어쓰기 단위로 잘라서
각 단위 별로 문구를 체크하는 방식으로 작동한다.
지난 학기 수업을 들었던 교수님의 표현을 빌려 포현한다면,
과거 초창기 인공지능의 방식처럼 일일히 모든 경우를 if문으로 분기해주는 방식으로 작동한다고 할 수 있다.
구체적인 알고리즘은
1. 받은 메세지를 띄어쓰기 단위로 나눠 배열에 저장한다
2. 배열의 크기가 2보다 큰지 체크한다.
3. 인덱스 1번의 값이 "확인" 인지 체크한다.
4. 인덱스 0번의 값에 따라 기능을 수행한다.
(타이머 or 모두 or 그밖에 다른 것들)
(추가)
실생활에 사용되는 예시이다.
인증번호로 오는 문자와 SKT고객센터 안내문자에도 자동응답 타이머가 걸리고
타이머가 풀리면 알림 카톡을 보낸다.
모두 확인 명령어를 통해서 자동응답을 해제해준다.
=========================================
내가 궁극적으로 원하는 것은 내가 만든 봇과 평범한 잡담을 나누는 것이다.
그래서 좀 없어보이더라도 어떻게든 대화투로 명령어를 만들고 싶었고,
고민 끝에 타이머 조작 명령어를 위에 적었던 것처럼 만들었다.
그런데 잡담을 하고자 하니 결국엔 자연어처리 알고리즘이 필수라서 성공할 수 있을지는 모르겠다.
검색해보니 한국어는 어순이 정해진게 없어 자연어처리가 더 어렵다고 들었던 것 같다.
현재 막연하게 드는 생각은
띄어쓰기와 조사를 착실하게 지켜주며 대화한다는 전제를 둔다면
모든 말에 if문 분기를 달지 않고도 대화가 가능하게 할 수 있지 않을까라는 생각이다.
안되면 열심히 if문 분기를 남발하는 수 밖에..
'개인 프로젝트 > [2020] 카카오톡 봇' 카테고리의 다른 글
[카카오톡 봇 만들기] 3. 카카오링크 전송하기(2) : 코로나 현황 웹 크롤링 (0) | 2020.10.22 |
---|---|
[카카오톡 봇 만들기] 3. 카카오링크 전송하기(1) : 테스트 & 봇 기능 수정 (3) | 2020.10.22 |
[카카오톡 봇 만들기] 2. 명령어로 조작하기(2) : 알고리즘 구현(2) (2) | 2020.10.16 |
[카카오톡 봇 만들기] 2. 명령어로 조작하기(2) : 알고리즘 구현(1) (0) | 2020.10.15 |
[카카오톡 봇 만들기] 2. 명령어로 조작하기(1) : 알고리즘 설계 (0) | 2020.10.12 |