Show Violet's Devblog메신저봇 가이드 - 이벤트 리스너(레거시) 본문Android/메신저봇 메신저봇 가이드 - 이벤트 리스너(레거시)DEViolet 2019. 8. 10. 00:50 연관 문서
response
메신저봇 앱이 사용자가 지정한 메신저 앱의 알림을 성공적으로 파싱했을 경우 호출됩니다. onStartCompile
API를 통해서든 앱의 컴파일 버튼을 통해서든, 컴파일을 수행하고자 할 때 먼저 이 함수가 호출된 후 컴파일을 하게 됩니다.
onNotificationPosted
기기에 알림이 뜰때마다 호출됩니다. statusBarNotification에 대해서는 안드로이드 공식 문서를 확인하세요.
해당 packageName을 가진 메신저앱의 room에 해당하는 방에서 채팅이 왔을 경우, action을 통해 답장을 전송합니다. action값이 주어지지 않는다면, 앱에서 자동으로 읽어들인 action을 사용합니다.
위와 비슷하지만, packageName을 앱에서 자동으로 읽어들인다는 차이점이 있습니다. onCreate
스크립트 액티비티의 onCreate가 호출될 때 잇따라 호출됩니다. onPause
스크립트 액티비티의 onPause가 호출될 때 잇따라 호출됩니다. onResume
스크립트 액티비티의 onResume이 호출될 때 잇따라 호출됩니다. onStop
스크립트 액티비티의 onStop이 호출될 때 잇따라 호출됩니다. Violet's Devblog메신저봇 가이드 - 소개 본문연관 문서
메신저봇이란메신저봇은 카카오톡, 라인, 페이스북 메신저 등 다양한 메신저에 자동으로 응답할 수 있도록 해주는 어플리케이션입니다. 작동 방식메신저봇은 스크립트 작성 방법 - 레거시(구형; 신형은 아직 준비중!)다음과 같이 room, msg, sender, isGroupChat, replier, imageDB, packageName의 순서대로 매개변수를 받는 함수 response를 선언합니다.
response함수는 사용자가 알림을 분석하도록 설정한 메신저 앱에서(기본적으로 카카오톡으로 설정되어 있음) 메시지가 포함된 알림을 띄웠을 때 호출됩니다. 주의: replier 객체는 절대 전역변수로 복사해서 안됩니다. 메신저봇은 각각의 메시지를 비동기적으로 처리하기 때문에, 예상치 못한 채팅방으로 답장이 튀어버리는 기이한 상황이 벌어질 수 있기 때문입니다. response함수 밖에서 답장 기능을 사용하려면 Api.replyRoom을 사용하세요. 레거시(구형) API 리스트해당 문서로 이동 레거시 이벤트 리스너해당 문서로 이동 카카오톡 봇 (JS) [카카오톡 봇 강좌(JS/Coffee/Lua)] 4강. 채팅을 보낸 사람, 방 이름에 따라 작동시키기(?)1강과 3강을 읽고 응용을 해보신 분이라면 이미 알고 있을지도 모르는 부분입니다. 카카오톡 봇 관련 채팅방들을 돌아다니다 보면, 수신된 채팅 내용은 확인할 줄 알면서 누가 보냈는지는 확인할 줄 모르는 사람들이 많습니다. 즉, 1 + 1은 할 줄 아는데, 1 + 2는 할 줄 모르겠다면서 못하겠다고 징징거리시는 분들. 1강에서는 msg와 sender, room이 언급되었습니다. 각각 수신된 채팅 내용과 보낸 사람, 채팅이 수신된 채팅방 이름이라고 했었지요. 3강에서는 특정 채팅에 반응한다면서 msg를 가지고 놓았었습니다. 그러면, 채팅을 보낸 사람과 채팅이 수신된 채팅방은 어떻게 확인할까요? 간단합니다. msg 대신 sender, room을 비교하시면 됩니다. 다음 소스들은 닉네임이 히오스인 사람이 채팅을 보내면 시공을 좋아하냐고 물어보고, 방 이름이 실험방인 곳에서 채팅이 수신되면 특정 채팅방에서 반응한다는 채팅을 보내는 예제입니다. [자바스크립트] function response(room, msg, sender, isGroupChat, replier) { msg = msg.trim(); //아이콘이 초록색인 봇과 Nusty 내장 카톡봇에서는 없어도 됨. if (sender == "히오스") { replier.reply("시공을 좋아하십니까?"); } if (room == "실험방") { replier.reply("특정 채팅방에 반응"); } } [커피스크립트] response = (room, msg, sender, isGroupChat, replier) -> if sender is "히오스" replier.reply "시공을 좋아하십니까?" if room is "실험방" replier.reply "특정 채팅에 반응" 또는 response = (room, msg, sender, isGroupChat, replier) -> replier.reply "시공을 좋아하십니까?" if sender is "히오스" replier.reply "특정 채팅에 반응" if room is "실험방" [루아] function response(room, msg, sender, isGroupChat, replier) if sender == "히오스" then replier:reply("시공을 좋아하십니까?") end if room == "실험방" then replier:reply("특정 채팅에 반응") end end |