Skip to content
Draft
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions sdk/face/Azure.AI.Vision.Face/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,10 @@
### Features Added

- Exposed `JsonModelWriteCore` for model serialization procedure.
- Added support for service versions `v1.2` and `v1.3-preview.1`.

### Breaking Changes
- Removed deprecated operations prior to service version `v1.2`.

### Bugs Fixed

Expand Down
14 changes: 5 additions & 9 deletions sdk/face/Azure.AI.Vision.Face/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -252,8 +252,8 @@ Here is an example to create the session for liveness detection.

```C# Snippet:CreateLivenessSession
var createContent = new CreateLivenessSessionContent(LivenessOperationMode.Passive) {
SendResultsToClient = true,
DeviceCorrelationId = Guid.NewGuid().ToString(),
UserCorrelationId = Guid.NewGuid().ToString(),
};

var createResponse = sessionClient.CreateLivenessSession(createContent);
Expand All @@ -268,15 +268,11 @@ After you've performed liveness detection, you can retrieve the result by provid
```C# Snippet:GetLivenessSessionResult
var getResultResponse = sessionClient.GetLivenessSessionResult(sessionId);
var sessionResult = getResultResponse.Value;
Console.WriteLine($"Id: {sessionResult.Id}");
Console.WriteLine($"CreatedDateTime: {sessionResult.CreatedDateTime}");
Console.WriteLine($"SessionExpired: {sessionResult.SessionExpired}");
Console.WriteLine($"DeviceCorrelationId: {sessionResult.DeviceCorrelationId}");
Console.WriteLine($"AuthTokenTimeToLiveInSeconds: {sessionResult.AuthTokenTimeToLiveInSeconds}");
Console.WriteLine($"Id: {sessionResult.SessionId}");
Console.WriteLine($"Status: {sessionResult.Status}");
Console.WriteLine($"SessionStartDateTime: {sessionResult.SessionStartDateTime}");
if (sessionResult.Result != null) {
WriteLivenessSessionAuditEntry(sessionResult.Result);
if (sessionResult.Results != null)
{
WriteLivenessSessionResults(sessionResult.Results);
}
```

Expand Down
429 changes: 231 additions & 198 deletions sdk/face/Azure.AI.Vision.Face/api/Azure.AI.Vision.Face.net8.0.cs

Large diffs are not rendered by default.

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion sdk/face/Azure.AI.Vision.Face/assets.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@
"AssetsRepo": "Azure/azure-sdk-assets",
"AssetsRepoPrefixPath": "net",
"TagPrefix": "net/face/Azure.AI.Vision.Face",
"Tag": "net/face/Azure.AI.Vision.Face_3208a2f5ac"
"Tag": "net/face/Azure.AI.Vision.Face_a00e23f72f"
}
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@ Before you can detect liveness in a face, you need to create a liveness detectio

```C# Snippet:CreateLivenessSession
var createContent = new CreateLivenessSessionContent(LivenessOperationMode.Passive) {
SendResultsToClient = true,
DeviceCorrelationId = Guid.NewGuid().ToString(),
UserCorrelationId = Guid.NewGuid().ToString(),
};

var createResponse = sessionClient.CreateLivenessSession(createContent);
Expand All @@ -56,69 +56,45 @@ After you've performed liveness detection, you can retrieve the result by provid
```C# Snippet:GetLivenessSessionResult
var getResultResponse = sessionClient.GetLivenessSessionResult(sessionId);
var sessionResult = getResultResponse.Value;
Console.WriteLine($"Id: {sessionResult.Id}");
Console.WriteLine($"CreatedDateTime: {sessionResult.CreatedDateTime}");
Console.WriteLine($"SessionExpired: {sessionResult.SessionExpired}");
Console.WriteLine($"DeviceCorrelationId: {sessionResult.DeviceCorrelationId}");
Console.WriteLine($"AuthTokenTimeToLiveInSeconds: {sessionResult.AuthTokenTimeToLiveInSeconds}");
Console.WriteLine($"Id: {sessionResult.SessionId}");
Console.WriteLine($"Status: {sessionResult.Status}");
Console.WriteLine($"SessionStartDateTime: {sessionResult.SessionStartDateTime}");
if (sessionResult.Result != null) {
WriteLivenessSessionAuditEntry(sessionResult.Result);
}
```

```C# Snippet:WriteLivenessSessionAuditEntry
public void WriteLivenessSessionAuditEntry(LivenessSessionAuditEntry auditEntry)
{
Console.WriteLine($"Id: {auditEntry.Id}");
Console.WriteLine($"SessionId: {auditEntry.SessionId}");
Console.WriteLine($"RequestId: {auditEntry.RequestId}");
Console.WriteLine($"ClientRequestId: {auditEntry.ClientRequestId}");
Console.WriteLine($"ReceivedDateTime: {auditEntry.ReceivedDateTime}");
Console.WriteLine($"Digest: {auditEntry.Digest}");

Console.WriteLine($" Request Url: {auditEntry.Request.Url}");
Console.WriteLine($" Request Method: {auditEntry.Request.Method}");
Console.WriteLine($" Request ContentLength: {auditEntry.Request.ContentLength}");
Console.WriteLine($" Request ContentType: {auditEntry.Request.ContentType}");
Console.WriteLine($" Request UserAgent: {auditEntry.Request.UserAgent}");

Console.WriteLine($" Response StatusCode: {auditEntry.Response.StatusCode}");
Console.WriteLine($" Response LatencyInMilliseconds: {auditEntry.Response.LatencyInMilliseconds}");
Console.WriteLine($" Response Body LivenessDecision: {auditEntry.Response.Body.LivenessDecision}");
Console.WriteLine($" Response Body ModelVersionUsed: {auditEntry.Response.Body.ModelVersionUsed}");
Console.WriteLine($" Response Body Target FaceRectangle: {auditEntry.Response.Body.Target.FaceRectangle.Top}, {auditEntry.Response.Body.Target.FaceRectangle.Left}, {auditEntry.Response.Body.Target.FaceRectangle.Width}, {auditEntry.Response.Body.Target.FaceRectangle.Height}");
Console.WriteLine($" Response Body Target FileName: {auditEntry.Response.Body.Target.FileName}");
Console.WriteLine($" Response Body Target TimeOffsetWithinFile: {auditEntry.Response.Body.Target.TimeOffsetWithinFile}");
Console.WriteLine($" Response Body Target FaceImageType: {auditEntry.Response.Body.Target.ImageType}");
}
```

If there are multiple liveness calls, you can retrieve the result by getting liveness audit entries.

```C# Snippet:GetLivenessSessionAuditEntries
var getAuditEntriesResponse = sessionClient.GetLivenessSessionAuditEntries(sessionId);
foreach (var auditEntry in getAuditEntriesResponse.Value)
if (sessionResult.Results != null)
{
WriteLivenessSessionAuditEntry(auditEntry);
WriteLivenessSessionResults(sessionResult.Results);
}
```

## List all liveness sessions

All existing sessions can be listed by sending a request to the service.

```C# Snippet:GetLivenessSessions
var listResponse = sessionClient.GetLivenessSessions();
foreach (var session in listResponse.Value)
```C# Snippet:WriteLivenessSessionResults
public void WriteLivenessSessionResults(LivenessSessionResults results)
{
Console.WriteLine($"SessionId: {session.Id}");
Console.WriteLine($"CreatedDateTime: {session.CreatedDateTime}");
Console.WriteLine($"SessionExpired: {session.SessionExpired}");
Console.WriteLine($"DeviceCorrelationId: {session.DeviceCorrelationId}");
Console.WriteLine($"AuthTokenTimeToLiveInSeconds: {session.AuthTokenTimeToLiveInSeconds}");
Console.WriteLine($"SessionStartDateTime: {session.SessionStartDateTime}");
if (results.Attempts == null || results.Attempts.Count == 0)
{
Console.WriteLine("No attempts found in the session results.");
return;
}

var firstAttempt = results.Attempts[0];
Console.WriteLine($"Attempt ID: {firstAttempt.AttemptId}");
Console.WriteLine($"Attempt Status: {firstAttempt.AttemptStatus}");

if (firstAttempt.Result != null)
{
var result = firstAttempt.Result;
Console.WriteLine($" Liveness Decision: {result.LivenessDecision}");
Console.WriteLine($" Digest: {result.Digest}");
Console.WriteLine($" Session Image ID: {result.SessionImageId}");

if (result.Targets?.Color?.FaceRectangle != null)
{
var faceRect = result.Targets.Color.FaceRectangle;
Console.WriteLine($" Face Rectangle: Top={faceRect.Top}, Left={faceRect.Left}, Width={faceRect.Width}, Height={faceRect.Height}");
}
}

if (firstAttempt.ClientInformation != null && firstAttempt.ClientInformation.Count > 0)
{
Console.WriteLine($" Client Information Count: {firstAttempt.ClientInformation.Count}");
}
}
```

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@ Before you can detect liveness in a face, you need to create a liveness detectio

```C# Snippet:CreateLivenessSessionAsync
var createContent = new CreateLivenessSessionContent(LivenessOperationMode.Passive) {
SendResultsToClient = true,
DeviceCorrelationId = Guid.NewGuid().ToString(),
UserCorrelationId = Guid.NewGuid().ToString(),
};

var createResponse = await sessionClient.CreateLivenessSessionAsync(createContent);
Expand All @@ -56,69 +56,45 @@ After you've performed liveness detection, you can retrieve the result by provid
```C# Snippet:GetLivenessSessionResultAsync
var getResultResponse = await sessionClient.GetLivenessSessionResultAsync(sessionId);
var sessionResult = getResultResponse.Value;
Console.WriteLine($"Id: {sessionResult.Id}");
Console.WriteLine($"CreatedDateTime: {sessionResult.CreatedDateTime}");
Console.WriteLine($"SessionExpired: {sessionResult.SessionExpired}");
Console.WriteLine($"DeviceCorrelationId: {sessionResult.DeviceCorrelationId}");
Console.WriteLine($"AuthTokenTimeToLiveInSeconds: {sessionResult.AuthTokenTimeToLiveInSeconds}");
Console.WriteLine($"Id: {sessionResult.SessionId}");
Console.WriteLine($"Status: {sessionResult.Status}");
Console.WriteLine($"SessionStartDateTime: {sessionResult.SessionStartDateTime}");
if (sessionResult.Result != null) {
WriteLivenessSessionAuditEntry(sessionResult.Result);
}
```

```C# Snippet:WriteLivenessSessionAuditEntry
public void WriteLivenessSessionAuditEntry(LivenessSessionAuditEntry auditEntry)
{
Console.WriteLine($"Id: {auditEntry.Id}");
Console.WriteLine($"SessionId: {auditEntry.SessionId}");
Console.WriteLine($"RequestId: {auditEntry.RequestId}");
Console.WriteLine($"ClientRequestId: {auditEntry.ClientRequestId}");
Console.WriteLine($"ReceivedDateTime: {auditEntry.ReceivedDateTime}");
Console.WriteLine($"Digest: {auditEntry.Digest}");

Console.WriteLine($" Request Url: {auditEntry.Request.Url}");
Console.WriteLine($" Request Method: {auditEntry.Request.Method}");
Console.WriteLine($" Request ContentLength: {auditEntry.Request.ContentLength}");
Console.WriteLine($" Request ContentType: {auditEntry.Request.ContentType}");
Console.WriteLine($" Request UserAgent: {auditEntry.Request.UserAgent}");

Console.WriteLine($" Response StatusCode: {auditEntry.Response.StatusCode}");
Console.WriteLine($" Response LatencyInMilliseconds: {auditEntry.Response.LatencyInMilliseconds}");
Console.WriteLine($" Response Body LivenessDecision: {auditEntry.Response.Body.LivenessDecision}");
Console.WriteLine($" Response Body ModelVersionUsed: {auditEntry.Response.Body.ModelVersionUsed}");
Console.WriteLine($" Response Body Target FaceRectangle: {auditEntry.Response.Body.Target.FaceRectangle.Top}, {auditEntry.Response.Body.Target.FaceRectangle.Left}, {auditEntry.Response.Body.Target.FaceRectangle.Width}, {auditEntry.Response.Body.Target.FaceRectangle.Height}");
Console.WriteLine($" Response Body Target FileName: {auditEntry.Response.Body.Target.FileName}");
Console.WriteLine($" Response Body Target TimeOffsetWithinFile: {auditEntry.Response.Body.Target.TimeOffsetWithinFile}");
Console.WriteLine($" Response Body Target FaceImageType: {auditEntry.Response.Body.Target.ImageType}");
}
```

If there are multiple liveness calls, you can retrieve the result by getting liveness audit entries.

```C# Snippet:GetLivenessSessionAuditEntriesAsync
var getAuditEntriesResponse = await sessionClient.GetLivenessSessionAuditEntriesAsync(sessionId);
foreach (var auditEntry in getAuditEntriesResponse.Value)
if (sessionResult.Results != null)
{
WriteLivenessSessionAuditEntry(auditEntry);
WriteLivenessSessionResults(sessionResult.Results);
}
```

## List all liveness sessions

All existing sessions can be listed by sending a request to the service.

```C# Snippet:GetLivenessSessionsAsync
var listResponse = await sessionClient.GetLivenessSessionsAsync();
foreach (var session in listResponse.Value)
```C# Snippet:WriteLivenessSessionResults
public void WriteLivenessSessionResults(LivenessSessionResults results)
{
Console.WriteLine($"SessionId: {session.Id}");
Console.WriteLine($"CreatedDateTime: {session.CreatedDateTime}");
Console.WriteLine($"SessionExpired: {session.SessionExpired}");
Console.WriteLine($"DeviceCorrelationId: {session.DeviceCorrelationId}");
Console.WriteLine($"AuthTokenTimeToLiveInSeconds: {session.AuthTokenTimeToLiveInSeconds}");
Console.WriteLine($"SessionStartDateTime: {session.SessionStartDateTime}");
if (results.Attempts == null || results.Attempts.Count == 0)
{
Console.WriteLine("No attempts found in the session results.");
return;
}

var firstAttempt = results.Attempts[0];
Console.WriteLine($"Attempt ID: {firstAttempt.AttemptId}");
Console.WriteLine($"Attempt Status: {firstAttempt.AttemptStatus}");

if (firstAttempt.Result != null)
{
var result = firstAttempt.Result;
Console.WriteLine($" Liveness Decision: {result.LivenessDecision}");
Console.WriteLine($" Digest: {result.Digest}");
Console.WriteLine($" Session Image ID: {result.SessionImageId}");

if (result.Targets?.Color?.FaceRectangle != null)
{
var faceRect = result.Targets.Color.FaceRectangle;
Console.WriteLine($" Face Rectangle: Top={faceRect.Top}, Left={faceRect.Left}, Width={faceRect.Width}, Height={faceRect.Height}");
}
}

if (firstAttempt.ClientInformation != null && firstAttempt.ClientInformation.Count > 0)
{
Console.WriteLine($" Client Information Count: {firstAttempt.ClientInformation.Count}");
}
}
```

Expand Down
Loading
Loading