コード例 #1
0
        private async Task <DialogTurnResult> CardStepAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken)
        {
            TrackInfoCardDetail trackInfoCardDetail = new TrackInfoCardDetail();

            trackInfoCardDetail.Major = stepContext.Context.Activity.Text;

            string        cardPath      = "";
            CardGenerator cardGenerator = new CardGenerator();

            switch (trackInfoCardDetail.Major)
            {
            case "공과대학":
                cardPath = "HSUbot.Cards.TrackInfoCards.ITGongdeaCard.json";
                break;

            case "인문예술대학":
                cardPath = "HSUbot.Cards.TrackInfoCards.InMoonYeSoolDaeCard.json";
                break;

            case "디자인대학":
                cardPath = "HSUbot.Cards.TrackInfoCards.DesignDaeCard.json";
                break;

            case "사회과학대학":
                cardPath = "HSUbot.Cards.TrackInfoCards.SocialScienceDaeCard.json";
                break;
            }

            await cardGenerator.AttachAdaptiveCardAsync(stepContext.Context, cardPath, cancellationToken);

            return(await stepContext.EndDialogAsync(null, cancellationToken));
        }
コード例 #2
0
 private async Task <DialogTurnResult> MajorStepAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken)
 {
     trackInfoCardDetail = (TrackInfoCardDetail)stepContext.Options;
     if (trackInfoCardDetail.Major == 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(trackInfoCardDetail.Major, cancellationToken));
     }
 }
コード例 #3
0
ファイル: LuisHelper.cs プロジェクト: qkrrhksdlr/HSU_ChatBot
        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);
        }