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();
            }
        }
        private QnAKnowledgebase GetQnaMaker(string kbToUseForTesting = "qnamakertestkb", bool createIfNotExist = true)
        {
            // note you can see these here: https://www.qnamaker.ai/Home/MyServices
            string ocpApimSubscriptionKey = ConfigurationManager.AppSettings["ocpApimSubscriptionKey"];

            var maker = new QnAKnowledgebase(ConfigurationManager.AppSettings["qnaMakerName"], kbToUseForTesting, ocpApimSubscriptionKey);

            if (createIfNotExist)
            {
                maker.CreateIfDoesntExist();
            }
            makers.Add(maker);
            return(maker);
        }
        public void CreateEmptyKB()
        {
            QnAKnowledgebase qna = null;

            try
            {
                qna = GetQnaMaker(nameof(CreateEmptyKB));

                string kb = qna.GetKnowledgebaseJson();
                Assert.IsTrue(kb.Contains("qnaDocuments"));
            }
            finally
            {
                qna.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 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();
            }
        }