public void GetAnswer()
        {
            var qna = GetQnaMaker(nameof(GetAnswer));

            try
            {
                QnaKnowledgebaseBuilder builder = new QnaKnowledgebaseBuilder();
                bool success = builder
                               .Modify(qna)
                               .AddAnswerToQuestion("Sunny", "What is the weather like?")
                               .UpdateKnowledgebase();

                // qna.Train();
                // qna.Publish();

                var answers = qna.GenerateAnswer("What is the weather like?");

                bool exists = answers.FirstOrDefault(p => p.answer == "Sunny") != null;
                Assert.IsTrue(exists);
            }
            finally
            {
                qna.DeleteKnowledgeBase();
            }
        }
        public void DeleteQuestion()
        {
            QnAKnowledgebase maker = GetQnaMaker(nameof(DeleteQuestion));

            try
            {
                QnaKnowledgebaseBuilder builder = new QnaKnowledgebaseBuilder();
                bool success = builder
                               .Modify(maker)
                               .AddAnswerToQuestions("Hello", new string[] { "There", "Again" })
                               .UpdateKnowledgebase();

                Assert.IsTrue(success);

                IEnumerable <string> answers = maker.GetAnswerStrings();
                Assert.IsTrue(answers.Contains("Hello"));
                IEnumerable <string> questions = maker.GetQuestionsFor("Hello");
                Assert.IsFalse(questions.Contains("Hello"));
                Assert.IsTrue(questions.Contains("There"));
                Assert.IsTrue(questions.Contains("Again"));

                maker.DeleteQuestion("Hello", "There");

                answers = maker.GetAnswerStrings();
                Assert.IsTrue(answers.Contains("Hello"));
                questions = maker.GetQuestionsFor("Hello");
                Assert.IsTrue(questions.Contains("Again"));
                Assert.IsTrue(!questions.Contains("There"));
                Assert.IsTrue(questions.Count() == 1);
            }
            finally
            {
                maker.DeleteKnowledgeBase();
            }
        }
        public void AddMultipleQuestionAndAnswer()
        {
            QnAKnowledgebase maker = GetQnaMaker(nameof(AddMultipleQuestionAndAnswer));

            Assert.IsTrue(maker.GetDetails() != null);
            try
            {
                QnaKnowledgebaseBuilder builder = new QnaKnowledgebaseBuilder();
                bool success = builder
                               .Modify(maker)
                               .AddAnswerToQuestions("Hello", new string[] { "Hello", "There" })
                               .UpdateKnowledgebase();

                Assert.IsTrue(success);
                System.Threading.Thread.Sleep(1000);

                IEnumerable <string> answers = maker.GetAnswerStrings();
                Assert.IsTrue(answers.Contains("Hello"));

                IEnumerable <string> questions = maker.GetQuestionsFor("Hello");
                Assert.IsTrue(questions.Contains("Hello"));
                Assert.IsTrue(questions.Contains("There"));
            }
            finally
            {
                maker.DeleteKnowledgeBase();
            }
        }
        public void CreateKBThroughBuilder()
        {
            QnAKnowledgebase qna = null;

            try
            {
                QnaKnowledgebaseBuilder builder = new QnaKnowledgebaseBuilder();
                bool success = builder
                               .Create(ConfigurationManager.AppSettings["qnaMakerName"], nameof(CreateKBThroughBuilder), ConfigurationManager.AppSettings["ocpApimSubscriptionKey"])
                               .UpdateKnowledgebase();

                qna = builder.Knowledgebase;
                string kb = qna.GetKnowledgebaseJson();
                Assert.IsTrue(kb.Contains("qnaDocuments"));
            }
            finally
            {
                qna.DeleteKnowledgeBase();
            }
        }
        public void GetAnswerAfterPublishFromProd()
        {
            var qna = GetQnaMaker(nameof(GetAnswer));

            try
            {
                QnaKnowledgebaseBuilder builder = new QnaKnowledgebaseBuilder();
                bool success = builder
                               .Modify(qna)
                               .AddAnswerToQuestion("Sunny", "What is the weather like?")
                               .UpdateKnowledgebase();

                Assert.IsTrue(success);

                // qna.Train();
                qna.Publish();

                success = builder
                          .Modify(qna)
                          .AddAnswerToQuestion("Cloudy", "What is the weather like?")
                          .UpdateKnowledgebase();

                var answers = qna.GenerateAnswer("What is the weather like?", EnvironmentType.Prod);

                bool sunny  = answers.FirstOrDefault(p => p.answer == "Sunny") != null;
                bool cloudy = answers.FirstOrDefault(p => p.answer == "Cloudy") != null;
                Assert.IsTrue(sunny);
                Assert.IsFalse(cloudy);

                answers = qna.GenerateAnswer("What is the weather like?", EnvironmentType.Test);

                cloudy = answers.FirstOrDefault(p => p.answer == "Cloudy") != null;
                Assert.IsTrue(cloudy);
            }
            finally
            {
                qna.DeleteKnowledgeBase();
            }
        }
        public void AddQuestionAndAnswer()
        {
            QnAKnowledgebase maker = GetQnaMaker(nameof(AddQuestionAndAnswer));

            try
            {
                QnaKnowledgebaseBuilder builder = new QnaKnowledgebaseBuilder();
                bool success = builder
                               .Modify(maker)
                               .AddAnswerToQuestion("Hello", "Hello")
                               .UpdateKnowledgebase();

                Assert.IsTrue(success);

                IEnumerable <string> answers = maker.GetAnswerStrings();
                Assert.IsTrue(answers.Contains("Hello"));
                IEnumerable <string> questions = maker.GetQuestionsFor("Hello");
                Assert.IsTrue(questions.Contains("Hello"));
            }
            finally
            {
                maker.DeleteKnowledgeBase();
            }
        }