public async Task QnATests()
        {
            string text = "asd";
            Uri    uri  = new Uri("http://test");
            QnAMakerRequestBody postBody = new QnAMakerRequestBody();
            string subscriptionKey;

            QnAMakerResults qnaResults1 =
                JsonConvert.DeserializeObject <QnAMakerResults>(
                    "{\"answers\":[{\"answer\":\"Test answer 1.1\",\"questions\":[\"Test question 1.1\",\"Test alternate phrase 1.1\"],\"score\":88.5},{\"answer\":\"Test answer 1.2\",\"questions\":[\"Test question 1.2\",\"Test alternate phrase 1.2\"],\"score\":58.3},{\"answer\":\"Test answer 1.3\",\"questions\":[\"Test question 1.3\",\"Test alternate phrase 1.3\"],\"score\":42.7}]}");
            string expectedResponse1 =
                "Test answer 1.1";
            Mock <IQnAService> qnaServiceMock1 = new Mock <IQnAService>();

            qnaServiceMock1.Setup(x => x.QueryServiceAsync(It.IsAny <Uri>(), It.IsAny <QnAMakerRequestBody>(), It.IsAny <string>())).ReturnsAsync(qnaResults1);

            QnAMakerResults qnaResults2 =
                JsonConvert.DeserializeObject <QnAMakerResults>(
                    "{\"answers\":[{\"answer\":\"Test answer 2.1\",\"questions\":[\"Test question 2.1\",\"Test alternate phrase 2.1\"],\"score\":98.5},{\"answer\":\"Test answer 2.2\",\"questions\":[\"Test question 2.2\",\"Test alternate phrase 2.2\"],\"score\":78.3},{\"answer\":\"Test answer 2.3\",\"questions\":[\"Test question 2.3\",\"Test alternate phrase 2.3\"],\"score\":40.5}]}");
            string expectedResponse2 =
                "Test answer 2.1";
            Mock <IQnAService> qnaServiceMock2 = new Mock <IQnAService>();

            qnaServiceMock2.Setup(x => x.QueryServiceAsync(It.IsAny <Uri>(), It.IsAny <QnAMakerRequestBody>(), It.IsAny <string>())).ReturnsAsync(qnaResults2);

            var qnaDialog1 = new QnADialog(qnaServiceMock1.Object);

            await this.TestQnADialogResponse(qnaDialog1, expectedResponse1);

            var qnaDialog2 = new QnADialog(qnaServiceMock1.Object, qnaServiceMock2.Object);

            await this.TestQnADialogResponse(qnaDialog2, expectedResponse2);

            return;
        }
        private async void FilterIntentScore(IDialogContext context, LuisResult result)
        {
            if (result.TopScoringIntent.Score < INTENT_SCORE_THRESHOLD)
            {
                // Chamar QnA Maker
                QnAMakerResult qnaResult = await QnADialog.MakeRequest(result.Query);

                if (qnaResult != null && result.TopScoringIntent.Score >= INTENT_SCORE_THRESHOLD &&
                    qnaResult.Score >= INTENT_SCORE_THRESHOLD)
                {
                    await context.PostAsync(qnaResult.Answer);
                }
            }
        }
Exemple #3
0
        internal static IDialog <object> MakeRoot()
        {
            var qnaDialog = new QnADialog
            {
                MetadataFilter = new List <Metadata>()
                {
                    new Metadata()
                    {
                        Name  = "Category",
                        Value = "Moving home"
                    }
                }
            };

            return(qnaDialog);
        }
        public async Task None(IDialogContext context, IAwaitable <IMessageActivity> message, LuisResult result)
        {
            QureyController qc = new QureyController();

            qc.PostQuestionOne(result.Query, "None", "0.75", "0.75");

            string ans = qc.GetTrainedAnswer(result.Query);

            if (ans == "")
            {
                var qnadialog        = new QnADialog();
                var messageToForward = await message;

                await context.Forward(qnadialog, AfterQnADialog, messageToForward, CancellationToken.None);
            }
            else
            {
                qc.PostAnswerOne(ans, result.TopScoringIntent.Intent);
                await context.PostAsync(ans);

                context.Wait(MessageReceived);
            }
        }
Exemple #5
0
        private async Task MessageReceivedAsync(IDialogContext context, IAwaitable <IMessageActivity> result)
        {
            /* When MessageReceivedAsync is called, it's passed an IAwaitable<IMessageActivity>. To get the message,
             *  await the result. */
            var message = await result;

            //在这里判断用户输入是否包含关键字“证明”,如果包含,启动证明表单 Dialog
            if (message.Text.Contains("证明"))
            {
                //不现实该提示,避免微信中多条回复导致报错
                //await context.PostAsync("您想开具什么证明?");

                var certDialog = new CertificationDialog();
                await context.Forward(certDialog, AfterCertificationDialog, message, System.Threading.CancellationToken.None);
            }
            else if (message.Text.Contains("rpademo"))
            {
                //magic word for triggering rpa demo
                RPADemoCSVPortTypeClient testProcess = new RPADemoCSVPortTypeClient("RPADemoCSVSoap");
                testProcess.ClientCredentials.UserName.UserName = "******";
                testProcess.ClientCredentials.UserName.Password = "******";
                testProcess.RPADemoCSV();
                await context.PostAsync("RPA Demo has been triggered!");

                context.Wait(this.MessageReceivedAsync);
            }
            else
            {
                var qnadialog        = new QnADialog();
                var messageToForward = message;
                //context.Call(qnadialog, this.AfterQnADialog);
                await context.Forward(qnadialog, AfterQnADialog, messageToForward, System.Threading.CancellationToken.None);
            }
            //await this.SendWelcomeMessageAsync(context);
            //context.Wait(this.MessageReceivedAsync);
        }