안녕하세요.
Global Azure BootCamp 2019-Seoul
<Chatbot Development based on Bot Framework ver4.0 and Chatbot Service using Azure Bot Service>
TRACK1 Session2 발표자 강창훈입니다.
Global Azure BootCamp 2019-Seoul
<Chatbot Development based on Bot Framework ver4.0 and Chatbot Service using Azure Bot Service>
TRACK1 Session2 발표자 강창훈입니다.
금번 발표는 2018년 11월 릴리즈된 Bot Framework SDK Ver4.x를 기반으로 한 챗봇 개발 및 Azure Bot Service를 통한 서비스 방법을 아주 퀵하게 안내해드리고
Microsoft Azure 기반 인공지능 활용서비스인 Azure Cognitive Service중 언어 카테고리 핵심 서비스이자 머신러닝 기반 자연어처리 서비스 "LUIS" 를 활용하는 방법에 대해 안내해드리려합니다.
세부적인 진행 주제는 아래와 같습니다.
이번 시간에서는 Microsoft Bot Framework SDK Ver4.x 기반에서 챗봇개발환경구성 및 챗봇 프로젝트 템플릿설치,에뮬레이터 설치 사용방법 등 챗봇개발에 관한 기초적인 방법등을 안내해드립니다.
1. Bot Framework 소개 및 개발환경구축하기
2. Development & Deploy of Simple Chatbot
3. Azure Bot Service로 서비스하기
4. Azure Cognitive Service 간략소개
5. Language Understanding Intelligent Service 활용하기
발표 관련 학습 링크 URL
발표자료 다운로드 : https://timetodev.co.kr/download/Azure_Boot_Camp_Korea_2019_Chatbot_강창훈.pptx
https://timetodev.co.kr/blog/123 - 개발환경구축하기
https://timetodev.co.kr/blog/124 - Azure Bot Service로 배포하고 서비스하기
https://timetodev.co.kr/blog/125 - LUIS 활용하기
발표 관련 학습 링크 URL
발표자료 다운로드 : https://timetodev.co.kr/download/Azure_Boot_Camp_Korea_2019_Chatbot_강창훈.pptx
https://timetodev.co.kr/blog/123 - 개발환경구축하기
https://timetodev.co.kr/blog/124 - Azure Bot Service로 배포하고 서비스하기
https://timetodev.co.kr/blog/125 - LUIS 활용하기
이번 시간에서는 Microsoft Bot Framework SDK Ver4.x 기반에서 챗봇개발환경구성 및 챗봇 프로젝트 템플릿설치,에뮬레이터 설치 사용방법 등 챗봇개발에 관한 기초적인 방법등을 안내해드립니다.
0.챗봇 개발환경 준비 및 구성하기
Step1.Visual Studio 2017 Community(무료) 설치하기
-다운로드링크: https://www.visualstudio.com/ko/ 링크이동합니다.
-다운로드 사이트에서 Windows용다운로드 버튼 클릭>Community(5인하 무료) 클릭 다운로드후 설치진행합니다.
-Visual Studio 2017 Community(무료)버전 다운로드하여 설치합니다.
-Visual Studio 2017 Community(무료)버전 다운로드하여 설치합니다.
-설치시 반드시 워크로드 부분에서 상기 설치항목들중 웹 및 클라우드 하위 항목중 ASP.NET 및 웹 개발 과 Azure 개발 두가지 항목의 우측에 있는 체크박스를
반드시 체크후 설치를 진행해주세요.
-상기 항목 체크없이 설치하시면 Azure Bot 서비스를 Visual Studio로 개발이 불가합니다.
-물론 추가설치도 가능합니다.
ㅁVisual Studio 설치 후 개발환경 확인 가이드
-윈도우 작업표시줄 검색> Visual Studio Installer 검색 > 요구 시 Installer 업데이트 실시
-기존에 설치된 Visual Studio Community 2017은 반드시 업데이트 버튼을 클릭해 최신상태로 업데이트 해 줌.
-Visual Studio Community 2017 > 자세히 > 수정 클릭하면 개발환경 재구성 WorkLoad 하면이 표시되며 추가 항목을 선택 설치 가능함
Step2.ChatBot Project 템플릿 다운로드 및 설치
-애저봇서비스 메인페이지 : https://dev.botframework.com/
-봇빌더를 이용한 봇만들기 소개 : https://docs.microsoft.com/en-us/azure/bot-service/?view=azure-bot-service-4.0
- Bot Builder V4 SDK Template for Visual Studio Download : https://marketplace.visualstudio.com/items?itemName=BotBuilder.botbuilderv4
- Bot Builder V4 SDK Template for Visual Studio Download : https://marketplace.visualstudio.com/items?itemName=BotBuilder.botbuilderv4
-애저봇서비스 기반에서 챗봇을 개발할수 있는방법은 크게 Azure Portal 사이트에서 심플하고 자동화된 방식으로 개발하는방법과
Visual Studio 2017 기반에서 제공되는 개발언어별 BotBuilder 환경을 통해 강력하고 편리하게 개발하는 두가지 방법을 제공합니다.
설치방법 : 상기 설치파일을 다운받아 설치하거나 또는 Visual Studio를 가동 후 상단 메뉴> 도구>확장 및 업데이트 클릭> 팝업 좌측 온라인 노드 클릭 > “Bot Builder V4 SDK Template for Visual Studio” 검색 후 다운로드 받고 Visual Studio를 닫으면 잠시 후 설치가 진행됩니다.
Step3.ChatBot Emulator 설치하기
ㄴ BotFramework-Emulator-4.2.1-windows-setup.exe 다운로드 후 설치
-개발자 컴퓨터에서 챗봇을 개발하고 테스트하기 위한 에뮬레이터 프로그램입니다.
1.개발준비가 모두 완료되었으면 Visual Studio 2017를 시작합니다.
-상단메뉴 파일> 새로만들기> 프로젝트 를 클릭합니다.
-개발 템플릿 이 설치된 좌측 노드를 확인합니다. 개발툴 버전에 따라 Visual C#>BotFramework 또는 Visual C#> Cloud>AzureBot Service 를 클릭하면 가운데 챗봇 어플리케이션 개발 시작을
쉽게 도와주는 프로젝트 템플릿 3종 제공됩니다.
-CoreBot(BaseBot) : LUIS 환경 지원 챗봇
-EchoBot : 심플챗봇 개발
-EmptyBot : 빈프로젝트
ㄴEchoBot 템플릿을 선택합니다.
-상단메뉴 파일> 새로만들기> 프로젝트 를 클릭합니다.
-개발 템플릿 이 설치된 좌측 노드를 확인합니다. 개발툴 버전에 따라 Visual C#>BotFramework 또는 Visual C#> Cloud>AzureBot Service 를 클릭하면 가운데 챗봇 어플리케이션 개발 시작을
쉽게 도와주는 프로젝트 템플릿 3종 제공됩니다.
-CoreBot(BaseBot) : LUIS 환경 지원 챗봇
-EchoBot : 심플챗봇 개발
-EmptyBot : 빈프로젝트
ㄴEchoBot 템플릿을 선택합니다.
-챗봇 프로젝트명 입력: ex) LangCon2019EddyEchoBot
-경로 : C:\
-솔루션 명: LangCon2019EddyEchoBotSolution
-경로 : C:\
-솔루션 명: LangCon2019EddyEchoBotSolution
여러분 상황에 맞게 프로젝트 명/솔루션 폴더 생성경로,솔루션명을 입력후 확인버튼을 클릭합니다.
2.화면 우측 솔루션 탐색기에 여러분이 만드신 솔루션명이 보입니다.
3. 프로젝트 기본 환경 정보확인
-챗봇 프로젝트에 오른쪽마우스 클릭 > 프로젝트 속성 ASP.NET CORE 버전확인
ㄴ.NET Core 2.1
-프로젝트 > 종속성> SDK버전 확인,Nuget확인
ㄴMicrosoft.AspNetCore.All 2.1.1
ㄴMicrosoft.Bot.Builder 4.2.2
4.프로젝트 디버깅
-F5 또는 상단메뉴 디버그>디버깅 시작을 클릭하여 챗봇 어플리케이션 디버깅을 실시해봅니다.
-정상적인 경우 아래와같이 웹사이트가 자동으로 브라우저에 표시되는것을 확인할수 있습니다.
*챗봇 어플리케이션(SDK4.x)은 ASP.NET Core WEBAPI 웹 기반 프로젝트로 개발되며 OPEN API기반 RESTful서비스 방식으로 개발 및 서비스 제공됩니다.
5.에뮬레이터를 기동합니다.
-챗봇 프로젝트를 디버깅 모드로 둔 상태에서 설치한 애물레이터를 실행합니다.
-OpenBot 버튼을 클릭하여 여러분이 만드신 챗봇프로젝트의 물리적 경로를 찾습니다.(솔루션 생성시 지정한 솔루션폴더내 챗봇프로젝트폴더 경로 확인)
-챗봇프로젝트의 물리적 경로내에 존재하는 ~.bot파일을 선택합니다
-애물레이터와 현재 디버깅중인 챗봇 웹 어플리케이션과 연동되어 디버깅이 가능해집니다.
-에뮬레이터(채널,클라이언트)와 챗봇과 통신 테스트를 진행해보세요.
-챗봇 프로젝트를 디버깅 모드로 둔 상태에서 설치한 애물레이터를 실행합니다.
-OpenBot 버튼을 클릭하여 여러분이 만드신 챗봇프로젝트의 물리적 경로를 찾습니다.(솔루션 생성시 지정한 솔루션폴더내 챗봇프로젝트폴더 경로 확인)
-챗봇프로젝트의 물리적 경로내에 존재하는 ~.bot파일을 선택합니다
-애물레이터와 현재 디버깅중인 챗봇 웹 어플리케이션과 연동되어 디버깅이 가능해집니다.
-에뮬레이터(채널,클라이언트)와 챗봇과 통신 테스트를 진행해보세요.
7.디버깅 브라우저를 닫고 Visual Studio 2017로 돌아와 상단중간 빨간색네모 단추를 클릭하여 디버깅을 종료합니다.
8. Bot Builder Ver4.x Applicaiton Process
-채널(에뮬레이터) 와 챗봇과의 간단한 통신 프로세스를 아래 그램을 통해 확인해봅니다.
ㅁ Program.cs --> Startup.cs --><ProjectNameBot>.cs
ㅁ Program.cs
- 챗봇 어플리케이션 진입점
ㅁ Startup.cs
-IoC 의존성 주입기법 기반 각종 서비스 IoC컨테이너에 등록처리
ㅁ <ProjectName>Bot.cs 기본 챗봇 서비스 클래스
-<ProjectName>BotAccessors.cs : 챗봇 서비스에서 사용할 데이터 구조를 싱글톤으로 접근할수 있게 해주는 연결고리
-<ProjectName>Bot.cs : 디폴트 챗봇 서비스 클래스
-CounterState.cs : 채널과 챗봇간 대화주고 받은 횟수 카운팅 관리용 클래스 TurnCount 속성제공
9.친절한 챗봇 개발하기
- ~Bot.cs 파일을 열고 아래 굵게 표시된 else if 구문을 추가합니다.
- ~Bot.cs 파일을 열고 아래 굵게 표시된 else if 구문을 추가합니다.
public async Task OnTurnAsync(ITurnContext turnContext, CancellationToken cancellationToken = default(CancellationToken))
{
// Handle Message activity type, which is the main activity type for shown within a conversational interface
// Message activities may contain text, speech, interactive cards, and binary or unknown attachments.
// see https://aka.ms/about-bot-activity-message to learn more about the message and other activity types
if (turnContext.Activity.Type == ActivityTypes.Message)
{
// 전달 대화 컨텍스트로부터 대화상태 조회
var state = await _accessors.CounterState.GetAsync(turnContext, () => new CounterState());
// Bump the turn count for this conversation.
state.TurnCount++;
// Set the property using the accessor.
await _accessors.CounterState.SetAsync(turnContext, state);
// Save the new turn count into the conversation state.
await _accessors.ConversationState.SaveChangesAsync(turnContext);
// Echo back to the user whatever they typed.
var responseMessage = $"테스트1 {state.TurnCount}: You sent '{turnContext.Activity.Text}'\n";
await turnContext.SendActivityAsync(responseMessage);
}
else if (turnContext.Activity.Type == ActivityTypes.ConversationUpdate)
{
if (turnContext.Activity.MembersAdded != null)
{
foreach (var member in turnContext.Activity.MembersAdded)
{
if (member.Id != turnContext.Activity.Recipient.Id)
{
await turnContext.SendActivityAsync("안녕하세요??? \n LangCon2019 챗봇입니다.");
}
}
}
}
else
{
await turnContext.SendActivityAsync($"{turnContext.Activity.Type} event detected");
}
}
감사합니다.
댓글목록
This Is rising
-
ChatBot
[샘플]Actions On Google에 대해 알아봅니다.
21 °C
Mostly Cloudy
- London, UK
- 13%
- 6.44 MPH
-
23° Sun, 3 Jan
-
26° Sun, 3 Jan
3 students arrested after body-slamming principal
4 students arrested after body-slamming principal
3 students arrested after body-slamming principal
4 students arrested after body-slamming principal
2 students arrested after body-slamming principal