Heroku를 활용한 카카오챗봇 배포 - 인사말편
Page content
읽기 전 공지
- 본 글은 2022년 11월 28일까지만 유효합니다. 무료 버전이 사라지기 때문에, 앞으로 어떻게 될지는 현재 글 쓰는 시점에서는 모릅니다. 이 부분에 주의해서 참고 하시기를 바랍니다.
강의 홍보
- 취준생을 위한 강의를 제작하였습니다.
- 본 블로그를 통해서 강의를 수강하신 분은 게시글 제목과 링크를 수강하여 인프런 메시지를 통해 보내주시기를 바랍니다.
스타벅스 아이스 아메리카노를 선물
로 보내드리겠습니다.
- [비전공자 대환영] 제로베이스도 쉽게 입문하는 파이썬 데이터 분석 - 캐글입문기
- [비전공자 대환영] 캐글 데이터를 활용한 Optuna with MLFlow - 캐글다지기
- 머신러닝 하이퍼파라미터 튜닝 등을 배우고 싶다면 다음 강의를 참고하세요.
개요
- Flask를 활용하여 챗봇을 구현한다.
사전준비
- 카카오 챗봇에 가입을 해야 한다.
- Heroku 설정이 되어 있어야 한다.
스킬서버 작성
- app.py를 열어 아래와 같이 스킬서버를 구축한다.
- 인삿말을 작성하는 코드이다.
# -*- coding: utf-8 -*-
from flask import Flask, request
import pandas as pd
from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String
## DB 연결 Local
def db_create():
# Heroku
engine = create_engine("postgresql://your_url", echo = False)
engine.connect()
engine.execute("""
CREATE TABLE IF NOT EXISTS iris(
sepal_length FLOAT NOT NULL,
sepal_width FLOAT NOT NULL,
pepal_length FLOAT NOT NULL,
pepal_width FLOAT NOT NULL,
species VARCHAR(100) NOT NULL
);"""
)
data = pd.read_csv('data/iris.csv')
print(data)
data.to_sql(name='iris', con=engine, schema = 'public', if_exists='replace', index=False)
application = Flask(__name__)
@application.route("/")
def index():
db_create()
return "DB Created Done !!!!!!!!!!!!!!!"
## 카카오톡 텍스트형 응답
@application.route('/api/sayHello', methods=['POST'])
def sayHello():
body = request.get_json()
print(body)
print(body['userRequest']['utterance'])
responseBody = {
"version": "2.0",
"template": {
"outputs": [
{
"simpleText": {
"text": "안녕 hello I'm Ryan"
}
}
]
}
}
return responseBody
## 카카오톡 이미지형 응답
@application.route('/api/showHello', methods=['POST'])
def showHello():
body = request.get_json()
print(body)
print(body['userRequest']['utterance'])
responseBody = {
"version": "2.0",
"template": {
"outputs": [
{
"simpleImage": {
"imageUrl": "https://t1.daumcdn.net/friends/prod/category/M001_friends_ryan2.jpg",
"altText": "hello I'm Ryan"
}
}
]
}
}
return responseBody
if __name__ == "__main__":
db_create()
application.run()
스킬서버 등록
- 여기가 가장 중요하다. 아래와 같이 스킬 서버 정보를 입력하고 저장한다.
- 카카오 챗봇 대시보드에서
스킬 - 생성
버튼을 순차적으로 클릭한다.
- 카카오 챗봇 대시보드에서
- 위 입력폼이 나오면,
- Heroku로 배포할 때는 아래와 같이 URL을 입력한다.
- URL/와 함께 다음 주소는 api/your_function을 입력하면 된다.
시나리오
- 스킬서버를 저장한 후, 시나리오 메뉴에서 해당 스킬 서버를 호출 해야 한다.
- 패턴 발화는 어떤 텍스트가 올지 미리 예상해서 작성한다.
- 파라미터 설정에서 스킬을 연동한다.
- 봇 응답은 스킬데이터 사용으로 전환한다.
배포
- 배포 버튼을 클릭하여 배포를 진행한다.
배포 확인
- 패턴 발화에 입력된 것만 정상적으로 호출이 되는 것을 확인할 수 있다.
시나리오 업그레이드 - 이미지 추가
- 기존 Python 코드에서 이미지를 배포하는 코드를 작성했기 때문에 이를 활용하도록 한다.
- 스킬 메뉴에서 단순 이미지 인사 메시지를 설정한다.
- 시나리오 블록을 하나 만든 후, 저장된 스킬을 불러온다.
- 배포를 진행한다.
- 봇테스트를 통해 이미지가 나타나는지 확인한다.