private static void LoadUpdateQnADTOs( IEnumerable <PortalDbRecordDTO> portalDbRecords, QnADocumentsDTO qnaDocumentsDTO, List <UpdateQnaDTO> updateQnADTOs) { foreach (PortalDbRecordDTO portalDbRecord in portalDbRecords) { Questions questions = new Questions(); questions.Add = new List <string>(); Metadata metadata = new Metadata(); metadata.Add = new List <MetadataDTO>(); metadata.Delete = new List <MetadataDTO>(); foreach (QnADTO qnAdto in qnaDocumentsDTO.QnaDTO) { IEnumerable <string> source = qnAdto.Metadata.Where <MetadataDTO>((Func <MetadataDTO, bool>)(m => m.Name.ToLower() == "faqid")).Select <MetadataDTO, string>((Func <MetadataDTO, string>)(m => m.Value)); if (source.FirstOrDefault <string>() != null) { string str = source.FirstOrDefault <string>().ToString(); if (portalDbRecord.FaqId.ToString() == str) { questions.Add.Add(portalDbRecord.FaqQuestion); foreach (MetadataDTO metadataDto1 in qnAdto.Metadata) { MetadataDTO metadataDto2 = new MetadataDTO() { Name = metadataDto1.Name, Value = metadataDto1.Value }; metadata.Delete.Add(metadataDto2); } List <MetadataDTO> metadataDtoList = LoadMetadata(portalDbRecord); foreach (var metadataDto in metadataDtoList) { metadata.Add.Add(metadataDto); } UpdateQnaDTO updateQnaDto = new UpdateQnaDTO() { Answer = portalDbRecord.FaqAnswer, Context = qnAdto.Context, Id = qnAdto.Id, Metadata = metadata, Questions = questions, Source = qnAdto.Source }; updateQnADTOs.Add(updateQnaDto); } } } } }
/// <inheritdoc/> public async Task UpdateQnAPairAsync(Question question, SuggestedAnswer suggestedAnswer) { if (question is null) { throw new ArgumentNullException(nameof(question)); } if (suggestedAnswer is null) { throw new ArgumentNullException(nameof(suggestedAnswer)); } var dto = new UpdateQnaDTO() { Id = suggestedAnswer.Id, Questions = new UpdateQnaDTOQuestions() { Add = new List <string>() { question.GetSanitizedMessage() }, }, }; var operation = new UpdateKbOperationDTO() { Update = new UpdateKbOperationDTOUpdate() { QnaList = new List <UpdateQnaDTO>() { dto }, }, }; try { var response = await this.qnAClient.Knowledgebase.UpdateAsync(this.settings.KnowledgeBaseId, operation); } catch (ErrorResponseException exception) { var message = $"Failed to update QnA Pair to QnA Service. Question Id: {question.Id}, QnAPair Id : {suggestedAnswer.Id}."; this.logger.LogWarning(exception, message); throw new QBotException(HttpStatusCode.InternalServerError, ErrorCode.Unknown, message, exception); } }