Ir al contenido principal

Para desarrolladores - Validación remota en equipos Minmoe mediante API directa (ISAPI)

Xavier Guereque avatar
Escrito por Xavier Guereque
Actualizado esta semana

En este artículo mencionaremos cómo utilizar la función de validación remota de los dispositivos Minmoe.

La validación remota permite que el dispositivo envíe un evento mediante webpost en formato JSON de la persona que se está autenticando hacia una plataforma tercera, la plataforma tercera valida si la persona tiene acceso o no, luego envía una respuesta al dispositivo y este acepta o deniega el acceso al usuario.

Procedimiento

Primero debemos validar que el dispositivo sí sea compatible con esta función, para esto utilizamos este endpoint:

GET /ISAPI/AccessControl/AcsCfg/capabilities?format=json

En la respueste debemos encontrar esto para confirmar que sí lo soporta.

"remoteCheckDoorEnabled": {
"@opt": [
true,
false
]
}

Luego, utilizamos el siguiente endpoint para configurar el dispositivo:

PUT /ISAPI/AccessControl/AcsCfg?format=json

Body:
{
"AcsCfg": {
"uploadCapPic": true,
"saveCapPic": true,
"uploadCapPicWhenCallEnabled": true,
"voicePrompt": true,
"protocol": "Private",
"showPicture": false,
"showEmployeeNo": false,
"showName": true,
"uploadVerificationPic": true,
"saveVerificationPic": true,
"desensitiseEmployeeNo": true,
"desensitiseName": true,
"saveFacePic": true,
"faceBatchModelingMode": "recognitionPriority",
"remoteCheckDoorEnabled": true,
"checkChannelType": "ISAPIListen",
"needDeviceCheck": false,
"remoteCheckTimeout": 10,
"remoteCheckVerifyMode": 7,
"offlineDevCheckOpenDoorEnabled": false,
"remoteCheckWithISAPIListen": "async",
"remoteCheckUserTypeList": [
"normal",
"visitor",
"unregistered"
],
"uploadVerificationPicType": 0,
"externalCardReaderEnabled": false,
"combinationAuthenticationTimeout": 5,
"combinationAuthenticationLimitOrder": true,
"faceDuplicateCheckEnabled": false,
"userPassJudgeMode": "byAuthResult"
}
}

Donde:

  • remoteCheckDoorEnabled = true, activa la función de validación remota.

  • checkChannelType = ISAPIListen, indica que los eventos los notificará mediante ISAPI Listen

  • remoteCheckTimeout = 10, especifica el tiempo que esperará el dispositivo para una respuesta.

Por último configuraremos el dispositivo para que envíe los eventos mediante ISAPI Listen, para esto utilizamos el siguiente endpoint:

POST /ISAPI/Event/notification/httpHosts

<HttpHostNotificationList>
<HttpHostNotification>
<id>2</id>
<url>/lectura</url>
<protocolType>HTTP</protocolType>
<parameterFormatType>JSON</parameterFormatType
<addressingFormatType>ipaddress</addressingFormatType
<ipAddress>192.168.50.253</ipAddress>
<portNo>8097</portNo>
<eventMode>all</eventMode>
<type>mixedTargetDetection</type>
</HttpHostNotification>
</HttpHostNotificationList>

Si los eventos se enviarán a un nombre de dominio, la configuración sería similar a los siguiente:

POST /ISAPI/Event/notification/httpHosts

<HttpHostNotificationList>
<HttpHostNotification>
<id>2</id>
<url>/lectura</url>
<protocolType>HTTPS</protocolType>
<parameterFormatType>JSON</parameterFormatType
<addressingFormatType>hostname</addressingFormatType
<hostName>syscom.mx</hostName>
<portNo>443</portNo>
<eventMode>all</eventMode>
<type>mixedTargetDetection</type>
</HttpHostNotification>
</HttpHostNotificationList>

Prueba de funcionamiento

En nuestro ejemplo, el dispositivo enviará la información para validación a un servidor web demo.

Cuando el usuario se autentique, en la pantalla aparecerá una leyenda indicando que se está validando remotamente:

En ese momento, el servidor recibirá una notificación de la persona que está intentando autenticar. El evento contendrá la información del usuario y un identificador único para cada evento (serialNo):

Después de validar si el usuario tiene acceso o no, debemos utilizar el siguiente endpoint para indicarle al dispositivo el resultado de la validación remota:

PUT /ISAPI/AccessControl/remoteCheck?format=json

Body:
{
"RemoteCheck":{
"serialNo":1,
"checkResult": "success" /*[success, failed]*/
}
}

Donde:

  • serialNo = 1, es el número de evento del cual estamos validando remotamente.

  • checkResult = success, es el resultado de la validación del usuario.

Al final, aparecerá el mensaje del resultado en el dispositivo:

Nota:

Al momento de configurar el endpoint /ISAPI/AccessControl/AcsCfg?format=json es importante configurar el tiempo de espera para la respuesta del servidor dependiendo de las necesidades de cada sistema poniendo hasta 10 segundos configurando el siguiente parámetro:


remoteCheckTimeout = 10,


Acceso a usuarios no registrados.

Cuando queramos dar accesos a usuarios no registrados desde nuestro software manejando el sistema con la obtención de datos del qr o la tarjeta "prestada" por usuario de control de acceso.

Ya que si nosotros hacemos por ejemplo la lectura de un qr con la información almacenada de "12345" se generara un evento de control de acceso por parte del dispositivo enviándose a la dirección configurada.

--MIME_boundary
Content-Disposition: form-data; name="AccessControllerEvent"
Content-Type: application/json
Content-Length: 680

{
"ipAddress": "192.168.50.32",
"ipv6Address": "fe80::a6d5:c2ff:fe42:d39e",
"portNo": 8083,
"protocol": "HTTP",
"macAddress": "a4:d5:c2:42:d3:9e",
"channelID": 1,
"dateTime": "2025-10-01T13:15:26-06:00",
"activePostCount": 1,
"eventType": "AccessControllerEvent",
"eventState": "active",
"eventDescription": "Access Controller Event",
"shortSerialNumber": "FW8085144",
"AccessControllerEvent": {
"deviceName": "Access Controller",
"majorEventType": 5,
"subEventType": 9,
"cardNo": "12345",
"cardType": 1,
"cardReaderNo": 1,
"serialNo": 24,
"remoteCheck": true,
"currentVerifyMode": "cardOrfaceOrPw",
"label": "",
"purePwdVerifyEnable": true
}
}
--MIME_boundary--

Donde desde el servidor receptor debemos de responder al igual que con un evento de un usuario registrado si damos el acceso o no, cambiando en este caso la respuesta en el dispositivo de la identificación de un usuario a la apertura de la puerta autorizada

Por lo que podemos entender que esta función puede ser utilizada para llevar un control de las personas que entraron relacionando ids dentro de tarjetas o qrs a usuarios registrados o por otra parte poder dar acceso a usuarios específicos guardando el código almacenado en su qr sin necesidad de registrarlos anteriormente en el dispositivo abriendo opciones para los desarrolladores capaces de modificar sus propios sistemas.

¿Ha quedado contestada tu pregunta?