コード例 #1
0
        public async Task <RootResponse> GetSuggestedFaqs(int top)
        {
            var requestUri             = $"knowledgebases/{knowledgebaseId}";
            HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, requestUri);
            var response = await MakeRequestAsync(request);

            var result = new RootResponse();

            if (!string.IsNullOrEmpty(response))
            {
                var docUrl = (string)serializer.DeserializeObject(response);
                using (WebClient wc = new WebClient())
                {
                    var jsonData  = wc.DownloadString(docUrl);
                    var faqModels = ParseRawFaqData(jsonData, top);
                    result = faqModels;
                }
            }
            return(result);
        }
コード例 #2
0
        public async Task <RootResponse> GetAnswersAsync(string question, int top)
        {
            var requestUri             = $"knowledgebases/{knowledgebaseId}/generateAnswer";
            HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, requestUri);
            var body = $"{{\"question\": \"{question}\", \"top\": \"{top}\"}}";

            using (var content = new StringContent(body, Encoding.UTF8, "application/json"))
            {
                request.Content = content;
                var response = await MakeRequestAsync(request);

                var responseObj = new RootResponse();

                if (!string.IsNullOrEmpty(response))
                {
                    responseObj = serializer.Deserialize <RootResponse>(response);
                }

                return(responseObj);
            }
        }
コード例 #3
0
        private RootResponse ParseRawFaqData(string faqData, int top)
        {
            RootResponse  result  = new RootResponse();
            List <Answer> answers = new List <Answer>();
            var           faq     = faqData.Split('\t');

            for (int i = 0; i < faq.Length;)
            {
                var text     = faq[i];
                var position = text.LastIndexOf('?');

                if (position != -1)
                {
                    var questionText = text.Substring(text.IndexOf('\n') + 1).Replace("https://azure.microsoft.com/en-us/support/faq/", string.Empty);
                    var answerText   = faq[i + 1];

                    answerText   = RemoveInvalidChars(answerText);
                    questionText = RemoveInvalidChars(questionText);

                    Answer answer = new Answer();
                    answer.answer    = answerText;
                    answer.questions = new List <string> {
                        questionText
                    };
                    answers.Add(answer);
                    i += 1;
                    if (answers.Count == top)
                    {
                        break;
                    }
                }
                i++;
            }
            result.answers = answers;
            return(result);
        }