コード例 #1
0
        private Task <Workflow> PassActionResultToHandler(ConversationResult receivedConversationResult, Task <Stream> additionalData)
        {
            Trace.TraceInformation(
                $"CallingBotService: Received the outcome for {receivedConversationResult.OperationOutcome.Type} operation, callId: {receivedConversationResult.OperationOutcome.Id}");

            switch (receivedConversationResult.OperationOutcome.Type)
            {
            case ValidOutcomes.AnswerOutcome:
                return(HandleAnswerOutcome(receivedConversationResult, receivedConversationResult.OperationOutcome as AnswerOutcome));

            case ValidOutcomes.HangupOutcome:
                return(HandleHangupOutcome(receivedConversationResult, receivedConversationResult.OperationOutcome as HangupOutcome));

            case ValidOutcomes.PlayPromptOutcome:
                return(HandlePlayPromptOutcome(receivedConversationResult, receivedConversationResult.OperationOutcome as PlayPromptOutcome));

            case ValidOutcomes.RecognizeOutcome:
                return(HandleRecognizeOutcome(receivedConversationResult, receivedConversationResult.OperationOutcome as RecognizeOutcome));

            case ValidOutcomes.RecordOutcome:
                return(HandleRecordOutcome(receivedConversationResult, receivedConversationResult.OperationOutcome as RecordOutcome, additionalData));

            case ValidOutcomes.RejectOutcome:
                return(HandleRejectOutcome(receivedConversationResult, receivedConversationResult.OperationOutcome as RejectOutcome));

            case ValidOutcomes.WorkflowValidationOutcome:
                return(HandleWorkflowValidationOutcome(receivedConversationResult, receivedConversationResult.OperationOutcome as WorkflowValidationOutcome));
            }
            throw new BotCallingServiceException($"Unknown conversation result type {receivedConversationResult.OperationOutcome.Type}");
        }
コード例 #2
0
 public IEnumerable <ConversationResult <T> > CheckConversion(T fileId, bool start)
 {
     return(FileStorageService.CheckConversion(new ItemList <ItemList <string> >
     {
         new ItemList <string> {
             fileId.ToString(), "0", start.ToString()
         }
     })
            .Select(r =>
     {
         var o = new ConversationResult <T>
         {
             Id = r.Id,
             Error = r.Error,
             OperationType = r.OperationType,
             Processed = r.Processed,
             Progress = r.Progress,
             Source = r.Source,
         };
         if (!string.IsNullOrEmpty(r.Result))
         {
             try
             {
                 var jResult = JsonSerializer.Deserialize <FileJsonSerializerData <T> >(r.Result);
                 o.File = GetFileInfo(jResult.Id, jResult.Version);
             }
             catch (Exception e)
             {
                 Logger.Error(e);
             }
         }
         return o;
     }));
 }
コード例 #3
0
        private Task <Workflow> HandleHangupOutcome(ConversationResult conversationResult, HangupOutcome hangupOutcome)
        {
            var outcomeEvent = new HangupOutcomeEvent(conversationResult, CreateInitialWorkflow(), hangupOutcome);
            var eventHandler = OnHangupCompleted;

            return(InvokeHandlerIfSet(eventHandler, outcomeEvent));
        }
コード例 #4
0
        private Task <Workflow> HandleAnswerOutcome(ConversationResult conversationResult, AnswerOutcome answerOutcome)
        {
            var outcomeEvent = new AnswerOutcomeEvent(conversationResult, CreateInitialWorkflow(), answerOutcome);
            var eventHandler = OnAnswerCompleted;

            return(InvokeHandlerIfSet(eventHandler, outcomeEvent));
        }
コード例 #5
0
        private Task <Workflow> HandlePlayPromptOutcome(ConversationResult conversationResult, PlayPromptOutcome playPromptOutcome)
        {
            var outcomeEvent = new PlayPromptOutcomeEvent(conversationResult, CreateInitialWorkflow(), playPromptOutcome);
            var eventHandler = OnPlayPromptCompleted;

            return(InvokeHandlerIfSet(eventHandler, outcomeEvent));
        }
コード例 #6
0
        private Task <Workflow> HandleRecordOutcome(ConversationResult conversationResult, RecordOutcome recordOutcome, Task <Stream> recordedContent)
        {
            var outcomeEvent = new RecordOutcomeEvent(conversationResult, CreateInitialWorkflow(), recordOutcome, recordedContent);
            var eventHandler = OnRecordCompleted;

            return(InvokeHandlerIfSet(eventHandler, outcomeEvent));
        }
コード例 #7
0
        private Task <Workflow> HandleRejectOutcome(ConversationResult conversationResult, RejectOutcome rejectOutcome)
        {
            var outcomeEvent = new RejectOutcomeEvent(conversationResult, CreateInitialWorkflow(), rejectOutcome);
            var eventHandler = OnRejectCompleted;

            return(InvokeHandlerIfSet(eventHandler, outcomeEvent));
        }
コード例 #8
0
 public IEnumerable <ConversationResult <T> > CheckConversion(T fileId, bool start)
 {
     return(FileStorageService.CheckConversion(new ItemList <ItemList <string> >
     {
         new ItemList <string> {
             fileId.ToString(), "0", start.ToString()
         }
     })
            .Select(r =>
     {
         var o = new ConversationResult <T>
         {
             Id = r.Id,
             Error = r.Error,
             OperationType = r.OperationType,
             Processed = r.Processed,
             Progress = r.Progress,
             Source = r.Source,
         };
         if (!string.IsNullOrEmpty(r.Result))
         {
             var jResult = JObject.Parse(r.Result);
             o.File = GetFileInfo(jResult.Value <T>("id"), jResult.Value <int>("version"));
         }
         return o;
     }));
 }
        /// <summary>
        /// Invokes handlers for callback on the bot
        /// </summary>
        /// <param name="conversationResult">ConversationResult that has the details of the callback</param>
        /// <returns></returns>
        internal async Task <string> ProcessConversationResult(ConversationResult conversationResult)
        {
            conversationResult.Validate();
            var newWorkflowResult = await PassActionResultToHandler(conversationResult).ConfigureAwait(false);

            if (newWorkflowResult == null)
            {
                throw new BotCallingServiceException($"[{CallLegId}]: No workflow returned for AnswerAppHostedMediaOutcome");
            }

            bool expectEmptyActions = false;

            if (conversationResult.OperationOutcome.Type == RealTimeMediaValidOutcomes.AnswerAppHostedMediaOutcome && conversationResult.OperationOutcome.Outcome == Outcome.Success)
            {
                Uri link;
                if (conversationResult.Links.TryGetValue("subscriptions", out link))
                {
                    _subscriptionLink = link;
                    Trace.TraceInformation($"RealTimeMediaCallService [{CallLegId}]: Caching subscription link {link}");
                }

                if (conversationResult.Links.TryGetValue("call", out link))
                {
                    _callLink = link;
                    Trace.TraceInformation($"RealTimeMediaCallService [{CallLegId}]: Caching call link {link}");
                }
                expectEmptyActions = true;

                Trace.TraceInformation($"RealTimeMediaCallService [{CallLegId}]: Disposing call expiry timer");
                _timer.Dispose();
            }

            newWorkflowResult.Validate(expectEmptyActions);
            return(RealTimeMediaSerializer.SerializeToJson(newWorkflowResult));
        }
コード例 #10
0
 public BingSpeech(ConversationResult conversationResult, Action <string> callback, Action <bool> failedCallback,
                   Func <IDialog <object> > dialog)
 {
     _conversationResult = conversationResult;
     _callback           = callback;
     _failedCallback     = failedCallback;
     _dialog             = dialog;
 }
コード例 #11
0
 /// <summary>
 /// EventArg for the OnAnswerAppHostedMediaCompleted event raised on <see cref="IRealTimeMediaCallService"/>.
 /// </summary>
 /// <param name="conversationResult">ConversationResult corresponding to the event</param>
 /// <param name="resultingWorkflow">Workflow to be returned on completion</param>
 /// <param name="outcome">outcome of the operation</param>
 public AnswerAppHostedMediaOutcomeEvent(ConversationResult conversationResult, RealTimeMediaWorkflow resultingWorkflow, AnswerAppHostedMediaOutcome outcome) : base(conversationResult, resultingWorkflow)
 {
     if (outcome == null)
     {
         throw new ArgumentNullException(nameof(outcome));
     }
     AnswerAppHostedMediaOutcome = outcome;
 }
コード例 #12
0
 public PlayPromptOutcomeEvent(ConversationResult conversationResult, Workflow resultingWorkflow, PlayPromptOutcome outcome)
     : base(conversationResult, resultingWorkflow)
 {
     if (outcome == null)
     {
         throw new ArgumentNullException(nameof(outcome));
     }
     PlayPromptOutcome = outcome;
 }
コード例 #13
0
        private Task <Workflow> HandleWorkflowValidationOutcome(
            ConversationResult conversationResult,
            WorkflowValidationOutcome workflowValidationOutcome)
        {
            var outcomeEvent = new WorkflowValidationOutcomeEvent(conversationResult, CreateInitialWorkflow(), workflowValidationOutcome);
            var eventHandler = OnWorkflowValidationFailed;

            return(InvokeHandlerIfSet(eventHandler, outcomeEvent));
        }
コード例 #14
0
 public RecognizeOutcomeEvent(ConversationResult conversationResult, Workflow resultingWorkflow, RecognizeOutcome outcome)
     : base(conversationResult, resultingWorkflow)
 {
     if (outcome == null)
     {
         throw new ArgumentNullException(nameof(outcome));
     }
     RecognizeOutcome = outcome;
 }
コード例 #15
0
        public void AnalyzeConversationOrchestrationPredictionConversation()
        {
            ConversationAnalysisClient client = Client;
            Response <AnalyzeConversationTaskResult> response = client.AnalyzeConversation(
                "Send an email to Carol about the tomorrow's demo",
                TestEnvironment.OrchestrationProject);

            CustomConversationalTaskResult customConversationalTaskResult = response.Value as CustomConversationalTaskResult;
            var orchestratorPrediction = customConversationalTaskResult.Results.Prediction as OrchestratorPrediction;

            #region Snippet:ConversationAnalysis_AnalyzeConversationOrchestrationPredictionConversation
            string             respondingProjectName = orchestratorPrediction.TopIntent;
            TargetIntentResult targetIntentResult    = orchestratorPrediction.Intents[respondingProjectName];

            if (targetIntentResult.TargetKind == TargetKind.Conversation)
            {
                ConversationTargetIntentResult cluTargetIntentResult = targetIntentResult as ConversationTargetIntentResult;

                ConversationResult     conversationResult     = cluTargetIntentResult.Result;
                ConversationPrediction conversationPrediction = conversationResult.Prediction;

                Console.WriteLine($"Top Intent: {conversationResult.Prediction.TopIntent}");
                Console.WriteLine($"Intents:");
                foreach (ConversationIntent intent in conversationPrediction.Intents)
                {
                    Console.WriteLine($"Intent Category: {intent.Category}");
                    Console.WriteLine($"Confidence: {intent.Confidence}");
                    Console.WriteLine();
                }

                Console.WriteLine($"Entities:");
                foreach (ConversationEntity entity in conversationPrediction.Entities)
                {
                    Console.WriteLine($"Entity Text: {entity.Text}");
                    Console.WriteLine($"Entity Category: {entity.Category}");
                    Console.WriteLine($"Confidence: {entity.Confidence}");
                    Console.WriteLine($"Starting Position: {entity.Offset}");
                    Console.WriteLine($"Length: {entity.Length}");
                    Console.WriteLine();

                    foreach (BaseResolution resolution in entity.Resolutions)
                    {
                        if (resolution is DateTimeResolution dateTimeResolution)
                        {
                            Console.WriteLine($"Datetime Sub Kind: {dateTimeResolution.DateTimeSubKind}");
                            Console.WriteLine($"Timex: {dateTimeResolution.Timex}");
                            Console.WriteLine($"Value: {dateTimeResolution.Value}");
                            Console.WriteLine();
                        }
                    }
                }
            }
            #endregion
            Assert.That(targetIntentResult.TargetKind, Is.EqualTo(TargetKind.Conversation));
            Assert.That(orchestratorPrediction.TopIntent, Is.EqualTo("EmailIntent"));
        }
コード例 #16
0
        //GET
        public async Task <IActionResult> EditConversationResult(int?id)
        {
            int.TryParse(TempData["ExamId"].ToString(), out int examId);
            var passedStudents = await _repository.Query <Student>()
                                 .Include(i => i.Result)
                                 .ThenInclude(u => u.Exam)
                                 .Where(x => x.PassedExam == true)
                                 .Where(y => y.Result.Exam.Id == examId)
                                 .ToListAsync();

            if (id == null)
            {
                return(NotFound());
            }
            var student = await _repository.Query <Student>()
                          .Include(x => x.ConversationResult)
                          .FirstOrDefaultAsync(x => x.Id == id);

            TempData["ConversationResultId"] = student.ConversationResultId;
            TempData["StudentId"]            = student.Id;

            if (student.ConversationResult == null)
            {
                ConversationResult conversationResult = new ConversationResult
                {
                    Student = student
                };

                student.ConversationResult = conversationResult;
                conversationResult         = await _repository.InsertAsync(conversationResult);

                _logger.LogInformation("New conversation result added to DB. User {User}.", _user);
                student.ConversationResultId     = conversationResult.Id;
                TempData["ConversationResultId"] = student.ConversationResultId;
                await _repository.SaveAsync();

                ConversationResultViewModel conversationResultViewModel = new ConversationResultViewModel
                {
                    ConversationResultId = conversationResult.Id
                };
                TempData["ExamId"] = examId;
                return(View(ConversationResultMappings.ToViewModel(student, conversationResult, examId)));
            }
            else
            {
                var conversationResult = await _repository.FindByIdAsync <ConversationResult>(student.ConversationResultId);

                ConversationResultViewModel conversationResultViewModel = new ConversationResultViewModel
                {
                    ConversationResultId = conversationResult.Id
                };
                TempData["ExamId"] = examId;
                return(View(ConversationResultMappings.ToViewModel(student, conversationResult, examId)));
            }
        }
コード例 #17
0
        /// <summary>
        /// Method responsible for processing the data sent with POST request to callback URL
        /// </summary>
        /// <param name="content">The content of request</param>
        /// <param name="additionalData">The remaining part of request in case of multi part request</param>
        /// <returns>Returns the response that should be sent to the sender of POST request</returns>
        public async Task <string> ProcessCallbackAsync(string content, Task <Stream> additionalData)
        {
            if (content == null)
            {
                throw new ArgumentNullException(nameof(content));
            }

            ConversationResult conversationResult = ConvertToConversationResult(content);

            return(await ProcessConversationResult(conversationResult, additionalData).ConfigureAwait(false));
        }
コード例 #18
0
        private async Task <string> ProcessConversationResult(ConversationResult conversationResult, Task <Stream> additionalData)
        {
            conversationResult.Validate();
            var newWorkflowResult = await PassActionResultToHandler(conversationResult, additionalData).ConfigureAwait(false);

            if (newWorkflowResult == null)
            {
                return("");
            }
            newWorkflowResult.Validate();
            return(Serializer.SerializeToJson(newWorkflowResult));
        }
コード例 #19
0
        /// <summary>
        /// 初始化会话
        /// </summary>
        /// <param name="message"></param>
        /// <param name="botConnectorKey"></param>
        /// <returns></returns>
        public async Task <ConversationResult> Conversation(string message, string botConnectorKey)
        {
            conversationResult = new ConversationResult();

            if (await GetToken(botConnectorKey))
            {
                return(await CreateOrGetConversation(message));
            }

            conversationResult.resultMessage = "授权失败!";
            return(conversationResult);
        }
コード例 #20
0
 public RecordOutcomeEvent(
     ConversationResult conversationResult,
     Workflow resultingWorkflow,
     RecordOutcome outcome,
     Task <Stream> recordedContent) : base(conversationResult, resultingWorkflow)
 {
     if (outcome == null)
     {
         throw new ArgumentNullException(nameof(outcome));
     }
     RecordOutcome   = outcome;
     RecordedContent = recordedContent;
 }
コード例 #21
0
 public OutcomeEventBase(ConversationResult conversationResult, Workflow resultingWorkflow)
 {
     if (conversationResult == null)
     {
         throw new ArgumentNullException(nameof(conversationResult));
     }
     if (resultingWorkflow == null)
     {
         throw new ArgumentNullException(nameof(resultingWorkflow));
     }
     ConversationResult = conversationResult;
     ResultingWorkflow  = resultingWorkflow;
 }
コード例 #22
0
        //GET
        public async Task <IActionResult> EditConversationForm(int?studentId)
        {
            var studentById = await _repository.Query <Student>().FirstOrDefaultAsync(x => x.Id == studentId);

            int.TryParse(TempData["ExamId"].ToString(), out int examId);
            var conversationForms = await _repository
                                    .Query <ConversationForm>()
                                    .Include(x => x.ConversationResult)
                                    .ThenInclude(x => x.Student)
                                    .Where(x => x.ConversationResultId == studentById.ConversationResultId)
                                    .ToListAsync();

            List <ConversationForm> newConversationForms = new List <ConversationForm>();

            if (studentById.ConversationResultId == null)
            {
                ConversationResult conversationResult = new ConversationResult
                {
                    Student           = studentById,
                    StudentForeignKey = studentById.Id
                };
                await _repository.InsertAsync(conversationResult);

                studentById.ConversationResultId = conversationResult.Id;
                await _repository.SaveAsync();
            }
            if (conversationForms.Count() == 0)
            {
                for (int i = 0; i < 10; i++)
                {
                    newConversationForms.Add(new ConversationForm {
                        ConversationResultId = studentById.ConversationResultId
                    });
                    await _repository.InsertAsync <ConversationForm>(newConversationForms.ElementAt(i));
                }
                conversationForms = newConversationForms;
                conversationForms = await _repository
                                    .Query <ConversationForm>()
                                    .Include(x => x.ConversationResult)
                                    .ThenInclude(x => x.Student)
                                    .Where(x => x.ConversationResultId == studentById.ConversationResultId)
                                    .ToListAsync();

                _logger.LogInformation("Successfully created conversation form. User {User}", _user);
            }
            TempData["ExamId"] = examId;
            TempData["ConversationResultId"] = studentById.ConversationResultId;
            TempData["StudentId"]            = studentById.Id;
            return(View(ConversationResultMappings.ToConversationFormViewModel(conversationForms, studentById, examId)));
        }
コード例 #23
0
        public void AnalyzeConversationOrchestrationPredictionConversation()
        {
            ConversationAnalysisClient client = Client;

            Response <AnalyzeConversationResult> response = client.AnalyzeConversation(
                "We'll have 2 plates of seared salmon nigiri.",
                TestEnvironment.OrchestrationProject);

            OrchestratorPrediction orchestratorPrediction = response.Value.Prediction as OrchestratorPrediction;

            #region Snippet:ConversationAnalysis_AnalyzeConversationOrchestrationPredictionConversation
            string             respondingProjectName = orchestratorPrediction.TopIntent;
            TargetIntentResult targetIntentResult    = orchestratorPrediction.Intents[respondingProjectName];

            if (targetIntentResult.TargetKind == TargetKind.Conversation)
            {
                ConversationTargetIntentResult cluTargetIntentResult = targetIntentResult as ConversationTargetIntentResult;

                ConversationResult     conversationResult     = cluTargetIntentResult.Result;
                ConversationPrediction conversationPrediction = conversationResult.Prediction;

                if (!String.IsNullOrEmpty(conversationResult.DetectedLanguage))
                {
                    Console.WriteLine($"Detected Language: {conversationResult.DetectedLanguage}");
                }

                Console.WriteLine($"Top Intent: {conversationResult.Prediction.TopIntent}");
                Console.WriteLine($"Intents:");
                foreach (ConversationIntent intent in conversationPrediction.Intents)
                {
                    Console.WriteLine($"Intent Category: {intent.Category}");
                    Console.WriteLine($"Confidence Score: {intent.ConfidenceScore}");
                    Console.WriteLine();
                }

                Console.WriteLine($"Entities:");
                foreach (ConversationEntity entitiy in conversationPrediction.Entities)
                {
                    Console.WriteLine($"Entity Text: {entitiy.Text}");
                    Console.WriteLine($"Entity Category: {entitiy.Category}");
                    Console.WriteLine($"Confidence Score: {entitiy.ConfidenceScore}");
                    Console.WriteLine($"Starting Position: {entitiy.Offset}");
                    Console.WriteLine($"Length: {entitiy.Length}");
                    Console.WriteLine();
                }
            }
            #endregion
            Assert.That(targetIntentResult.TargetKind, Is.EqualTo(TargetKind.Conversation));
            Assert.That(orchestratorPrediction.TopIntent, Is.EqualTo("SushiOrder"));
        }
コード例 #24
0
 public static ConversationResultViewModel ToViewModel(Student studentEntity, ConversationResult conversationResultEntity, int?examId)
 {
     return(new ConversationResultViewModel
     {
         StudentId = studentEntity.Id,
         FirstName = studentEntity.FirstName,
         LastName = studentEntity.LastName,
         Email = studentEntity.Email,
         PhoneNumber = studentEntity.PhoneNumber,
         ConversationResultComment = conversationResultEntity.Comment,
         ConversationResultId = (int)studentEntity.ConversationResultId,
         Grade = conversationResultEntity.Grade == null ? 0 : conversationResultEntity.Grade,
         ExamId = examId
     });
 }
コード例 #25
0
 public static ConversationResultViewModel ToConversationResultViewModel(ConversationResult conversationResultEntity)
 {
     if (conversationResultEntity == null)
     {
         return(new ConversationResultViewModel
         {
             Grade = null,
             ConversationResultComment = null,
         });
     }
     return(new ConversationResultViewModel
     {
         ConversationResultId = conversationResultEntity.Id,
         Grade = conversationResultEntity?.Grade,
     });
 }
        private Task <RealTimeMediaWorkflow> PassActionResultToHandler(ConversationResult receivedConversationResult)
        {
            Trace.TraceInformation(
                $"RealTimeMediaCallService [{CallLegId}]: Received the outcome for {receivedConversationResult.OperationOutcome.Type} operation, callId: {receivedConversationResult.OperationOutcome.Id}");

            switch (receivedConversationResult.OperationOutcome.Type)
            {
            case RealTimeMediaValidOutcomes.AnswerAppHostedMediaOutcome:
                return(HandleAnswerAppHostedMediaOutcome(receivedConversationResult, receivedConversationResult.OperationOutcome as AnswerAppHostedMediaOutcome));

            case ValidOutcomes.WorkflowValidationOutcome:
                return(HandleWorkflowValidationOutcome(receivedConversationResult, receivedConversationResult.OperationOutcome as WorkflowValidationOutcome));
            }

            throw new BotCallingServiceException($"[{CallLegId}]: Unknown conversation result type {receivedConversationResult.OperationOutcome.Type}");
        }
コード例 #27
0
        public async static Task <string> PostMessage(string message)
        {
            BotClient botClient = new BotClient();

            //这里测试的是贩卖机的Bot
            string botFrom         = "Demo";
            string botConnectorKey = "Put your DL3.0 key here";

            ConversationResult result = await botClient.Conversation(message, botConnectorKey);

            if (result.botActivities != null)
            {
                foreach (Activities activities in result.botActivities.activities.Where(item => item.from.id == botFrom))
                {
                    replyMessages = activities.text;
                }
            }
            return(replyMessages);
        }
コード例 #28
0
 public static void ToEntity(Student student, Result result, ConversationResult conversationResult, ImportedStudentsDataModel importedStudentsDataModel)
 {
     student.FirstName            = importedStudentsDataModel.FirstName;
     student.LastName             = importedStudentsDataModel.LastName;
     student.PassedExam           = importedStudentsDataModel.PassedExam;
     student.InvitedToStudy       = importedStudentsDataModel.InvitationToStudy;
     student.SignedAContract      = importedStudentsDataModel.SignedAContract;
     student.ResultId             = result.Id;
     student.Result               = result;
     student.ConversationResultId = conversationResult.Id;
     student.ConversationResult   = conversationResult;
     student.Email                        = importedStudentsDataModel.Email;
     student.PhoneNumber                  = importedStudentsDataModel.PhoneNumber;
     result.Student                       = student;
     result.StudentForeignKey             = student.Id;
     result.Tasks                         = importedStudentsDataModel.Tasks;
     conversationResult.Grade             = importedStudentsDataModel.ConversationResult;
     conversationResult.StudentForeignKey = student.Id;
     conversationResult.Student           = student;
 }
コード例 #29
0
        /// <summary>
        /// Makes a Conversational API request
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public async Task <ConversationResult> Compute(ConversationRequest request)
        {
            string baseUrl = ApiBaseUrl;

            if (!string.IsNullOrWhiteSpace(request?.Host))
            {
                baseUrl = $"https://{request.Host}/api/";
            }
            baseUrl += ConversationalApiUrl;
            string url = BuildUrl(baseUrl, request);

            using (var client = new HttpClient())
            {
                var httpRequest = await client.GetAsync(url);

                var response = await httpRequest.Content.ReadAsStringAsync();

                ConversationResult result = JsonConvert.DeserializeObject <ConversationResult>(response);
                return(result);
            }
        }
コード例 #30
0
 public IEnumerable <ConversationResult <T> > CheckConversion(T fileId, bool start, bool sync = false)
 {
     return(FileStorageService.CheckConversion(new List <List <string> >
     {
         new List <string> {
             fileId.ToString(), "0", start.ToString()
         }
     }, sync)
            .Select(r =>
     {
         var o = new ConversationResult <T>
         {
             Id = r.Id,
             Error = r.Error,
             OperationType = r.OperationType,
             Processed = r.Processed,
             Progress = r.Progress,
             Source = r.Source,
         };
         if (!string.IsNullOrEmpty(r.Result))
         {
             try
             {
                 var options = new JsonSerializerOptions
                 {
                     AllowTrailingCommas = true,
                     PropertyNameCaseInsensitive = true
                 };
                 var jResult = JsonSerializer.Deserialize <FileJsonSerializerData <T> >(r.Result, options);
                 o.File = GetFileInfo(jResult.Id, jResult.Version);
             }
             catch (Exception e)
             {
                 Logger.Error(e);
             }
         }
         return o;
     }));
 }