카톡봇을 실생활에 적용해 테스트하며 몇가지 문제점들을 발견하여 손을 보았다.
우선 특정 시간이 지난 후 자동응답 하는 기능은 없앴다.
그저 똑같은 말밖에 도배하지 못하는 지금의 카톡봇으로는
메세지를 받는 상대방에게 불쾌함을 주기만 할 것 같았다.
두번째로 취침/수업 알림은 한번만 하도록 하였다.
지난 포스팅에서 구현한대로,
5초이내로 추가 메세지가 없을 경우, 답장을 보내는 시스템은 잘 작동했지만,
실제 핸드폰으로 카톡을 하는 경우, 타이핑이 생각보다 느려서 5초로는 부족했다.
그래서 안내메세지를 계속 보내게 되었다.
시간 간격을 늘리자니, 간단한 메세지를 보내고 답장을 받는데
매번 길어진 시간간격을 기다려야 하니 답답했다.
그래서 그냥 한번만 답장하게 만들었다.
단, 저번에 만든 5초동안 추가메세지를 기다리는 것은 남겨두었다.
상대방이 말을 하고 있는데, 중간에 끊고 안내메세지를 보내면 무안할 것이다.
그래서 타이머 객체대신 안내메세지 전송 여부를 방마다 저장하는 객체를 만들어
안내메세지를 전송하도록 하였다.
단점은, 한번 안내메세지를 전송한다음, 안내메세지를 해제하려면
안내메세지를 받지 않을 시간대에 메세지를 보내야한다는 것.
따라서 전날 내가 자고 있을 때 톡을 해서 안내메세지를 받은 다음
다음날 내가 자고있을 시간대에 다시 톡을 보내면 그때는 안내메세지를 받지 않는다.
전날 안내메세지를 받았던 기록이 그대로 남아있기 때문이다.
이 문제는 안내메세지 전송 시간 간격을 설정해서 해결하려고 생각중이다.
또한 내가 임의로 자는 시간과 일어난 시간을 조절할 수 있게 했다.
명령어는 "나 잔다" 와 "지금 일어났어" 이다.
다음은 테스트 사진이다.
테스트를 위해 지금 내가 자고 있도록 해보겠다.
기본값은 오전0시부터 9시까지가 자는 시간이다.
카톡 부계정으로 톡을 보내자, 상대방이 톡을 다 보낼 때까지 기다렸다가
자고있다는 메세지를 보낸다.
오키도키라는 답장에는 반응을 하지 않는다.
테스트를 마치고 취침시간을 초기화해준다.
아직은 if문으로 메세지를 체크하고 있어서
띄어쓰기 하나까지 맞춰서 정확히 입력해야하지만
비슷한 말들을 인식해서 기능을 구현할 수 있도록 하고 싶다.
=========================================
추가적으로 카카오링크를 전송하는 기능을 넣어보려고 한다.
카카오톡 봇 커뮤니티에는 카카오링크 전송 모듈이 있다.
원래는
카카오톡으로 공유하기 -> 채팅방 선택 -> 카카오링크 전송
이라는 과정을 거쳐야하는데,
이를 자동으로 하게끔 만든 것이다.
모듈과 모듈의 자세한 사용법은 커뮤니티에서 확인할 수 있다.
https://cafe.naver.com/nameyee
다음과 같은 기본틀을 사용한다.
const scriptName = "kakao_link_test";
const kalingModule = require('kaling').Kakao();
const Kakao = new kalingModule();
importClass(org.jsoup.Jsoup);
Kakao.init(''); // 자바스크립트 키
Kakao.login('', ''); // 카카오 계정 아이디와 비밀번호
function response(room, msg, sender, isGroupChat, replier, ImageDB, packageName, threadId) {
if(msg=='테스트'){
Kakao.send(room,
{ "link_ver": "4.0",
"template_object": { "object_type" : "feed",
"button_title": "테스트",
"content" : { "title": "테스트1",
"image_url": '',
"link": { "web_url": "",
"mobile_web_url": "" },
"description": "테스트2" },
"buttons" : [{ "title": "버튼",
"link" : { "web_url": "",
"mobile_web_url": "" }
}]
}
}
);
}
else if (msg == "test")
{
Kakao.send(room, {"link_ver" : "4.0",
"template_id" : 38890,
"template_args" : {}
},"custom");
}
}
복잡한 템플릿 구조를 내가 알아보기 쉽게 내 나름의 규칙대로 들여쓰기 하였다.
카카오 디벨로퍼에 가면 자신이 작성한 템플릿을 카카오링크를 통해 전송시킬 수 있다.
위의 템플릿코드는 내가 임의로 만드는 템플릿.
아래의 템플릿 코드는 카카오 디벨로퍼에서 설정한 템플릿이다.
다음 코드를 이용해 실행한 테스트 결과는 다음과 같다.
위의 템플릿은 내가 코딩으로 디자인한 템플릿이고,
아래의 템플릿은 카카오 디벨로퍼에서 디자인한 템플릿이다.
좌측의 미리보기를 보면 미리보기와 똑같은 디자인으로 전송되었음을 알 수 있다.
다음에는 이 카카오링크와 Jsoup 모듈을 이용해서
웹 크롤링 정보를 카카오 링크를 통해 전송해보도록 하겠다.
'개인 프로젝트 > [2020] 카카오톡 봇' 카테고리의 다른 글
[카카오톡 봇 만들기] 4. 이야기를 들어주는 봇 만들기(1) : 문장분석(1) (0) | 2020.10.25 |
---|---|
[카카오톡 봇 만들기] 3. 카카오링크 전송하기(2) : 코로나 현황 웹 크롤링 (0) | 2020.10.22 |
[카카오톡 봇 만들기] 2. 명령어로 조작하기(3) : 테스트 (0) | 2020.10.18 |
[카카오톡 봇 만들기] 2. 명령어로 조작하기(2) : 알고리즘 구현(2) (2) | 2020.10.16 |
[카카오톡 봇 만들기] 2. 명령어로 조작하기(2) : 알고리즘 구현(1) (0) | 2020.10.15 |