카카오톡 봇만들기(2)
지난 시간 까지 가상머신 구축과 ssh 구축까지 완료하였다. 이번 시간에는 flask
구축을 해보려고 한다.
Flask 설치
- Flask 구축을 하기 위해서는 우선 SSH창을 킨다.
- python 설치을 설치하기 전에 다음과 같은 명령어를 ssh창에서 입력한다.
sudo apt-get install update
sudo apt-get install upgrade
- python 설치를 위해 다음과 같은 명령어를 입력한다.
sudo apt-get install python3
sudo apt-get install python3-pip
- 이제 Flask과 다른 것들을 설치하기 위해서 다음과 같은 명령어를 입력한다.
pip install flask
pip install jsonify
pip install bs4
sudo apt-get install vim
pip install selenium
pip install selenium
pip install requests
- 다음과 같은 파일들을 설치하는데 오류가 발생한다면
pip
version을 업그레드 해주거나 혹은pip3
로 설치해보기를 바란다.
카카오톡 오픈빌더 사용
- 카카오톡 오픈빌더를 사용하기 전에는 반드시 사전 승인이 필요하다. 사전승인이 안되었다면 좀더 기다려보길 바란다.
- 카카오톡 오픈빌더 승인이 났다면 나의 봇에 들어가 봇을 생성하자

- 봇을 만들었으면 시나리오를 추가하여 새로운 시나리오를 생성한다.

- 엔티티를 만들기 전에
카카오톡 오픈빌더
의 스킬에 대해서 알아보자
카카오톡 오픈빌더 스킬사용(응답별 JSON 포맷)
- 이 내용은 위의 링크를 참조하여 작성하였습니다.
- 카카오톡 봇을 만들기 위해서는 이 Flask를 사용하기 전에 이 내용을 숙지해야할 필요가 있다.
- 우리가 사용할 JSON 포맷위주로 살펴보도록 하겠다.
userRequest
- 이 타입은 사용자의 정보를 담고 있다. 사용자의 발화와 시간대/언어, 반응한 블록의 정보를 추가적으로 포함하고 있다.
쉽게 말하면
사용자의 채팅
이라고 생각할 수 있다.
상세필드
필드명 | 타입 | 설명 |
---|---|---|
timezone | string | 사용자의 시간대를 반환합니다.한국에서 보낸 요청이라면 “Asia/Seoul”를 갖습니다. |
block | Block | 사용자의 발화에 반응한 블록의 정보입니다.블록의 id와 name을 포함합니다. |
utterance | string | 봇 시스템에 전달된 사용자의 발화입니다. |
lang | string | 사용자의 언어를 반환합니다.한국에서 보낸 요청이라면 “kr”를 갖습니다. |
user | User | 사용자의 정보입니다. |
상세필드는 이런식으로 이루어져 있다. 하나하나 살펴보자
timezone
은 채팅을 입력한 사용자의 시간대를 가지고 있는 변수이다.block
은 자세하게 모르겠는데 카카오톡 오픈빌더에서 봇을 구성할 때웰컴 블록
이런식으로 여러가지 블록을 구성한다. 이 내용인 것 같다.utterance
는 중요하다. 이는사용자가 입력한 채팅
을 가지고 있는 변수이다. 이를 많이 사용할 것 이다.lang
은 어떤 언어를 사용했는지 반환한다. 한국에서면kr
을 가진다.user
는 입력한 사용자의 정보이다. 입력한 사용자는 고유id
를 가지고 있다.
예시코드
{
"userRequest": {
"timezone": "Asia/Seoul",
"params": {},
"block": {
"id": "<블록 id>",
"name": "<블록 이름>"
},
"utterance": "<사용자 발화>",
"lang": "kr",
"user": {
"id": "<사용자 botUserKey>",
"type": "botUserKey",
"properties": {
"plusfriendUserKey": "<카카오톡 채널 사용자 id>"
}
}
},
"contexts": [],
"bot": {
"id": "<봇 id>",
"name": "<봇 이름>"
},
"action": {
"name": "<스킬 이름>",
"clientExtra": null,
"params": {},
"id": "<스킬 id>",
"detailParams": {}
}
}
SkillResponse
- 스킬응답으로 이는
vesion
/template
/context
/data
의 총 4가지로 구성이된다.
쉽게 말하자면
카카오톡 채팅 봇의 응답
의 형식으로 볼 수 있다.
예제 코드(기본형)
{
"version": "2.0",
"template": {
...
},
"context": {
...
},
"data": {
...
}
}
- 기본형은 다음과 같다.
SkillTemplate
SkillTemplate
는 다음과 같이 2가지로 구성된다.
이름 | 타입 | 필수여부 | 제한 |
---|---|---|---|
outputs | Array | y | 1개 이상 3개 이하 |
quickReplies | Array | n | 10개 이하 |
outputs(출력 그룹)
- 출력 그룹은 여러 종류의 출력 요소를 포함한다. 출력요소들은 다음 표와 같다.
이름 | 설명 | *캐로셀 가능 여부 |
---|---|---|
simpleText | 간단 텍스트 | X |
simpleImage | 간단 이미지 | X |
basicCard | 기본 카드 | O |
commerceCard | 커머스 카드 | O |
listCard | 리스트 카드 | X |
캐로셀
이란 여래 개의 출력 요소를 묶어서 제공한다. 사용할 때는"carousel"
이라고 적어서 사용한다.
simpleText
- 이는 그냥 단순한 텍스트를 넘겨줄 때 사용한다. 기본 형과 출력 예제는 다음과 같다.

{
"version": "2.0",
"template": {
"outputs": [
{
"simpleText": {
"text": "간단한 텍스트 요소입니다."
}
}
]
}
}
나머지 값들은 카카오톡 오픈빌더 도움말을 참고 부탁드립니다.
flask 기본사용
- 이제 Flask를 설정해보자 flask를 설정하기위해서 다음과 같은 명령어를 기본 ssh창에서 입력하자
mkdir 프로젝트이름
vim server.py
cd 프로젝트이름
- 이를 수행하여
server.py
의 편집에 들어와서 다음과 같은 기본 코드를 작성해 보자. vim
을 사용할 때 편집은i
를 누르면 되고 끝내고 저장하고 편집을 나갈 때는Esc
버튼을 누른 이후:wq
를 입력하면 나갈 수 있다.
from flask import Flask
app = Flask(__name__)
@app.route('/')
def home():
return "Hello, Flask"
if __name__ == 'main__':
app.run(host='0.0.0.0', port=5000, debug=True)
- Flask의 기본 형태이다. 이때 주의할 점으로는
app.run
이 중요하다. app.run
에서host
가0.0.0.0
으로 되어있지 않으면 외부에서 접속을 할 수없고local
에서 만 사용이 가능하다.- 기본포트는
5000
번 이지만 port를 5000이라고 적어두었다.5000
번 포트를 사용하기 때문에 Azure에서 반드시 인바운더리 규칙을 5000번으로 재설정 해두도록 하자(모르겠다면?) debug
는 오류가 났을 때 오류가 난 이유를 설명해주므로 켜두는 편이다.- 설정이 끝났으면 다음과 같은 명령어를 입력하여 파일을 실행해보자.
python3 server.py
- 다음과 같은 주소로 들어가서 실행이 되는지 확인해보자.
http://가상머신 아이피주소:5000

'Python > Flask' 카테고리의 다른 글
[Python/Flask] 카카오톡 봇 만들기(3) (0) | 2021.07.08 |
---|---|
[Python/Flask] 카카오톡 봇 만들기 (1) (0) | 2021.06.30 |