카카오톡 봇 개발하기 #1

in #kr6 years ago (edited)

안녕하세요 @ayogom 입니다.
최근에 봇 개발에 재미를 붙였습니다. 개발자냐고요? 아니요, 개발자는 아니지만 관심이 많습니다.... ㅎㅎ
정상적인 챗봇은 @willpark 님의 포스팅을 참고 하시고요!! 이건 좀 다른 방식입니다

image-1542256669412.png

오늘 소개해 드릴 것은 "카카오톡 봇" 입니다. 다른 메신져와 달리 카카오톡은 API 제공을 안해주고 있어서, 사실 개발에 어려움이 있습니다. 그러다 보니 텔레그램이라든지, 디스코드라든지, 이쪽에서 봇 개발을 많이 하는것 같습니다.
따라서 정상적인 방법은 아니고 약간 편법을 이용한 봇입니다. 저도 부족한 수준이기 때문에 많은 분들이 관심을 가져서 ㅋ 소스 코드를 공유 하고 싶어, 포스팅을 합니다.

개발 환경

안드로이드 5.0 이상

개발 도구

  1. 카카오톡 봇 링크
    image-1542256841676.png
  2. Wear OS 링크
    image-1542257044455.png
  • Wear OS는 카카오톡으로 부터 오는 알림을 잡아주는 역활을 합니다.

개발 시작!

두 프로그램을 설치 하였다면, 카카오톡 봇을 실행합니다. 실행하면 아래와 같은 화면을 볼 수 있습니다.

image-1542257329819.png

  • 현재 저는 동작 중이라 그 부분은 무시 해주세요!

탭은 5가지로 구성이 됩니다
홈 : 동작을 시키는 부분
로그 : 동작 중에 발생하는 기록
테스트 모드 : 샘플로 코드를 확인하는 부분
( 일부 기능이 제한됩니다.)
설정 : 설정
에디터 : 실제 코딩 부분

제일먼저 할 부분은 홈에서 "권한설정하기" 입니다 , 알림 권한 설정을 통해 알림을 체크 할 수 있습니다.

아래와 같이 알림 권한을 켜주세요.
image-1542257529913.png

권한을 키셨으면, 에디터 탭으로 갑니다.


function response(room, msg, sender, isGroupChat, replier, imageDB) {
    /** @param {String} room - 방 이름
      * @param {String} msg - 메세지 내용
      * @param {String} sender - 발신자 이름
      * @param {Boolean} isGroupChat - 단체채팅 여부
      * @param {Object} replier - 세션 캐싱 답장 메소드 객체
      * @param {Object} imageDB - 프로필 이미지와 수신된 이미지 캐싱 객체
      * @method imageDB.getImage() - 수신된 이미지가 있을 경우 Base64 인코딩 되어있는 JPEG 이미지 반환, 기본 값 null
      * @method imageDB.getProfileImage() - Base64 인코딩 되어있는 JPEG 프로필 이미지 반환, 기본 값 null
      * @method replier.reply("문자열") - 메시지가 도착한 방에 답장을 보내는 메소드 */

  
}

//이 아래 6가지 메소드는 스크립트 액티비티에서 사용하는 메소드들
function onCreate(savedInstanceState, activity) {}
function onStart(activity) {}
function onResume(activity) {}
function onPause(activity) {}
function onStop(activity) {}
function onDestroy(activity) {}



실제 코딩이 이뤄지는 부분은 response 내에서 이뤄집니다. 이 response 는 알림이 오면 받아 오는 부분입니다. 여기서 이렇게 써보겠습니다


if (msg == "안녕?") {
 replier.reply("안녕하세요")
}



이번엔 시간을 불러와보겠습니다.

if (msg == "지금 몇시야?") {
var d = new Date();
 replier.reply("현재 시간은 "+d.getHours()+"시"+d.getMinutes()+"분"+d.getSeconds()+"초 입니다.")
}



날짜도 불러와보겠습니다

if (msg == "오늘 몇일이야?") {
var d = new Date();
  replier.reply("오늘은 "+d.getFullYear()+"년 "+(d.getMonth() + 1)+"월"+d.getDate()+"일 입니다.")
}





최종 결과물은?


image-1542258629045.png




참 쉽죠~? 이걸 어떻게 사용 하실지 궁금합니다!! 좋은거 개발 하시면 공유 부탁드릴께요 ㅎㅎ


Sponsored ( Powered by dclick )

dclick-imagead

Sort:  

franciscana23님이 ayogom님을 멘션하셨습니당. 아래 링크를 누르시면 연결되용~ ^^
roundbeargames님의 Maybe another shitpost | roundbeargames | hitmanchoi

... todos en Steemit y a continuar con el apoyo para lograr que ayogom c0ff33a, good-karma, noblewitness, steempeak, therealwolf se...

재밌어 보이네요. 저도 함 해봐야겠어요.

Posted using Partiko Android

도리안 횽님이 하시면 금방 마스터 하실듯 ㅠㅠ

전 개발엔 관심이 없으니 아곰님이 좋은것 많이 개발해 주세요? ㅋㅋ

독거님 귀욥ㅋㅋㅋㅋㅋ

앗~ ㅋㅋㅋㅋㅋㅋ 귀욥다니!!

무엇을 만들어 드릴까요 ㅋㅋ

알아서답해주는봇이 필요한데 그건음성으로 벌써 나왔나요? 안써본기능이라ㅎ

알아서 답 해줍니다 ㅋㅋ
음성은... 조금 힘들지만,,, 가능합니다!

오호. 좋습니다. ㅎㅎ 보클합니다.

재미있쥬, 2부도 써야겠네요 ㅋㅋ

오 ~ 2부도 기대됩니다. ㅎㅎㅎ

저도 2부가 기대됩니다. 이 시리즈 너무 재미있습니다. (저만 재미있을수도..ㅋㅋ)

정말 열일 하시네여 보클로 응원합니다~

일은 아니지만 ㅋㅋ 2부도 써보겠습니다 ㅎㅎ

우와@!!!!! 개발자도 아닌데... 멋있다 ㅜㅜ

애플에서는 못할까요???

ㅋㅋ 네 애플은 아니되오,, ㅠㅠ
예전에 살짝 햇어요 학교 다닐때 ㅋㅋㅋ

저도 요즘 개발 공부 하고 있는데 ... 진전이 없네요 ㅠ,.ㅠ

이건 해봐야겠습니다. ㅋ

추천 합니다 ㅋㅋ 물론 개발 어플이 좀 개판이라.... 진도좀 나갈라고 하면 막힙니다 ㅠ

17회 몰아주기 이벤트 아차보팅 드립니다.
https://steemit.com/kr/@lucky2/-18--1542281395822
화이팅!!

감솨합니다!!

와우 이거이거 재밌네요!ㅎㅎㅎ
뭔가 유용하게 쓸수 있을것만 같은 느낌!

그쵸 ㅋㅋ 어제 오늘 푹 빠져서 봤는데
재미있습니다 ㅋㅋ 한계가 있긴 하지만 ㅠ

Coin Marketplace

STEEM 0.19
TRX 0.15
JST 0.029
BTC 63315.26
ETH 2668.31
USDT 1.00
SBD 2.79