@@ -29,20 +29,24 @@ var sessionClient = new FaceSessionClient(endpoint, credential);
2929Before you can detect liveness in a face, you need to create a liveness detection session with Azure AI Face Service. The service creates a liveness-session and responds back with a session-authorization-token.
3030
3131``` C# Snippet:CreateLivenessWithVerifySession
32- var parameters = new CreateLivenessWithVerifySessionContent (LivenessOperationMode .Passive ) {
33- SendResultsToClient = true ,
32+ using var fileStream = new FileStream (FaceTestConstant .LocalSampleImage , FileMode .Open , FileAccess .Read );
33+ var parameters = new CreateLivenessWithVerifySessionContent (LivenessOperationMode .Passive , fileStream )
34+ {
3435 DeviceCorrelationId = Guid .NewGuid ().ToString (),
3536};
3637
37- using var fileStream = new FileStream (FaceTestConstant .LocalSampleImage , FileMode .Open , FileAccess .Read );
38-
39- var createResponse = sessionClient .CreateLivenessWithVerifySession (parameters , fileStream );
38+ var createResponse = sessionClient .CreateLivenessWithVerifySession (parameters );
4039
4140var sessionId = createResponse .Value .SessionId ;
4241Console .WriteLine ($" Session created, SessionId: {sessionId }" );
4342Console .WriteLine ($" AuthToken: {createResponse .Value .AuthToken }" );
44- Console .WriteLine ($" VerifyImage.FaceRectangle: {createResponse .Value .VerifyImage .FaceRectangle .Top }, {createResponse .Value .VerifyImage .FaceRectangle .Left }, {createResponse .Value .VerifyImage .FaceRectangle .Width }, {createResponse .Value .VerifyImage .FaceRectangle .Height }" );
45- Console .WriteLine ($" VerifyImage.QualityForRecognition: {createResponse .Value .VerifyImage .QualityForRecognition }" );
43+ var results = createResponse .Value .Results ;
44+ if (results .VerifyReferences .Count > 0 )
45+ {
46+ var verifyReference = results .VerifyReferences [0 ];
47+ Console .WriteLine ($" VerifyImage.FaceRectangle: {verifyReference .FaceRectangle .Top }, {verifyReference .FaceRectangle .Left }, {verifyReference .FaceRectangle .Width }, {verifyReference .FaceRectangle .Height }" );
48+ Console .WriteLine ($" VerifyImage.QualityForRecognition: {verifyReference .QualityForRecognition }" );
49+ }
4650```
4751
4852## 3. Pass the AuthToken to client device
@@ -61,75 +65,14 @@ After you've performed liveness detection with verification , you can retrieve t
6165``` C# Snippet:GetLivenessWithVerifySessionResult
6266var getResultResponse = sessionClient .GetLivenessWithVerifySessionResult (sessionId );
6367var sessionResult = getResultResponse .Value ;
64- Console .WriteLine ($" Id: {sessionResult .Id }" );
65- Console .WriteLine ($" CreatedDateTime: {sessionResult .CreatedDateTime }" );
66- Console .WriteLine ($" SessionExpired: {sessionResult .SessionExpired }" );
67- Console .WriteLine ($" DeviceCorrelationId: {sessionResult .DeviceCorrelationId }" );
68- Console .WriteLine ($" AuthTokenTimeToLiveInSeconds: {sessionResult .AuthTokenTimeToLiveInSeconds }" );
68+ Console .WriteLine ($" Id: {sessionResult .SessionId }" );
6969Console .WriteLine ($" Status: {sessionResult .Status }" );
70- Console .WriteLine ($" SessionStartDateTime: {sessionResult .SessionStartDateTime }" );
71- if (sessionResult .Result != null ) {
72- WriteLivenessWithVerifySessionAuditEntry (sessionResult .Result );
73- }
74- ```
75-
76- ``` C# Snippet:WriteLivenessWithVerifySessionAuditEntry
77- public void WriteLivenessWithVerifySessionAuditEntry (LivenessSessionAuditEntry auditEntry )
78- {
79- Console .WriteLine ($" Id: {auditEntry .Id }" );
80- Console .WriteLine ($" SessionId: {auditEntry .SessionId }" );
81- Console .WriteLine ($" RequestId: {auditEntry .RequestId }" );
82- Console .WriteLine ($" ClientRequestId: {auditEntry .ClientRequestId }" );
83- Console .WriteLine ($" ReceivedDateTime: {auditEntry .ReceivedDateTime }" );
84- Console .WriteLine ($" Digest: {auditEntry .Digest }" );
85-
86- Console .WriteLine ($" Request Url: {auditEntry .Request .Url }" );
87- Console .WriteLine ($" Request Method: {auditEntry .Request .Method }" );
88- Console .WriteLine ($" Request ContentLength: {auditEntry .Request .ContentLength }" );
89- Console .WriteLine ($" Request ContentType: {auditEntry .Request .ContentType }" );
90- Console .WriteLine ($" Request UserAgent: {auditEntry .Request .UserAgent }" );
91-
92- Console .WriteLine ($" Response StatusCode: {auditEntry .Response .StatusCode }" );
93- Console .WriteLine ($" Response LatencyInMilliseconds: {auditEntry .Response .LatencyInMilliseconds }" );
94- Console .WriteLine ($" Response Body LivenessDecision: {auditEntry .Response .Body .LivenessDecision }" );
95- Console .WriteLine ($" Response Body ModelVersionUsed: {auditEntry .Response .Body .ModelVersionUsed }" );
96- 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 }" );
97- Console .WriteLine ($" Response Body Target FileName: {auditEntry .Response .Body .Target .FileName }" );
98- Console .WriteLine ($" Response Body Target TimeOffsetWithinFile: {auditEntry .Response .Body .Target .TimeOffsetWithinFile }" );
99- Console .WriteLine ($" Response Body Target FaceImageType: {auditEntry .Response .Body .Target .ImageType }" );
100-
101- Console .WriteLine ($" Response Body VerifyResult IsIdentical: {auditEntry .Response .Body .VerifyResult .IsIdentical }" );
102- Console .WriteLine ($" Response Body VerifyResult MatchConfidence: {auditEntry .Response .Body .VerifyResult .MatchConfidence }" );
103- Console .WriteLine ($" Response Body VerifyResult VerifyImage.FaceRectangle: {auditEntry .Response .Body .VerifyResult .VerifyImage .FaceRectangle .Top }, {auditEntry .Response .Body .VerifyResult .VerifyImage .FaceRectangle .Left }, {auditEntry .Response .Body .VerifyResult .VerifyImage .FaceRectangle .Width }, {auditEntry .Response .Body .VerifyResult .VerifyImage .FaceRectangle .Height }" );
104- Console .WriteLine ($" Response Body VerifyResult VerifyImage.QualityForRecognition: {auditEntry .Response .Body .VerifyResult .VerifyImage .QualityForRecognition }" );
105- }
106- ```
107-
108- If there are multiple liveness calls, you can retrieve the result by getting liveness audit entries.
109-
110- ``` C# Snippet:GetLivenessWithVerifySessionAuditEntries
111- var getAuditEntriesResponse = sessionClient .GetLivenessWithVerifySessionAuditEntries (sessionId );
112- foreach (var auditEntry in getAuditEntriesResponse .Value )
113- {
114- WriteLivenessWithVerifySessionAuditEntry (auditEntry );
115- }
116- ```
117-
118- ## List all liveness sessions
11970
120- All existing sessions can be listed by sending a request to the service.
121-
122- ``` C# Snippet:GetLivenessWithVerifySessions
123- var listResponse = sessionClient .GetLivenessWithVerifySessions ();
124- foreach (var session in listResponse .Value )
71+ var results = sessionResult .Results ;
72+ if (results .VerifyReferences .Count > 0 )
12573{
126- Console .WriteLine ($" SessionId: {session .Id }" );
127- Console .WriteLine ($" CreatedDateTime: {session .CreatedDateTime }" );
128- Console .WriteLine ($" SessionExpired: {session .SessionExpired }" );
129- Console .WriteLine ($" DeviceCorrelationId: {session .DeviceCorrelationId }" );
130- Console .WriteLine ($" AuthTokenTimeToLiveInSeconds: {session .AuthTokenTimeToLiveInSeconds }" );
131- Console .WriteLine ($" SessionStartDateTime: {session .SessionStartDateTime }" );
132- }
74+ var verifyReference = results .VerifyReferences [0 ];
75+ Console .WriteLine ($" VerifyImage.FaceRectangle: {verifyReference .FaceRectangle .Top }, {verifyReference .FaceRectangle .Left }, {verifyReference .FaceRectangle .Width }, {verifyReference .FaceRectangle .Height }" );
13376```
13477
13578## Delete session
0 commit comments