Heroku를 활용한 카카오챗봇 배포 - 인사말편

Page content

읽기 전 공지

  • 본 글은 2022년 11월 28일까지만 유효합니다. 무료 버전이 사라지기 때문에, 앞으로 어떻게 될지는 현재 글 쓰는 시점에서는 모릅니다. 이 부분에 주의해서 참고 하시기를 바랍니다.

강의 홍보

개요

  • Flask를 활용하여 챗봇을 구현한다.

사전준비

스킬서버 작성

  • 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()

스킬서버 등록

  • 여기가 가장 중요하다. 아래와 같이 스킬 서버 정보를 입력하고 저장한다.
    • 카카오 챗봇 대시보드에서 스킬 - 생성 버튼을 순차적으로 클릭한다.

Untitled

Untitled

  • 위 입력폼이 나오면,
    • Heroku로 배포할 때는 아래와 같이 URL을 입력한다.
    • URL/와 함께 다음 주소는 api/your_function을 입력하면 된다.

Untitled

시나리오

  • 스킬서버를 저장한 후, 시나리오 메뉴에서 해당 스킬 서버를 호출 해야 한다.
  • 패턴 발화는 어떤 텍스트가 올지 미리 예상해서 작성한다.
  • 파라미터 설정에서 스킬을 연동한다.
  • 봇 응답은 스킬데이터 사용으로 전환한다.

Untitled

배포

  • 배포 버튼을 클릭하여 배포를 진행한다.

Untitled

Untitled

배포 확인

  • 패턴 발화에 입력된 것만 정상적으로 호출이 되는 것을 확인할 수 있다.

Untitled

시나리오 업그레이드 - 이미지 추가

  • 기존 Python 코드에서 이미지를 배포하는 코드를 작성했기 때문에 이를 활용하도록 한다.
  • 스킬 메뉴에서 단순 이미지 인사 메시지를 설정한다.

Untitled

  • 시나리오 블록을 하나 만든 후, 저장된 스킬을 불러온다.

Untitled

  • 배포를 진행한다.

Untitled

  • 봇테스트를 통해 이미지가 나타나는지 확인한다.

Untitled