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:
- Registrar Visual Face a través de la API de envío de correo electrónico
- 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.
- ScanAndRegisterVisualFace: Elija un usuario para el registro de Visual Face
- ScanVisualFace: Escanea Visual Face a través del dispositivo seleccionado (debe usar FaceStation F2).
- 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]