Python으로 카카오톡 플러스친구 만들기
-목차-
Python으로 카카오톡 플러스친구 만들기 -1-
Python으로 카카오톡 플러스친구 만들기 -2-
Python으로 카카오톡 플러스친구 만들기 -3-
Python으로 카카오톡 플러스친구 만들기 -4-
-목차-
Python으로 카카오톡 플러스친구 만들기 -1-
Python으로 카카오톡 플러스친구 만들기 -2-
Python으로 카카오톡 플러스친구 만들기 -3-
Python으로 카카오톡 플러스친구 만들기 -4-
본 튜토리얼은 카카오 Plusfriend Open API종료로 신규 생성이 불가합니다!조만간 연재되는 카카오i 플러스친구 Skill 튜토리얼을 참고해주세요-2018/12/19-
저번 내용
플러스친구 관리자센터에 연결해 keyboard함수 동작 확인해보기!
message함수를 써보자!
이번에 할 내용
버튼마다 응답메세지를 다르게 해보자
사용자를 구별해보자
버튼별 응답메세지를 다르게 설정해보자
저번 목차에서는 message
함수를 통해 사용자가 버튼을 누를 때 응답하는 것을 만들었습니다.
하지만 모든 버튼에서 동일한 메세지가 나왔는데요
이번에는 사용자가 누른 메세지마다 다른 응답을 하도록 만들어보겠습니다.
app/views.py
을 열어주세요.
from django.shortcuts import render
from django.http import JsonResponse
from django.views.decorators.csrf import csrf_exempt
def keyboard(request):
return JsonResponse(
{
'type': 'buttons',
'buttons': ['학식', '내일의 학식', '시간별 학식']
}
)
@csrf_exempt
def message(request):
return JsonResponse(
{
'message': {
'text': 'Input the sentence that you want.'
},
'keyboard': {
'type': 'buttons',
'buttons': ['학식', '내일의 학식', '시간별 학식']
}
}
)
(저번 튜토리얼까지 잘 따라오셨다면 app/views.py
에는 이렇게 적혀있을겁니다)
이번에는 message
함수만 다룰 것입니다.
def message(request):
라고 되어있는데 우리는 request
라는 파라미터(매개변수) 안에 담긴 정보를 꺼내야 합니다.
먼저 app/views.py
를 열어 아래와 같이json
모듈을 추가하고 message
함수를 적어주세요
from django.shortcuts import render
from django.http import JsonResponse
from django.views.decorators.csrf import csrf_exempt
import json //모듈 추가
def keyboard(request):
return JsonResponse(
{
'type': 'buttons',
'buttons': ['학식', '내일의 학식', '시간별 학식']
}
)
@csrf_exempt
def message(request):
json_str = (request.body).decode('utf-8')
received_json = json.loads(json_str) # JSON파일 디코딩
content_name = received_json['content']
return JsonResponse(
{
'message': {
'text': 'Input the sentence that you want.'
},
'keyboard': {
'type': 'buttons',
'buttons': ['학식', '내일의 학식', '시간별 학식']
}
}
)
json_str = (request.body).decode('utf-8')
는 request 파라미터를 한글호환이 되는 ‘utf-8’로 바꾸어 json_str
변수에 저장합니다.
received_json = json.load(json_str)
은 JSON문자열로 되어있는 것을 Python 타입으로 변경시켜 received_json
변수에 저장합니다.
content_name = received_json['content']
은 사용자가 보낸 명령어에서 필드명이 content
인 항목을 변수에 저장합니다. 이를 통해서 버튼값을 구별할 수 있습니다.
필드명 | 타입 | 필수여부 | 설명 |
---|---|---|---|
user_key | String | Required | 메세지를 발송한 유저 식별키 |
type | String | Required | text, photo |
content | String | Required | 자동응답 명령어의 텍스트 혹은 미디어 파일 uri |
필드명 |
타입 |
필수여부 |
설명 |
user_key |
String |
Required |
메세지를 발송한 유저 식별키 |
type |
String |
Required |
text, photo |
content |
String |
Required |
자동응답 명령어의 텍스트 혹은 미디어 파일 uri |
그럼 content_name
변수를 이용해서 버튼별 메세지가 다르게 나오도록 해보겠습니다.
from django.shortcuts import render
from django.http import JsonResponse
from django.views.decorators.csrf import csrf_exempt
import json
def keyboard(request):
return JsonResponse(
{
'type': 'buttons',
'buttons': ['학식', '내일의 학식', '시간별 학식']
}
)
@csrf_exempt
def message(request):
#button = ['학식', '내일의 학식', '시간별 학식']
json_str = (request.body).decode('utf-8')
received_json = json.loads(json_str)
content_name = received_json['content']
#user_name = received_json['user_key']
#user_name은 사용자를 구별하기 위해 사용됨
#type_name = received_json['type']
#type_name은 사용자가 보낸 값의 속성을 구별(text,photo 등)
if content_name == "학식":
return JsonResponse(등
{
'message': {
'text': '학식을 눌렀습니다.'
},
'keyboard': {
'type': 'buttons',
'buttons': ['학식', '내일의 학식', '시간별 학식']
}
}
)
elif content_name == "내일의 학식":
return JsonResponse(
{
'message': {
'text': '내일의 학식을 눌렀습니다'
},
'keyboard': {
'type': 'buttons',
'buttons': ['학식', '내일의 학식', '시간별 학식']
}
}
)
elif content_name == '시간별 학식':
return JsonResponse(
{
'message': {
'text': '시간별 학식을 눌렀습니다'
},
'keyboard': {
'type': 'buttons',
'buttons': ['학식', '내일의 학식', '시간별 학식']
}
}
)
위의 코드처럼 content_name == '버튼이름'
가 성립한 조건의 내용을 리턴하게 됩니다.
이렇게 뜸을 확인할 수 있습니다!
시간별 학식을 눌렀습니다.
학식을 눌렀습니다.
내일의 학식을 눌렀습니다.
만일 이와 같이 버튼의 내용만 바뀌고 OO을 눌렀습니다
가 출력되는경우에는
content_name
변수를 바로 JSON 리턴값에 넣어주면 됩니다.
(if문을 안쓰며 불필요한 중복코드를 제거할 수 있습니다)
예제를 보겠습니다
from django.shortcuts import render
from django.http import JsonResponse
from django.views.decorators.csrf import csrf_exempt
import json
def keyboard(request):
return JsonResponse(
{
'type': 'buttons',
'buttons': ['학식', '내일의 학식', '시간별 학식']
}
)
@csrf_exempt
def message(request):
#button = ['학식', '내일의 학식', '시간별 학식']
json_str = (request.body).decode('utf-8')
received_json = json.loads(json_str)
content_name = received_json['content']
return JsonResponse(
{
'message': {
'text': content_name + '을 눌렀습니다.' #이 부분
},
'keyboard': {
'type': 'buttons',
'buttons': ['학식', '내일의 학식', '시간별 학식']
}
}
)
'text': content_name + '을 눌렀습니다.'
와 같이 사용할 수 있습니다.
카카오톡 플러스친구 챗봇(자동API)에 대한 기본적인 내용은 어느정도 마쳤습니다.
다음 튜토리얼에서는 사용자가 사진, 음성, 동영상과 같은 파일을 보낼 때 일어나는 오류를 방지하고자
설정하는 방법을 알려드리겠습니다.
'Back-end' 카테고리의 다른 글
Python uwsgi로 서버 배포 (0) | 2018.04.23 |
---|---|
Python으로 카카오톡 플러스친구 만들기 -5- (4) | 2018.01.02 |
Python으로 카카오톡 플러스친구 만들기 -3- (7) | 2017.12.19 |
Python으로 카카오톡 플러스친구 만들기 -2- (7) | 2017.12.17 |
Python으로 카카오톡 플러스친구 만들기 -1- (5) | 2017.12.16 |
댓글