안녕하세요 : )
오늘은 카카오 옐로우 아이디 자동응답 api를 활용하여 개발한 카카오봇 소개를 할까 합니다.
개발 환경은 ubuntu16.04, Django(python)으로 개발했습니다.
kakao Yellow ID : Sejongbot
1. 카카오 옐로우 아이디 만들기
https://yellowid.kakao.com/
이 링크를 통해 들어가면 쉽게 만들 수 있습니다.
카카오 옐로우 아이디를 만든 후 관리자 페이지를 들어가면
이런 화면으로 들어갈 수 있습니다.
스마트채팅 > API형 선택 후 설정 하시면 됩니다. (구글 검색해 보시면 쉽게 하실 수 있습니다.)
이렇게 진행해서 제 서버와 연동 시켰습니다.
자동 api 동작 방식
1. 사용자가 옐로우 아이디의 방으로 접속 함
그러면 카카오톡 측에서 내 서버 http://xxx.xx.xx.xxx/keyboard 경로로 이동함.
2. 내 서버에서 (keyboard) URL에서 응답을 날려줌
keyboard는 말 대로 사용자가 입력할 폼을 얘기 합니다.
text형과 button 형이 있는 것으로 알고 있습니다.
1. urlpatterns 를 이용하여 keyboard로 접속시 views.keyboard 함수로 연결시킨다. (Django)
2. views.keyboard 함수
위와 같이 형식으로 사용자의 입력 폼은 text 로 정의해 줍니다.
(text는 키보드(타자) 폼 입니다.)
이렇게 화면에 보여지게 됩니다.
3. 사용자가 메시지를 보낸다.
사용자가 메시지를 보내면
http://xxx.xx.xx.xx/message 의 URL에 접속하여 응답을 기다립니다.
그러면 위와 같이 message 경로일 때를 만듭니다. views.message 함수로 이동시킵니다.
views.meesage 함수입니다.
저는 입력 받은 값에서 특정 단어를 검색해서
return JsonResponse 를 통해 응답했습니다.
'message' 의 경우 'text' 에 포함된 문장을 전송합니다.
단순 메시지만 보낼 수 있고,
'keyboard'로 입력 폼을 'buttons' 로 변경하여 전송합니다.
(@csrf_exempt는 Django에서 post 값으로 데이터를 전송 할 때 오류를 방지해줍니다.
카카오톡에서 message를 내 서버로 전송할 때 데이터를 post값으로 전송하기 때문에 사용했습니다.)
그러면 위와 같이 keyboard 형식이 text 에서 button으로 변경됩니다.
사용자가 버튼을 클릭하면 학생회관, 군자관, 우정당 중 하나가 message 형태로 다시 전달 됩니다.
그러면 그 message에서 단어를 검사해서 파씽한 데이터를 전송합니다.
return JsonResponse를 통해 return_str에 저장된 데이터를 text 형식으로 전송 , 후에 keyboard type으로는 타자형식으로 전송
그럼 이런식의 대화가 됩니다.
이미지 전송도 가능한데요, 이런식으로 사용합니다.
응답으로는 아래와 같습니다.
이런식으로 간단한 옐로우 아이디 카톡 봇을 만들어 봤습니다.
간단한 날씨 (다음에서 파씽해 왔습니다.)
후기:
엄청 쉽고 간단하게 만들 수 있다.
python 파씽, Django 입문 공부 정도로 하면 좋을 것 같다.
날씨 파씽은 다음이 좋은 것 같다.
짜증났던 것:
gcp 사용했는데 포트 연결 때문에 시간이 좀 걸렸습니다. ㅠ
어쩔 수 없이 django port를 80 으로 맞췄습니다 ㅠ
명령어
$python manage.py runserver 0.0.0.0:80 &
학교 급식 싸이트 파씽하는데 문자열이 공백 탭 등등 섞여 있어서
보기 좋게 정렬하는데 고생함 - (쉽게 하는 법 ? 다음 글로 쓸 예정)
'개발' 카테고리의 다른 글
SNS 검색 플젝(Sherlock)을 분석&개발해보자 [0] (0) | 2019.09.19 |
---|---|
Tor 프록시를 타는 Port Scanner를 만들자. [0] (0) | 2019.07.01 |
DarkWeb Research [1] (4) | 2019.06.07 |
DarkWeb Research [0] (0) | 2019.02.10 |
python 파씽 requests,BeautifulSoup (1) | 2017.09.13 |
댓글