Notice
Recent Posts
Recent Comments
Link
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Archives
Today
Total
관리 메뉴

Violet's Devblog

메신저봇 가이드 - 소개 본문

Android/메신저봇

메신저봇 가이드 - 소개

DEViolet 2019. 7. 28. 00:49

연관 문서

메신저봇이란

메신저봇은 카카오톡, 라인, 페이스북 메신저 등 다양한 메신저에 자동으로 응답할 수 있도록 해주는 어플리케이션입니다.

작동 방식

메신저봇은 NotificationListenerService를 통해 알림을 파싱한 후, Rhino JavaScript Engine을 사용하여 사용자가 작성한 자바스크립트로 알림 정보를 전달하여 처리할 수 있도록 합니다. (따라서, 자바스크립트를 모르는 분들은 애석하게도 이 앱을 활용하려면 자바스크립트에 대해 먼저 배우셔야 합니다.)
답장은 최종적으로 WearableExtender를 활용해 하게 됩니다.

스크립트 작성 방법 - 레거시(구형; 신형은 아직 준비중!)

다음과 같이 room, msg, sender, isGroupChat, replier, imageDB, packageName의 순서대로 매개변수를 받는 함수 response를 선언합니다.

/* string room: 방 이름
 * string msg: 메시지 내용
 * string sender: 전송자 이름
 * boolean isGroupChat: 단체채팅방 여부
 * SessionCacheReplier replier: 채팅방의 정보를 담고 있으며, 알림을 받은 채팅방으로 답장을 할 수 있도록 하는 객체
 * - replier.reply(방_이름, 메시지, hideToast = false) 특정 방에 메시지를 보냄.
 *   hideToast는 아직 정보를 얻지 못한 채팅방으로 전송하려고 할 때 발생하는 토스트 경고 메시지를 생략할것인지에 대한 여부, 기본값은 false
 * - replier.reply(메시지) replier가 담고 있는 채팅방에 메시지를 보냄.
 * ImageDB imageDB: 이미지 정보를 담고 있는 객체(후술)
 * string packageName: 알림을 띄운 메신저앱의 패키지 이름 (예컨대, 카카오톡의 경우 com.kakao.talk)
 */
function response(room, msg, sender, isGroupChat, replier, imageDB, packageName){
  if(room == "테스트방"){
    if(msg == "테스트!"){
      replier.reply("답장하는 법 1");
      Api.replyRoom(room, "답장하는 법 2");
    }
  }
}

response함수는 사용자가 알림을 분석하도록 설정한 메신저 앱에서(기본적으로 카카오톡으로 설정되어 있음) 메시지가 포함된 알림을 띄웠을 때 호출됩니다.

주의: replier 객체는 절대 전역변수로 복사해서 안됩니다. 메신저봇은 각각의 메시지를 비동기적으로 처리하기 때문에, 예상치 못한 채팅방으로 답장이 튀어버리는 기이한 상황이 벌어질 수 있기 때문입니다. response함수 밖에서 답장 기능을 사용하려면 Api.replyRoom을 사용하세요.

레거시(구형) API 리스트

해당 문서로 이동

레거시 이벤트 리스너

해당 문서로 이동

Comments