[Kakao + Flask] Flask 서버 생성하기 - (3)

Soorim Yoon·2022년 10월 9일
1
  • 카카오 비즈니스를 활용해 <봉추찜닭> 음식점을 소개하는 챗봇을 생성하였다. 다음 단계로는 카카오챗봇과 연동할 스킬 서버를 생성하고자 한다.
  • 처음에는 로컬 서버를 활용해 연동하려고 하였으나, 로컬 서버 사용 시 오류가 발생했다. (로컬 서버는 항상 구동되고 있지 않으므로 당연하다.) 구글링을 통해 Groom, Heroku 등 클라우드 환경에서 서버 생성 및 배포를 진행할 수 있음을 알게 되었다.
  • Groom ide를 활용하고, 스킬 서버 생성 강의 영상을 참고해 스킬 서버 생성 및 카카오 챗봇과의 연동을 진행해보고자 한다.

스킬이란

사용자의 요청과 그에 따른 프로그램의 동적인 응답을 중계해주도록 개발한 프로그램과 연결해주는 요소이다.

개발환경 준비

구름 IDE (groom ide)

👩🏻‍💻 구름 ide
구름 IDE를 사용한 이유는 다음과 같다.

  • 무료로 클라우드 서버컴퓨터(컨테이너)를 제공해주는 서비스이다.
  • 통합개발환경(IDE) 프로그램을 설치하지 않아도 인터넷을 접속할 수 있는 웹 브라우저만 있다면 어디에서든지 개발을 할 수 있다.

회원가입 및 깃허브 연동

  • 깃허브 계정으로 회원 가입을 진행하고, 추가로 학교 메일을 통해 학생 인증을 진행하였다.

코드 작성

  • application.py 파일
from flask import Flask, request
import sys
application = Flask(__name__)

@application.route('/')
def hello_world():
    return 'Hello, World!'

@application.route("/name", methods = ["POST"])
def name_function():
    body = request.get_json()
    print(body)
    print(body['userRequest']['utterance'])
    
    responseBody = {
        "version": "2.0",
        "template": {
            "outputs": [
                {
                    "simpleText": {
                        "text": "안녕하세요. 봉추찜닭입니다.\n충무로점을 새롭게 오픈했습니다.\n많이 찾아주세요 😊"
                    }
                    
                    # "simpleImage": {
                    #     "imageUrl": "http://k.kakaocdn.net/dn/jur1c/btrN5wwGslk/RU9W2xYA4RiRfnafDmkbh1/resize.jpg",
                    #     "altText": "봉추찜닭입니다"
                    # }
                }
            ]
        }
	}
    return responseBody


if __name__ == "__main__":
    application.run(host='0.0.0.0', port=int(sys.argv[1]), debug = True)

아래 사진처럼 카카오 개발문서(응답 타입 별 json 포맷)의 예시 코드들을 이용하여 flask application.py 의 코드 작성을 진행했다.

groom ide의 구성은 다음과 같다 (flask, vscode 사용)

스킬 서버 생성

1) 이름 (/name) 페이지

  • groom ide에서 생성한 flask 서버의 이름 페이지 URL을 복사하여 스킬 서버 생성에 사용한다.

  • flask 서버를 실행시킨 후 <스킬서버로 전송> 버튼을 클릭해 응답이 제대로 이루어지는지 확인한다.

vscode 터미널 창에 다음 명령을 입력해 서버를 활성화시킨다.

python application.py 80

  • 응답 결과 로그를 통해 서버가 제대로 연결되어 작동하는 것을 확인할 수 있다. (현재 name 페이지에는 텍스트 응답과 이미지 응답 두 가지를 구성해두었는데, 아직 텍스트 응답만 json 코드로 구현한 상황이다. 두 가지를 모두 한번에 구현했을 때 코드 오류가 발생하여 해당 부분을 수정 중이다.)

💡 봇 테스트를 통한 확인

사용자가 '이름'을 입력했을 때, 가게 이름 출력이 제대로 되는 것을 볼 수 있다.

참고

플라스크 개발환경 준비

  • 가상환경 생성 및 플라스크 프로젝트 생성

flask 튜토리얼

응답 타입 별 json 포맷

  • 카카오 공식 개발문서로 코드 작성 시, 각각의 응답 타입 별 (텍스트형, 이미지형, 카드형 등) json 코드의 포멧이 나와 있다.

groom을 사용한 카톡 챗봇 API 생성 (스킬 서버)

AWS, Flask를 사용한 카카오 챗봇

  • AWS 서버 또는 Repl.it (리플릿)을 활용하여 카카오 챗봇 스킬 서버를 구성하는 방법도 있다.
profile
👩🏻‍💻 AI를 좋아하는 IT학부생

0개의 댓글