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."); } }
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); }