private async Task <DialogTurnResult> FirstStepAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken) { dustDetail = (DustDetails)stepContext.Options; if (dustDetail.Dosistationname == null) { return(await stepContext.PromptAsync(nameof(ChoicePrompt), new PromptOptions { RetryPrompt = MessageFactory.Text("아래 항목 중에서 고르세요"), Choices = ChoiceFactory.ToChoices(new List <string> { "강동구", "강북구", "강서구", "관악구", "광진구", "구로구", "금천구", "노원구", "도봉구", "동대문구", "동작구", "마포구", "서대문구", "서초구", "성동구", "성북구", "송파구", "양천구", "영등포구", "용산구", "은평구", "종로구", "중구", "중랑구" }) }, cancellationToken)); } else { return(await stepContext.NextAsync(dustDetail.Dosistationname, cancellationToken)); } }
/* private async Task<DialogTurnResult> areaStepAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken) * { * var dustDetails = (DustDetails)stepContext.Options; * * if (dustDetails.Area == null) * { * return await stepContext.PromptAsync(nameof(TextPrompt), new PromptOptions { Prompt = MessageFactory.Text("어떤 지역을 찾으시나요?") }, cancellationToken); * } * else * { * return await stepContext.NextAsync(dustDetails.Area, cancellationToken); * } * }*/ private async Task <DialogTurnResult> serviceStepAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken) { dustDetail = (DustDetails)stepContext.Options; if (dustDetail.Dustservice == null) { return(await stepContext.PromptAsync(nameof(ChoicePrompt), new PromptOptions { Prompt = MessageFactory.Text("지역 첫 자음을 선택해 주세요"), RetryPrompt = MessageFactory.Text("지역 첫 자음을 아래에서 선택해 주세요"), Choices = ChoiceFactory.ToChoices(new List <string> { "ㄱ~ㄴ", "ㄷ~ㅅ", "ㅇ~ㅈ", "ㅊ~ㅂ", "대기환경 정보" }) }, cancellationToken)); } else { return(await stepContext.NextAsync(dustDetail.Dustservice, cancellationToken)); } }
public async Task <MainDetail> ExecuteLuisQuery(ILogger logger, ITurnContext turnContext, CancellationToken cancellationToken) { MainDetail detail = new MainDetail(); try { LuisRecognizer luisRecognizer = new LuisRecognizer(luisApplication); recognizerResult = await luisRecognizer.RecognizeAsync(turnContext, cancellationToken); //높은 점수의 의도 저장 var(intent, score) = recognizerResult.GetTopScoringIntent(); //대화의도에 따른 엔티티 저장 switch (intent) { case "버스": BusDetails busDetails = new BusDetails(); busDetails.intent = intent; busDetails = getLuisEntites(busDetails); detail = busDetails; break; case "미세먼지": DustDetails dustDetails = new DustDetails(); dustDetails.intent = intent; dustDetails = getDustLuisEntites(dustDetails); detail = dustDetails; break; case "장학제도": detail.intent = intent; break; case "전화번호": PhoneDetails phoneDetails = new PhoneDetails(); phoneDetails.intent = intent; phoneDetails = getPhoneEntites(phoneDetails); detail = phoneDetails; break; case "교수님": ProfessorsDetail pfDetail = new ProfessorsDetail(); pfDetail.intent = intent; pfDetail = getProfessorEntites(pfDetail); detail = pfDetail; break; case "트랙정보": TrackInfoCardDetail trackInfoCardDetail = new TrackInfoCardDetail(); trackInfoCardDetail.intent = intent; detail = trackInfoCardDetail; break; case "공지사항": NoticeDetail noticeDetail = new NoticeDetail(); noticeDetail.intent = intent; detail = noticeDetail; break; case "맛집": MatjeepchoochunDetail matjeepchoochunDetail = new MatjeepchoochunDetail(); matjeepchoochunDetail.intent = intent; matjeepchoochunDetail = getMatjeepchoochunEntites(matjeepchoochunDetail); detail = matjeepchoochunDetail; break; case "학식메뉴": detail.intent = intent; break; case "로그인": MainDetail loginDetail = new MainDetail(); loginDetail.intent = intent; detail = loginDetail; break; case "시간표": MainDetail timeDetail = new MainDetail(); timeDetail.intent = intent; detail = timeDetail; break; case "열람실": MainDetail seatDetail = new MainDetail(); seatDetail.intent = intent; detail = seatDetail; break; } } catch (Exception e) { await turnContext.SendActivityAsync(MessageFactory.Text("예기치 못한 오류가 발생하였습니다. 다시 시도해주십시오\n" + e.Message), cancellationToken); } return(detail); }
private DustDetails getDustLuisEntites(DustDetails dustDetails) { dustDetails.Dosistationname = recognizerResult.Entities["구"]?.FirstOrDefault()?.FirstOrDefault()?.ToString().Replace(" ", ""); return(dustDetails); }