/// <summary> /// Identifies person from temporary image taken from App /// </summary> /// <returns>Name of identified person</returns> public async Task <string> Identify(string name) { var azureBlobHelper = new AzureBlobHelper(); string takenImageUri = null; takenImageUri = azureBlobHelper.GetImageUri(name); if (takenImageUri == null) { throw new ManagerException(RecognitionErrorMessages.WrongUriError); } var memoryStream = new MemoryStream(); memoryStream = RecUtil.GetStreamFromUri(takenImageUri); var faces = await _faceServiceClient.DetectAsync(memoryStream); if (faces.Length == 0 || faces == null) { throw new ManagerException(RecognitionErrorMessages.NoFacesFoundError); } var faceIds = faces.Select(face => face.FaceId).ToArray(); var results = await _faceServiceClient.IdentifyAsync(_groupId, faceIds); if (results.Length == 0 || results == null || results[0].Candidates.Length == 0 || results[0].Candidates[0] == null) { throw new ManagerException(RecognitionErrorMessages.NoOneIdentifiedError); } var candidateId = results[0].Candidates[0].PersonId; var person = await _faceServiceClient.GetPersonAsync(_groupId, candidateId); azureBlobHelper.DeletePhoto(name); return(person.Name); }