Esempio n. 1
0
        private async Task <DialogTurnResult> ActStepAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken)
        {
            string     result = stepContext.Context.Activity.Text;
            MainDetail detail = new MainDetail();

            //Luis 연동 체크
            if (string.IsNullOrEmpty(Configuration["LuisAppId"]) || string.IsNullOrEmpty(Configuration["LuisAPIKey"]) || string.IsNullOrEmpty(Configuration["LuisAPIHostName"]))
            {
                detail = null;
            }
            else
            {
                detail = await luisHelper.ExecuteLuisQuery(Logger, stepContext.Context, cancellationToken);
            }
            //대화 의도에 따른 각각의 대화흐름 시작
            switch (detail.intent)
            {
            case "버스":
                return(await stepContext.BeginDialogAsync(nameof(BusInformationDialog), (BusDetails)detail, cancellationToken));

            case "미세먼지":
                return(await stepContext.BeginDialogAsync(nameof(WeatherInformationDialog), (DustDetails)detail, cancellationToken));

            case "직업":
                return(await stepContext.BeginDialogAsync(nameof(WorkDialog), (WorkDetails)detail, cancellationToken));

            case "학식메뉴":
                await stepContext.Context.SendActivityAsync(MessageFactory.Text("https://www.hansung.ac.kr/portlet-repositories/fckeditor/images/7qHyuRAiKcc=/1557707052583.png"));

                return(await stepContext.EndDialogAsync(null, cancellationToken));

            case "트랙정보":
                return(await stepContext.BeginDialogAsync(nameof(TrackInfoDialog), (TrackInfoDetails)detail, cancellationToken));

            case "전화번호":
                return(await stepContext.BeginDialogAsync(nameof(PhoneAdressDialog), (PhoneDetails)detail, cancellationToken));

            case "트랙정보카드":
                return(await stepContext.BeginDialogAsync(nameof(TrackInfoCardDialog), (TrackInfoCardDetail)detail, cancellationToken));

            case "교수님":
                return(await stepContext.BeginDialogAsync(nameof(ProfessorsDialog), (ProfessorsDetail)detail, cancellationToken));

            case "맛집":
                return(await stepContext.BeginDialogAsync(nameof(MatjeepchoochunDialog), (MatjeepchoochunDetail)detail, cancellationToken));

            case "공지사항":
                return(await stepContext.BeginDialogAsync(nameof(NoticeDialog), (NoticeDetail)detail, cancellationToken));

            case "장학제도":
                await stepContext.Context.SendActivityAsync(MessageFactory.Text("https://www.hansung.ac.kr/web/www/life_02_01_t1"));

                return(await stepContext.EndDialogAsync(null, cancellationToken));

            default:
                await stepContext.Context.SendActivityAsync(MessageFactory.Text("잘 이해하지 못했어요. 다시 질문해주세요"));

                return(await stepContext.EndDialogAsync(null, cancellationToken));
            }
        }
Esempio n. 2
0
        public override string serialize(object obj)
        {
            MainDetail    md      = (MainDetail)obj;
            StringBuilder builder = new StringBuilder();

            // opening tag
            builder.Append("<");
            builder.Append(getXmlNodeName());
            builder.Append(">");
            // title
            builder.Append("<title>");
            builder.Append(md.getTitle());
            builder.Append("</title>");
            // description
            builder.Append("<descr><![CDATA[");
            builder.Append(md.getDescr());
            builder.Append("]]></descr>");
            // media files
            MediaFilesXmlAdapter mfxa = new MediaFilesXmlAdapter(md.getMediaFiles());
            string mediaFilesXml      = mfxa.serialize();

            builder.Append(mediaFilesXml);
            // closing tag
            builder.Append("</");
            builder.Append(getXmlNodeName());
            builder.Append(">");
            return(builder.ToString());
        }
Esempio n. 3
0
        public override object parse(XmlNode objNode)
        {
            string     title      = objNode.SelectSingleNode("title").InnerText.Trim();
            string     descr      = objNode.SelectSingleNode("descr").InnerText.Trim();
            MainDetail mainDetail = new MainDetail(title, descr);
            // parse media files
            MediaFilesXmlAdapter mediaFilesParser = new MediaFilesXmlAdapter(mainDetail.getMediaFiles());
            XmlNode mediaFilesNode = objNode.SelectSingleNode(mediaFilesParser.getXmlNodeName());

            mediaFilesParser.parse(mediaFilesNode);

            return(mainDetail);
        }
Esempio n. 4
0
 public MainDetailLinkLabel(MainDetail detail, Form poiBrowser)
 {
     this.detail          = detail;
     this.poiBrowser      = poiBrowser;
     this.mainDetailPanel = new MainDetailPanel(detail, poiBrowser);
 }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
 public MainDetailPanel(MainDetail detail, Control poiBrowser)
 {
     this.detail     = detail;
     this.poiBrowser = poiBrowser;
     initialize();
 }