2일차 개발내용
앞서 알아본 카카오 i 챗봇 빌더에 포함된 스킬 기능을 이용하여, Restful API를 통해 백엔드 서버와 정보를 주고받게 만들 예정이다.
백엔드 서버에 캠퍼스 이름, 식당 이름, 날짜를 전달하면 그에 맞는 학식 정보를 찾아 챗봇에 전송해주는 것이다.
카카오 i 챗봇 빌더 자체는 큰 역할을 하지 못한다. 예를 들어 내가 안녕! 이라고 말했을 때 안녕하세요. 라며 그에 따른 정해진 단순 응답만 가능할 뿐이다. 이러한 한계를 극복하고 유저에게 더 다양한 정보를 가져다주기 위해선 스킬이라는 기능이 필요한데, 스킬은 RESTful API를 통해 외부 서버에서 정보를 받아와 표출시켜주는 기능이다. 외부에서 정보를 가져올 수 있기 때문에 더욱 세밀하고 다채로운 답변을 제공할 수 있다.
특히 실시간 정보 반영에 매우 필요한데 예를 들어 "오늘 환율 얼마야?" 라는 질문을 받았을때 실시간 환율을 제공하는 블럭을 제공하려면 스킬을 사용하면 된다. 지누랑!은 실시간 학식 정보와 공지사항을 제공해야 하므로 역시 스킬 기능이 필요하다.
학식과 공지 제공에 스킬을 사용하기 위해서 우리는 RESTful API를 제공하는 서버를 제작해야 하는데 구성은 다음과 같다.
Microsoft Azure를 통해 작성한 코드를 서버위에 돌리려고 한다. 역시 최근 들었던 Microsoft 주최의 강연에서 Azure에 대해 들었기 때문에 써보고 싶었다. Azure의 높은 안정성과 속도, 학생용 플랜이 제공된다는 점이 마음에 들었다.
Python을 기반으로 내부 코드를 작성하려고 한다. 가장 최근에 배웠는데, 문법도 쉽고 자료도 많아 이번 프로젝트에 사용해보려고 한다.
Flask라는 Python 기반의 웹 프레임워크를 통해 API를 제공하고 BeautifulSoup4와 Requests 라이브러리를 통해 웹을 크롤링해서 식단이나 공지정보를 파싱 할 예정이다.
Microsoft Azure 서버 설정하기

마이크로소프트에서 제공하는 에저는 학생용 플랜을 제공한다. 무언갈 배우고 싶어도 돈이 없는 나같은 학생들에겐 아주 단비같은 존재...! 암튼, 학생이라면 같이 학생용 플랜을 제공받아보려고 한다. 이미 제공받았거나 조건이 되지 않는다면 다음 섹터로 이동을 하자.
학생용 플랜 제공받기
에저를 통해 서버를 제공받으려면 우선 마이크로소프트 계정이 필요하다. 이 글을 읽으시는 분들은 다 쉽게 하실 거라 생각해 마소계정을 만드는 과정은 따로 적진 않겠다.

본인이 사용하는 마이크로소프트 계정으로 로그인을 한 후 이 페이지로 이동하면 위와 같은 화면을 보게 된다.
"체험계정 만들기"를 클릭하자.

체험계정 생성 페이지에 들어오면 우선 전화인증부터 시작한다. 1번에 국가코드(한국은 +82)를 선택하고 아래 2번에 전화번호를 입력한다.
이후 본인이 받고 싶은 인증방법으로 확인코드를 요청하고 3번 코드를 확인해준다.

대부분의 대학교는 자체 이메일을 제공하므로 필자는 대학교의 이메일로 인증을 받았다. 1번에서 인증방법 중 학교 메일 주소를 선택하고 아래에 본인의 학교 이메일 주소를 적으면 된다. 당연하게도 개인 이메일 주소는 인증 받을 수 없다.

학업 상태 확인을 누르면 위와 같이 메일이 발송되었다는 알림이 뜬다. 알림이 제대로 떴다면 위에 작성한 이메일 계정으로 로그인해보자.

정상적으로 절차가 진행되었다면 이런 메일이 하나 와있을 텐데 파란색으로 된 아주 긴 링크로 접속하면 인증이 모두 완료된다. 혹시라도 메일이 오지 않았다면 스팸함이나 메일주소를 잘못 쓰진 않았는지 확인해보자.

이제 본인의 개인정보만 작성해주면 계정 생성이 모두 끝나게 된다.
Microsoft Azure 둘러보기

계정설정을 모두 완료했다면 위와 같이 메인화면을 볼 수 있다. 여기서 Education 항목에 들어가서 학생용 플랜이 적용되었는지 확인하자.

학생용 플랜이 잘 적용되었다면 제공된 크레딧을 확인할 수 있을 것이다.
RESTful API 서버 구축하기

이제 우리가 사용할 RESTful API 서버를 만들어 볼건데, 먼저 왼쪽의 메뉴를 눌러 리소스 만들기에 들어가주자.

RESTful API를 만들것이므로 Marketplace에서 API 앱을 선택하고 만들기를 눌러준다.

우선 학생용 플랜을 받았다면 Azure for Students를 선택해주자. 그리고 처음으로 에저를 사용하기에 리소스 그룹도 새로 만들어준다.
인스턴스 이름은 여러분들이 하고싶은 이름으로 하면 되는데, 추후에 개인도메인을 연결하지 않으면 이 이름으로 웹 페이지를 접속하게 되므로 잘 결정하자.


API 서버는 되게 여러 언어를 지원하는데, 나는 Python을 기반으로 작성할 것이므로 Python을 골라주었다. 외에도 Node.js, PHP, Ruby등을 지원한다.
지역은 원하는 데이터센터 지역을 고르면 되는데 한국에는 데이터센터가 2곳에 있다. Korea Central은 서울 Korea South는 부산이다.

App Service를 받기 위해 요금제에 가입해야하는데, 기본적으로 B1이라는 유료 플랜이 적용되어 있다. 최대한 비용을 절약하고 싶었기에 크기 변경을 눌러주었다.

클라우드 플렛폼 서비스답게 목적에 따라 여러가지 플랜이 제공되는데, 가장 사양이 좋고 비싼 서버는 달에 약 150만원이 나가는 엄청난 서버도 있다.

갓갓 마이크로소프트는 무료로 제공되는 플랜도 있으므로 우선 무료로 제공되는 사양을 골랐다. 아쉽게도 무료 사양같은경우 하루에 CPU시간을 60분 밖에 못 쓴다...

생성 과정에서 이것저것 눌러봤는데 단순하고 작은 규모라 어떤 기능인지도 모르겠고 어디다 써야할지도 모르겠어서 일단 체크하거나 입력하지 않았다. 그리고 눌러보다가 오타도 발견...? 했다.
아까 페이지에서 서버 사양을 선택했다면 검토 + 만들기로 바로 넘어가도 좋다.

서버를 생성하기 전 내가 설정한 값들을 다시 한번 확인하는데, 올바르게 했는지 확인해보자. 만약 다 맞다면 그대로 생성!

이렇게 무려 마이크로소프트 에저로 생성된 나만의 서버가 생겼다! 🙌
이제 코드를 작성하고 배포하면 코드가 실제로 작동하는 모습을 볼 수 있다.
이전 글
2022.11.08 - [Developer/개발일지] - [개발일지] 개인프로젝트 - 지누랑! (1일차) - 카카오톡 학식 챗봇 개발하기
[개발일지] 개인프로젝트 - 지누랑! (1일차) - 카카오톡 학식 챗봇 개발하기
개발동기 🎉 제 31회 소프트웨어 전시회를 개최합니다 🎉 전시회 개최에 앞서, 출품작을 모집하고자 합니다. 응용 SW 개발실 - 구석방에서 제 31회 소프트웨어 전시회를 개최한다고 한다! 2022년 1
mtslzx.tistory.com
참조
- https://chatbot.kakao.com/docs/skill-response-format#%EC%98%88%EC%A0%9C-%EC%BD%94%EB%93%9C-9
- https://github.com/Azure-Samples/msdocs-python-flask-webapp-quickstart
- https://dschloe.github.io/python/kakao_chatbot/chatbot_calculator/
- https://resttesttest.com
- https://stackoverflow.com/questions/60516438/install-python-modules-in-azure-functions
- https://learn.microsoft.com/ko-kr/azure/app-service/quickstart-python?tabs=flask%2Cwindows%2Cazure-cli%2Cvscode-deploy%2Cdeploy-instructions-azportal%2Cterminal-bash%2Cdeploy-instructions-zip-azcli