이 글만을 통해서 간단한 텍스트를 출력하는 카카오톡 챗봇을 만들 수 있습니다.
카카오톡 플러스 친구를 이용합니다.
카카오톡 플러스 친구 생성하기
카카오톡 관리자 센터 페이지로 이동합니다.
플러스친구 만들기를 클릭합니다.
카카오톡 계정으로 로그인을 합니다.
모두 작성하고 확인을 클릭합니다.
Django 설치 및 설정하기
https://tutorial.djangogirls.org/ko/installation/
이곳에 설치 방법이 잘 나와있습니다.
저는 가상환경을 사용하지 않았습니다.
<linux> django 설치하기
~$ pip3 install --upgrade pip
~$ pip3 install django
프로젝트 생성
이제 프로젝트를 생성하겠습니다.
이 내용도
https://tutorial.djangogirls.org/ko/django_start_project/
여기에 잘 나와있습니다.
생성한뒤 폴더나 파일의 이름을 바꾸어선 안됩니다.
$ django-admin startproject [프로젝트 이름] .
마침표 (.) 은 필수입니다.
$ python3 manage.py startapp [어플리케이션 이름]
어플리케이션도 같이 만들겠습니다.
example :
~/project$ mkdir tistory
~/project$ cd tistory/
~/project/tistory$ django-admin startproject mybot .
~/project/tistory$ ls
manage.py mybot
~/project/tistory$ python3 manage.py startapp testest
$ python3 manage.py migrate
이것도 해줍니다.
설정 변경
다음과 같이 변경합니다.
mybot/settings.py
25: # SECURITY WARNING: don't run with debug turned on in production!
26: DEBUG = False
27:
28: ALLOWED_HOSTS = ['*']
* DEBUG는 테스트를 위해선 True, 실제 사용시에는 False로 해두세요. 그냥 False로 해두시는 것을 추천
* ALLOWED_HOSTS=['*']는 모든 아이피를 허용한다는 의미입니다.
mybot/settings.py
31: # Application definition
32:
33: INSTALLED_APPS = [
34: 'django.contrib.admin',
35: 'django.contrib.auth',
36: 'django.contrib.contenttypes',
37: 'django.contrib.sessions',
38: 'django.contrib.messages',
39: 'django.contrib.staticfiles',
40: 'testtest',
41: ]
* 40: 에 어플리케이션 이름을 추가합니다.
mybot/settings.py
108: TIME_ZONE = 'Asia/Seoul'
mybot/urls.py
16: from django.conf.urls import include, url
17: from django.contrib import admin
19: urlpatterns = [
20: url(r'^testtest/', include('testtest.urls')),
21: url(r'^admin/', admin.site.urls),
22: ]
16: include 를 추가합니다.
20: 를 추가합니다. testtest/로 온 요청은 testtest/urls.py로 보내겠다는 의미
testtest/urls.py
1 2 3 4 5 6 7 8 9 | from django.conf.urls import url from . import views urlpatterns = [ url(r'^keyboard/', views.keyboard), url(r'^message$', views.answer), ] | cs |
* mybot/ 경로가 아닌 testtest/ 경로입니다.
* 위 소스그대로 복사해서 파일을 만듭니다.
코드 작성하기
개발환경 : UBUNTU 16.04.3
개발언어: PYTHON 3.5.2
텍스트/코드 에디터: ATOM
testtest/views.py를 수정해주는 것입니다.
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | from django.shortcuts import render from django.views.decorators.csrf import csrf_exempt from django.http import JsonResponse import json def keyboard(request): return JsonResponse({ 'type':'buttons', 'buttons':['오늘','내일'] }) @csrf_exempt def answer(request): json_str = ((request.body).decode('utf-8')) received_json_data = json.loads(json_str) datacontent = received_json_data['content'] if datacontent == '오늘': today = "오늘 급식" return JsonResponse({ 'message': { 'text': today }, 'keyboard': { 'type':'buttons', 'buttons':['오늘','내일'] } }) elif datacontent == '내일': tomorrow = "내일 급식" return JsonResponse({ 'message': { 'text': tomorrow }, 'keyboard': { 'type':'buttons', 'buttons':['오늘','내일'] } }) | cs |
8에서 13라인은 카카오톡에 버튼 정보를 보내는 부분.
15부터 48라인은 각 버튼에 대한 응답 내용.
카카오톡 플러스 친구 설정 및 실행, 테스트하기
관리자 센터에서 스마트채팅으로 들어갑니다.
api형 설정하기를 클릭합니다.
앱 이름, 앱 URL, 앱 설명을 작성합니다.
알림받을 전화번호는 카카오톡 가입에 사용한 전화번호를 사용하세요.
앱 URL은 자신의 서버URL을 사용합니다.
$ python3 manage.py runserver port
여기에 사용한 포트 그대로 사용
http://자신의아이피:포트/디렉토리
그리고 api테스트를 클릭하여 정상적으로 작동하는지 확인합니다.
그리고 API형 저정하기를 누릅니다.
시작하기를 눌러서 서비스를 시작합니다.
이제 모바일 카카오톡에 들어갑니다. (모바일 기기에서 진행하세요.)
플러스친구 채팅으로 이동해서
버튼이 잘 뜨는지 확인하고 버튼을 눌렀을때 정상적인 응답이 오는지 확인합니다.
다음은 급식 파서를 활용한 카카오톡 챗봇을 만들겠습니다.
'Project > Programming' 카테고리의 다른 글
[Python] Python으로 디스코드 봇 만들기 (4) - 맴버 관련 기능 추가하기 (5) | 2018.03.30 |
---|---|
[Python] Python으로 카카오톡 봇 만들기 (2) - 급식 파서 활용하기 (14) | 2018.02.22 |
[Python] Python으로 카카오톡 봇 만들기 (1) - 봇 생성부터 테스트까지 (25) | 2018.02.21 |
[Python] Python으로 디스코드 봇 만들기 (3) - 부가적 기능 추가하기 (5) | 2018.02.19 |
[Python] Python으로 디스코드 봇 만들기 (2) - 급식 파서 활용하기 (0) | 2018.02.19 |
[Python] Python으로 디스코드 봇 만들기 (1) - 봇 생성부터 테스트까지 (76) | 2018.02.19 |
-
나도만들고싶다 2018.04.16 20:05
안녕하세요 저도 카카오봇을 만드려고 하는데요
이런식으로는 화면에 띄워지는데
from django.http import HttpResponse
def keyboard(request):
return HttpResponse("Hello, world. You're at the polls index.")
왜
from django.http import JsonResponse
def keyboard(request):
return JsonResponse({
'type': 'buttons',
'buttons': ['오늘', '내일']
})
은 플러스친구에서
Required*
keyboard Fail 415
wrong keyboard initialization
이런 에러를 내나요? ㅠㅠ 아직 초보자라서 친절히 설명해주셨으면 좋겠어요 ㅠㅠ -
나도만들고싶다 2018.04.17 20:13
제가 파이참과 django2.0.4 버젼을 사용합니다.
<setting.py>
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'globalHaksik',
]
<urls.py>
from django.contrib import admin
from django.urls import path, include
from globalHaksik import views
urlpatterns = [
path('admin/', admin.site.urls),
path('globalHaksik/', include('globalHaksik.urls')),
]
<globalHaksik\urls.py>
from django.urls import path
from . import views
urlpatterns = [
path('keyboard/', views.keyboard),
]
이렇게 했습니다. -
eubee 2018.05.14 23:01
파이썬 2 버전으로 만들었는데 똑같이 testtest/views.py를 써두 되나요? 아니면 다르게 써야할 명령어가 따로 있나요??
elif에서 밑줄로 오류가 난다고 뜨는데 어떻게 해결해야 할까요..?
-
이기백 2018.05.22 14:32
M4ndU님
저도 질문 하나 여쭤보고 싶습니다. 일단 게시글 너무 잘보았구요! 정말 도움 많이 되었습니다.
궁금한 점은 자신의 서버 ip는 한마디로 공인 ip가 필요한 것이지요? AWS나 pythonanywhere과 같이 무언가 서버를 실질적으로 갖고 있어야만 쓸 수 있는 것이죠? 위 게시글 그대로 따라한다고 되는 건 아니지요?
제 생각에는 많은 분들이 실패하시는 부분이 서버 ip에서 실패하실 것 같은데, 제 생각이 맞을지 모르겠네요. 아직 초보라.....
M4ndU님은 어떤 식으로 서버 ip를 사용하신 건지 궁금하네요! 추상적으로라도 좋으니... 조금 방향을 제시해주시면 감사하겠습니다! -
nuttingon@naver.com 2018.07.03 16:06
특정 단어를 입력 했을 때 구글 스프레드 시트의 특정 문자열을 띄우게 할 수 있을까요???
-
캔따개 2018.07.30 10:31
게시물 너무 잘 봤습니다 상세하게 알려주셔서 너무 감사합니다.
제가 지금 aws ec2환경에서 저 게시물을 따라햇는데 키보드 오늘 내일은 나오고 버튼을 눌렀을때 응답하는 함수가 작동하지 않은것같습니다 혹시 어떻게 할지 알려주실수 있으신가요? -
캔따개 2018.07.30 15:32
print("1") 을 넣고 테스트를 하려는데
print를 넣고 실행하면 서버가 실행이 안되네요 죄송하지만 어디에다가 넣으면서 테스트를 해야될까요? -
다둥빠 2018.08.27 13:18
안녕하세요, 제가 파이썬을 활용하여 만들려고 하는데,
URL 에서 막혀서 그러는데, URL을 어떻게 만드는지 혹시 알 수 있을까요??
-
test 2018.09.04 00:26
좋은 강좌 잘 보았습니다.
저는 구글에서 제공하는 가상 리눅스 환경에서 작업중인데 프로젝트와 애플리케이션 설정 후
'설정 변경하기'에서 막힌 상황입니다.
리눅스 환경에서는 별도의 IDE를 사용하지 않고 콘솔에서 직접 수정해야 하는지,
코드 수정은 어떻게 하는건지 (Vi 명령어 사용하면 되나요..!? 초보라 죄송합니다.) 알려주시면 감사하겠습니다! -
onetop 2018.09.10 13:34
django 2.0 부터 urls 파일의 구문이 바꼈네요
프로젝트
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('smcbot/',include('smcbot.urls')),
]
앱
from django.urls import path, include
from . import views
app_name = 'smcbot'
urlpatterns = [
path('keyboard/', views.keyboard),
path('message',views.answer),
]
안에 이름은 알아서 수정하세요 -
no2. 2018.12.29 00:13
플러스친구 스마트채팅에서 API가 사라졌네요.
https://center-pf.kakao.com/
새로 만들어진 챗봇쪽으로 해야 할까요?