Introducción

Si desea utilizar BioStar 2 New Local API como una API RESTful para su propia personalización u otros fines, simplemente puede consultar este artículo. Este artículo cubrirá el uso más básico de la aplicación de consola BioStar 2 New Local API by C#.

 

Esta es solo una aplicación de muestra hecha para aquellos que podrían necesitar usar la Nueva API Local de BioStar 2. Es una aplicación de consola de Visual C#.

 

Funciones

Este artículo cubrirá la función a continuación:

  1. Registrar Visual Face a través de la API de envío de correo electrónico
  2. Registrar Visual Face a través de Face Scanning por un dispositivo (FaceStation F2)

 

A través de este artículo, puede aprender cómo llamar a una función API para registrar Visual Face a los usuarios en el servidor BioStar 2. Hay 2 formas diferentes de registrar Visual Face a través de la nueva API local.

 

Asegúrese de echar un buen vistazo al código de ejemplo del programa de C# creado para llamadas a la API. Simplemente puede copiar y pegar el código fuente para usar la misma función en su propia integración.

 

También puede ver cómo llamar a las funciones de la API a través de Postman, que es un programa utilizado para las llamadas a la API RESTful.

 

*Debes tener FaceStation F2 conectado a tu BioStar 2.

 

  • Para obtener la descripción de cómo enrolar Visual Face a través del escaneo de un dispositivo con BioStar 2, visite este link 

 

Parte 1. Llamada a la API y parámetros

 

- Escaneo de la cara visual

 

[GET]: /api/devices/547834285/credentials/face?pose_sensitivity=0&nonBlock=true

[Parámetros]

Nombre

Tipo

*M/O

Explicación

Valor

 

 

 

 

 

* M – Obligatorio, O – Opcional

- Registro de Visual Face

 

[PUT]: /api/users/{id}

[Parámetros]

Nombre

Tipo

*M/O

Explicación

Valor

Usuario/credenciales/visualFaces

Arreglo

O

Información visual de la cara

 

Template_ex_normalized_image

Cuerda

O

Nombre de la imagen en Base64

 

Plantillas

Arreglo

O

"template_ex", "credential_bin_type",

"template_ex_ir"

 

Plantillas/template_ex

Cuerda

O

Base64

"5"

Plantillas/credential_bin_type

Cuerda

O

Tipo de bandeja de credenciales

 

Plantillas/credential_ex_ir

Cuerda

O

Base64

 

Plantillas/credential_bin_type

Cuerda

O

Tipo de bandeja de credenciales

"6"

Bandera

Cuerda

O

Bandera

"1"

useProfile

Cuerda

O

Usar como perfil o no

Verdadero y falso

* M – Obligatorio, O – Opcional

 

Parte 2. Cuerpo de solicitud y modelo de respuesta

 

- Escaneo de la cara visual

[Ejemplo de modelo de valor/parámetros]

 

 

[Modelo de respuesta]

{

"credenciales": {

"caras": [

{

"raw_image": "Base64: RDQQFJYAVUYvFXsEIzIQC1QYbodkHe...",

"plantillas": [

{

"plantilla": "Base64: RDQQFJYAVUYvFXsEIzIQC1QYbodkHe..."

}

],

"bandera": "0"

}

]

},

"Respuesta": {

"código": "1003",

"link": "https://support.supremainc.com/en/support/home",

"message": "Éxito"

},

"httpResponseStatus": 200

}

[Respuesta: Fallo]

{

"Respuesta": {

"código": "262155",

"link": "https://support.supremainc.com/en/support/home",

"mensaje": "no definido"

}

}

[Respuesta: Exitosa]

{

"credenciales": {

"caras": [

{

"template_ex_normalized_image": "/9j/4AAQSkZJRgABAQEASABI... ",

"plantillas": [

{

"template_ex": "AAAAAAEA4gCFAe4AFQE8//7/...",

"credential_bin_type": "5"

},

{

"template_ex_ir": "AAAAAAEAHgGPAeIAHAEAAAAASlQ7RU...",

"credential_bin_type": "6"

}

],

"bandera": "1"

}

]

},

"Respuesta": {

"código": "0",

"link": "https://support.supremainc.com/en/support/home",

"message": "Éxito"

}

}

 

 

- Escaneo de la cara visual

[Ejemplo de modelo de valor/parámetros]

{

"Usuario": {

"credenciales": {

"visualFaces": [

{

"template_ex_normalized_image": "/9j/4AAQSkZJRgABAQEASABIAAD/...",

"plantillas": [

{

"template_ex": "AAAAAAEA+QCAAeMAJwFhAQD/XFVUQ0...",

"credential_bin_type": "5"

},

{

"template_ex_ir": "AAAAAAEANAF+AdsAGQEAAAAASlBCRTyDfAA...",

"credential_bin_type": "6"

}

],

"bandera": "1",

"useProfile": "false"

}

]

}

}

}

 

[Modelo de respuesta]

{

"DeviceResponse": {

"filas": [

{

"id": "541530887",

"código": "65230"

}

],

"resultado": "falso"

},

"Respuesta": {

"código": "0",

"link": "https://support.supremainc.com/en/support/home",

"message": "Éxito"

}

}

[Respuesta: Fallo]

{

"Respuesta": {

"código": "20",

"message": "Permiso no permitido"

}

}

[Respuesta: Exitosa]

{

"Respuesta": {

"código": "0",

"link": "https://support.supremainc.com/en/support/home",

"message": "Éxito"

}

}

 

Parte 3. Ejemplo de consola

 

Hay 2 pasos a seguir para registrar Visual Face a un usuario. Pero, en la consola, hay un paso adicional para elegir el usuario que recibirá el registro de Visual Face.

  1. ScanAndRegisterVisualFace: Elija un usuario para el registro de Visual Face
  2. ScanVisualFace: Escanea Visual Face a través del dispositivo seleccionado (debe usar FaceStation F2).
  3. RegisterVisualFaceToUser: Registre la cara visual escaneada al usuario elegido.

[ScanAndRegisterVisualFace]

static async void ScanAndRegisterVisualFace()

{

Console.WriteLine("*****ScanAndRegisterVisualFace Task Started******");

if (sessionID ==  null)

{

Console.WriteLine("¡Primero debe iniciar sesión!" );

volver;

}

 

CookieContainer cookieContainer = nuevo  CookieContainer();

 

Controlador HttpClientHandler = nuevo  HttpClientHandler();

Controlador. CookieContainer = cookieContainer;

 

Cliente HttpClient = nuevo  HttpClient(controlador);

 

cliente. DefaultRequestHeaders.Add("bs-session-id", sessionID);

cookieContainer.Add(new  Uri("https://127.0.0.1"),  new  Cookie("bs-session-id",sessionID));

ListUsers();

Console.WriteLine("Seleccione el ID de usuario para el registro de Visual Face...");

string userID = Console.ReadLine();

HttpResponseMessage httpResponse = cliente en espera. GetAsync("https://127.0.0.1/api/users");

HttpResponseMessage httpResponse = cliente. GetAsync("https://127.0.0.1/api/users"). Resultado;

 

 

if (httpResponse.IsSuccessStatusCode ==  true)

{

string httpResponseBody =  await  httpResponse.Content.ReadAsStringAsync();

Console.WriteLine(httpResponseBody);

Console.WriteLine("Registro de VISUAL FACE al USUARIO("  + ID de usuario +  ")");

ScanVisualFace (ID de usuario);

 

}

más

{

Console.WriteLine("Error al recuperar la lista de usuarios");

Console.WriteLine(httpResponse.ToString());

}

}

 

[ScanVisualFace]

  • Este paso escanea Visual Face a través del dispositivo seleccionado (FaceStation F2).

static async void ScanVisualFace(string  UserID)

{

Console.WriteLine("*****ScanVisualFace Task Started*****");

CookieContainer cookieContainer = nuevo  CookieContainer();

 

Controlador HttpClientHandler = nuevo  HttpClientHandler();

Controlador. CookieContainer = cookieContainer;

 

HttpClient httpClient = nuevo  HttpClient(controlador);

 

Cliente HttpClient = nuevo  HttpClient(controlador);

httpClient.DefaultRequestHeaders.Add("bs-session-id", sessionID);

cookieContainer.Add(new  Uri("https://127.0.0.1"),  new  Cookie("bs-session-id",sessionID));

ListDevices();

Console.WriteLine("Seleccione el ID de dispositivo para el escaneo visual de la cara... (SELECCIONA FaceStation F2..." );

string deviceID = Console.ReadLine();

string resourceAddress =  "https://127.0.0.1/api/devices/"  + deviceID +  "/credentials/face?pose_sensitivity=0&nonBlock=true";

 

JavaScriptSerializer serializer = nuevo  JavaScriptSerializer();

 

carga útil de cadena = "";

Console.WriteLine(resourceAddress);

StringContent sc = new  StringContent(payload, Encoding.UTF8,  "application/json");

HttpResponseMessage httpResponse = await httpClient.PutAsync(resourceAddress, sc);

HttpResponseMessage httpResponse = httpClient.GetAsync(resourceAddress). Resultado;

 

 

Console.WriteLine("ESCANEA TU CARA VISUAL con el DEVICE(ID: "  + deviceID +  ")");

 

if (httpResponse.IsSuccessStatusCode ==  true)

{

Console.WriteLine("Escanear VISUAL FACE correctamente". );

string httpResponseBody =  await  httpResponse.Content.ReadAsStringAsync();

Console.WriteLine(httpResponseBody);

obj dinámico = JsonConvert.DeserializeObject(httpResponseBody);

template_ex_normalized_image de cadena = obj.credentials.faces[0].template_ex_normalized_image;

template_ex de cadena = obj.credentials.faces[0].templates[0].template_ex;

template_ex_ir de cadena = obj.credentials.faces[0].templates[1].template_ex_ir;

string flag = obj.credentials.faces[0].flag;

RegisterVisualFaceToUser(ID de usuario, template_ex_normalized_image, template_ex, template_ex_ir, bandera);

}

más

{

Console.WriteLine("Error al analizar VISUAL FACE". );

Console.WriteLine(httpResponse.ToString());

}

}

 

[RegisterVisualFaceToUser]

  • Este método recibe los valores de la plantilla del método 'ScanVisualFace' y lo coloca en los valores 'template_ex_normalized_image', 'template_ex', 'template_ex_ir' y 'flag'.

static async void RegisterVisualFaceToUser(string  UserID,  string  template_ex_normalized_image,  string  template_ex,  string  template_ex_ir,  string  flag)

{

Console.WriteLine("*****RegisterVisualFaceToUser Task Started******");

if (sessionID ==  null)

{

Console.WriteLine("¡Primero debe iniciar sesión!" );

volver;

}

CookieContainer cookieContainer = nuevo  CookieContainer();

 

Controlador HttpClientHandler = nuevo  HttpClientHandler();

Controlador. CookieContainer = cookieContainer;

 

HttpClient httpClient = nuevo  HttpClient(controlador);

 

Cliente HttpClient = nuevo  HttpClient(controlador);

httpClient.DefaultRequestHeaders.Add("bs-session-id", sessionID);

cookieContainer.Add(new  Uri("https://127.0.0.1"),  new  Cookie("bs-session-id",sessionID));

Console.WriteLine("Registro de VISUAL FACE a USER("  + UserID +  ") ...");

 

string resourceAddress =  "https://127.0.0.1/api/users/"  + UserID +  "";

string payload =  "{\"User\": {\"credentials\": {\"visualFaces\": [{\"template_ex_normalized_image\": \"" + template_ex_normalized_image +  "\",\"templates\": [{\"template_ex\": \""  + template_ex +  "\",\"credential_bin_type\": \"5\"},{\"template_ex_ir\": \""  + template_ex_ir +  "\",\"credential_bin_type\": \"6\"}],\"flag\": \""  + flag +  "\",\"useProfile\": \"false\"}]}}}

StringContent sc = new  StringContent(payload, Encoding.UTF8,  "application/json");

HttpResponseMessage httpResponse = await httpClient.PutAsync(resourceAddress, sc);

HttpResponseMessage httpResponse = httpClient.PutAsync(resourceAddress, sc). Resultado;

 

 

if (httpResponse.IsSuccessStatusCode ==  true)

{

Console.WriteLine(httpResponse.ToString());

string httpResponseBody =  await  httpResponse.Content.ReadAsStringAsync();

Console.WriteLine("***** VISUAL FACE ahora está registrado en "  + Usuario " + ID de usuario +  " *****");

}

más

{

Console.WriteLine("Error al registrar VISUAL FACE en User("  + UserID +  ")");

Console.WriteLine(httpResponse.ToString());

}

 

}

 

[Seleccione usuario y dispositivo]

Entrada: ID de usuario, ID de dispositivo

텍스트이(가) 표시된 사진

자동 생성된 설명 

[Escanea tu cara visual]

텍스트이(가) 표시된 사진

자동 생성된 설명

[Registro procesado con éxito]

텍스트이(가) 표시된 사진

자동 생성된 설명

 

 

Parte 4. Registrar Visual Face a través de Postman

 

[Escanear visual Face por FaceStation F2 : Solicitud]

*Debes introducir el ID de la FaceStation F2 conectada.

텍스트, 스크린샷, 모니터, 화면이(가) 표시된 사진

자동 생성된 설명

 

[Scan Visual Face por FaceStation F2 : Cuerpo de respuesta: Éxito]

텍스트이(가) 표시된 사진

자동 생성된 설명

 

 

 

[Registrar Visual Face : Solicitud]

텍스트이(가) 표시된 사진

자동 생성된 설명

[Registrar visual face: Exitoso]

 

텍스트, 실내이(가) 표시된 사진

자동 생성된 설명