MixedCode

이번시간에는 간단히 만들어진 챗봇서비스를 어떻게 Azure Cloud에 배포하고 서비스하며 Azure Bot Service기능을 사용하는지에 대해
알아가보도록 하겠습니다.


Azure 무료 계정을 통해 애저포탈 사이트에 로그인을 합니다.

1.Azure Bot Service 신청하기
-애저 포탈 좌측 메뉴에 모든 서비스 메뉴를 클릭합니다.
-모든 서비스 상단 필터검색란에 Bot Service라고 입력하고 조회하거나 하단에 기타 카테고리로 이동하여 Bot Service를 선택합니다.



2.중간 Bot Services 만들기 또는 상단 추가하기 메뉴를 클릭합니다.


3.Web App Bot 서비스를 선택합니다.
-봇서비스를 개발하고 배포할수 있는방법은 크게 Azure Web App 서비스 방식과 Azure Fuction서비스 방식을 통해 가능합니다.



4.Web App Bot 하단에 만들기 버튼을 클릭합니다.
-봇이름 : 고유한 여러분만의 봇이름을 입력합니다.
-구독: 무료체험 또는 유료구독 선택
-리소스그룹: 처음 사용자는 새로만들기(봇이름+'RG'), 기존 리소스그룹 재사용시 기존리소스 선택
-위치:애저 데이터 센터 Region선택( Korea Centeral=서울 또는 Korea South=부산 )
-가격책정계층: S1
-앱이름: 봇이름.azurewebsites.net : 앱서비스 도메인 주소
-봇템플릿:C#



-앱서비스 계획/위치 : 클릭 후 새로생성> 앱서비스 계획이름(봇이름+'Plan'),위치:데이터센터 Region 선택 후 확인버튼 클릭


-Application insights 서비스는 해제합니다.
-앱아이디 및 암호 자동생성 으로 진행합니다.
-만들기 버튼을 클릭하여 Web App Bot 서비스를 신청완료합니다.




5.Web App Bot 서비스 신청 후 1분내외 BotServices목록에 신청 서비스가 나타납니다.



6.주요 Web App Bot 서비스 메뉴를 확인합니다.

6.1 개요: 해당 Web App Bot 서비스 주요정보를 제공합니다. 끝점(EndPoint)주소를 반드시 확인합니다.




6.2 빌드:애저 포탈상에서 온라인코드 편집기(Visual Studio Code UX)를 이용해 심플하고 빠르게 봇서비스를 빌드관리할수 있습니다. 



6.3 웹채팅에서 테스트
-애저에서 제공된는 웹채팅 컨트롤을 이용해 바로 웹채팅기반에서 챗봇을 테스트하거나 서비스할수 있습니다.



6.5 채널: 챗봇 서비스와 연결할수 있는 각종 채널(채팅클라이언트)정보를 관리할수 있습니다.
-채널의 종류에는 각종 SNS,웹챗,DirectLine 채널들이 존재합니다.
-웹챗의 편집버튼을 클릭하여 DirectLine의 Security Key값과 웹챗 을 iframe을 이용해 고객사이트에 연결할수 있는 방법을 확인해보세요.



TIP)애저포탈을 한국어 버전을 설정된 상태에서 간혹 채널설정 페이지가 보이지 않는 문제가(애저포탈버그) 있습니다.
이럴경우 애저 포탈 상단 우측에 나사못 설정 아이콘 클릭후 언어환경을 영어로 변경하시면 채널페이지가 나타납니다. 


6.4.설정: 봇과 관련한 기본정보를 설정하거나 제공합니다.
-EndPoint 주소를 재설정할수 있습니다.(여러개의 Controller사용시 변경해가며 사용할수 있습니다.


6.5 애플리케이션 설정:  Web App Bot 어플리케이션의 각종 설정정보를 확인하고 관리할수있습니다.
-.NET Framework : v.4.7  개발된 소스를 서비스할 닷넷 프레임워크 버전을 선택합니다.(개발환경 포함 상위버전가능)
-플랫폼 : 64비트를 선택합니다.
-웹소켓 : 설정으로 활성화 합니다.
-앱설정의 주요항목을 확인합니다.
ㄴBotID : Visual Studio로 개발된 봇 어플리케이션의 web.config항목내 존재하는 봇아이디 값으로 사용됩니다.
ㄴMicrosoftAppID : 각종채널에서 봇서비스 접근 인증시 사용할 App아이디입니다. Visual Studio로 개발된 봇 어플리케이션의 web.config항목내 정보를 설정할수 있습니다. 
ㄴMicrosoftAppPassword; 각종채널에서 봇서비스 접근 인증시 사용할 암호입니다.Visual Studio로 개발된 봇 어플리케이션의 web.config항목내 정보를 설정할수 있습니다. 






6.6 모든 앱서비스 설정을 클릭하면 애저 웹앱의 설정화면으로 이동합니다.
-개요: 전체 웹앱의 정보/사용현황 정보를 제공합니다.


-응용프로그램 설정





-사용자 지정도메인: 사용자의 도메인을 이용해 챗봇을 서비스할수 있습니다.





-가격책정계층선택 : 서비스 사양을 변경적용할수 있습니다.


-규모확장(App Service 계획): 설정기반 Auto Scale 기능을 제공합니다.


7.Visusal Studio로 개발된 Bot Application을 방금 만들어둔 Azure Web App Bot 서비스 공간에 배포해도보록 하겠습니다.
-배포에 앞서 Bot Application에서 사용되고 있는 Microsoft.Bot.Builder Nuget 팩키지를 최신버전으로 업데이트를 진행합니다.
-ChatBotApplication 프로젝트에 오른쪽마우스클릭>Nuget팩키지관리클릭>상단 찾아보기탭을 선택 후 검색란에 
"Microsoft.Bot.Builder"를 입력하고 조회합니다.
-조회결과에서 "Microsoft.Bot.Builder"를 선택하고 최신버전인 3.15버전을 선택 후 업데이트를 실시합니다.


-ChatBotApplication내의 Web.config 파일을 열고 하기 항목에 대해 애저포탈 WebApp Bot 어플리케이션 설정 값중 아래항목값들을 세팅해줍니다.
  <add key="BotId" value="YourBotId" />
 <add key="MicrosoftAppId" value="" />
 <add key="MicrosoftAppPassword" value="" />



8.Visual Studio의 솔루션 탐색기에서 ChatBotApplication 프로젝트를 선택하고 오른쪽 마우스클릭>게시를 클릭합니다.
-상단 우측 계정을  Web App Bot 서비스생성 계정으로 로그인하거나 올바른 계정으로 로그인했는지 확인합니다.
-게시대상선택에서 App Service>Azure App Service 의 기존항목선택을 반드시 선택후 게시를 클릭합니다.




-App Service 현재 보유중인 애저 앱서비스 목록이 나타나며 애저포탈에 생성한 Web App Bot 서비스를 선택 후 확인을 클릭합니다.


9.반드시 파일게시 옵션 항목에서 대상에서 추가파일 제거 항목을 체크 후  저장버튼을 클릭합니다.
-애저 포탈에 자동으로 생성된 소스를 모두제거하고 Visual Studio로 개발한 소스를 새로 배포하기 위함입니다.


10. 웹챗 으로  연결 테스트 하기
정상적으로 게시가 되었는지 애저포탈 Web App Bot 서비스 메뉴중 웹채팅에서 테스트 메뉴를 클릭해 개발된 소스가 정상 작동되는지 확인하고 채널 메뉴의 웹챗 iframe 링크주소를 이용해 
독립된 브라우저 환경에서도 작동이 되는지도 확인해봅니다.

11.에뮬레이터를 이용한 애저 챗봇 서비스 테스트하기
-애저 클라우드에 배포된 챗봇 서비스에 대해 개발자 컴퓨터에 설치된 애뮬레이터에서도 연결 테스트가 가능합니다.
-애저 포탈 서비스에서 제공되는 챗봇서비스를 애뮬레이터로 테스트하기 위해서는 보안을 우회할수 있는 S/W가 필요한데 아래 사이트에서 관련 S/W다운받습니다.
ㄴ HTTPS://ngrok.com  
- 회원가입 후 로그인 후 다운로드 메뉴에서 윈도우즈용 ngrok 압축파일을 다운받아 로컬에 다운받습니다.




-다운받은 압축파일을 풀고 exe파일 위치를 확인합니다.




-애물레이터의 상단 우측 설정아이콘을 클릭후 Settings메뉴의 Path to ngrok  파일 위치 패스를 설정후 저장버튼을 클릭합니다.



-애저 포탈에서 제공해주는 WEB APP BOT 서비스의 설정메뉴에가서  애저 서비스 도메인 끝점 주소를 복사해  애뮬레이터 주소란에 입력하고 
MicrosoftAppId 값과 MicrosoftAppPassword 값을 입력 후 CONNECT 버튼을 클릭합니다.



정상적으로 작동이 된다면 개발 및 배포/서비스 환경 모두가 준비완료된것입니다.
이제 본격적으로 헤어살롱 챗봇 서비스 개발에 집중해보겠습니다.

수고 많으셨습니다.

*