コード例 #1
0
        public override void Execute(CommandContext context)
        {
            IFaceService faceService = new FaceService();

            ExtendedTrainResult result = null;

            var task = Task.Run(async() => { result = await faceService.GetTrainingStatusAsync(); });

            task.Wait(2000);

            if (result != null)
            {
                var sb = new StringBuilder();
                sb.AppendFormat("# Training Info #\n\n");
                sb.AppendFormat("Is Trained: {0}\n", result.IsTrained);
                sb.AppendFormat("Training Status: {0} \n", result.Status);
                sb.AppendFormat("Last Training: {0}\n\n\n", result.LastAction);

                if (result.IsTrained && result.PersonGroup != null && result.Persons != null)
                {
                    sb.AppendFormat("# Persongroup info #\n");
                    sb.AppendFormat("{0} {1}\n\n", result.PersonGroup.Name, result.PersonGroup.Id);

                    foreach (var person in result.Persons)
                    {
                        sb.AppendFormat("{0} - {1} faces\n", person.Name, person.FaceCount);
                    }
                }

                Context.ClientPage.ClientResponse.Alert(sb.ToString());
            }
            else
            {
                Context.ClientPage.ClientResponse.Alert("Timeout: Cannot get the training status from Azure.");
            }
        }
コード例 #2
0
        public async Task <ExtendedTrainResult> GetTrainingStatusAsync()
        {
            using (var faceServiceClient = CreateAzureClient())
            {
                var personRoot = GetPersonGroup();

                var trainingStatus =
                    await
                    faceServiceClient.GetPersonGroupTrainingStatusAsync(
                        personRoot.PersonGroupId.ToLowerInvariant());

                if (trainingStatus != null)
                {
                    var result = new ExtendedTrainResult()
                    {
                        Status     = trainingStatus.Status.ToString(),
                        Message    = trainingStatus.Message,
                        LastAction = trainingStatus.LastActionDateTime,
                        IsTrained  = true
                    };


                    try
                    {
                        var persons =
                            await faceServiceClient.ListPersonsAsync(personRoot.PersonGroupId.ToLowerInvariant());

                        result.Persons = persons?.Select(i => new PersonData()
                        {
                            FaceCount = i.PersistedFaceIds.Length, Name = i.Name, Id = i.PersonId
                        }).ToList();
                    }
                    catch (Exception e)
                    {
                        Log.Warn(e.ToString(), e, this);
                    }

                    try
                    {
                        var personGroup = await faceServiceClient.GetPersonGroupAsync(personRoot.PersonGroupId.ToLowerInvariant());

                        result.PersonGroup =
                            personGroup != null
                                    ? new PersonGroupData()
                        {
                            Id = personGroup.PersonGroupId, Name = personGroup.Name
                        }
                                    : null;
                    }
                    catch (FaceAPIException e)
                    {
                        Log.Warn(e.ToString(), e, this);
                    }



                    Log.Info(
                        $"Training status - {trainingStatus.Message} {trainingStatus.Status} {trainingStatus.LastActionDateTime} {trainingStatus.CreatedDateTime}",
                        this);

                    return(result);
                }
            }

            return(null);
        }