Eventos de Identificação
Quando uma tentativa de identificação ocorre, os eventos descritos abaixo são enviados automaticamente pelo equipamento se o mesmo estiver operando no modo enterprise. Cabe ao servidor tratar esses eventos.
Evento imagem biométrica
Tentativa de identificação por biometria. Esse evento é enviado apenas se a configuração extract_template estiver desativada. O método HTTP usado é o POST. O contentType é application/octet-stream. Todos os parâmetros são enviados através da query string, exceto o binário da imagem.
POST /new_biometric_image.fcgi
Parâmetros
- device_id (int 64) : ID único do equipamento.
- identifier_id (int) : ID do identificador (wiegand, RFID, biometria), vide Formatação identifier_id.
- width (int) : Largura, em pixels, da imagem enviada.
- height (int) : Altura, em pixels, da imagem enviada.
- imagem (binário (octet-stream)) : Imagem da digital em formato binário. É enviado 1 byte por pixel, em escala de cinza (Este é o único parâmetro enviado no corpo da mensagem).
Resposta
- result (Objeto JSON) : Descrito em Mensagem de Retorno.
Evento template biométrica
Tentativa de identificação por biometria. Esse evento é enviado apenas se a configuração extract_template estiver ativada. O método HTTP usado é o POST. O contentType é application/octet-stream. Todos os parâmetros são enviados através da query string, exceto o binário do template.
POST /new_biometric_template.fcgi
Parâmetros
- device_id (int 64) : ID único do equipamento.
- identifier_id (int) : ID do identificador (wiegand, RFID, biometria), vide Formatação identifier_id.
- Template (binário (octet-stream)) : Template biométrico no formato Innovatrics (Este é o único parâmetro enviado no corpo da mensagem).
Resposta
- result (Objeto JSON) : Descrito em Mensagem de Retorno.
Evento cartão de proximidade
Tentativa de identificação por cartão de proximidade. O método HTTP usado é o POST. O contentType é application/x-www-form-urlencoded. Todos os parâmetros são enviados através da query string.
POST /new_card.fcgi
Parâmetros
- device_id (int 64) : ID único do equipamento.
- identifier_id (int) : ID do identificador (wiegand, RFID, biometria), vide Formatação identifier_id.
- card_value (int 64) : Número do cartão.
- block_read_error (int 64) : Quando diferente de 0, indica que um erro de leitura do bloco ocorreu. Só será preenchido quando mifare->read_block for não vazio.
- block_read_data (string) : Dados lidos do bloco em hexadecimal (Não é possível incluir base64 em uma URL sem escapar alguns caracteres). Só será preenchido quando mifare->read_block for não vazio.
Resposta
- result (Objeto JSON) : Descrito em Mensagem de Retorno.
Evento id e senha
Tentativa de identificação por id e senha. O método HTTP usado é o POST. O contentType é application/x-www-form-urlencoded. Todos os parâmetros são enviados através da query string.
POST /new_user_id_and_password.fcgi
Parâmetros
- device_id (int 64) : ID único do equipamento.
- identifier_id (int) : ID do identificador (wiegand, RFID, biometria), vide Formatação identifier_id.
- user_id (int) : ID informado pelo usuário.
- password (string) : Senha informada pelo usuário.
Resposta
- result (Objeto JSON) : Descrito em Mensagem de Retorno.
Evento usuário identificado
Este evento é enviado apenas se a configuração local_identification estiver ativada.
Nesse modo, quando o usuário se identifica no equipamento, este realiza a identificação de forma local, enviando o ID do usuário ao servidor. O servidor processa as regras de acesso e diz se deve abrir a porta ou não. Repare que nesse método o servidor tem que sempre atualizar os usuários e biometrias dos equipamentos, tendo a limitação de templates dos equipamentos.
O método HTTP usado é o POST. O contentType é application/x-www-form-urlencoded. Todos os parâmetros são enviados através da query string.
POST /new_user_identified.fcgi
Parâmetros
- device_id (int 64) : ID único do equipamento.
- identifier_id (int) : ID do identificador (wiegand, RFID, biometria), vide Formatação identifier_id.
- event (int) : Evento do resultado da identificação, (e.g.: 3 para não identificado).
- user_id (int) : ID do usuário.
- duress (int) : Esse parâmetro retorna um inteiro que indica se é dedo do pânico ou uma simples identificação (1 ser for dedo de pânico ou 0 para identificação comum).
Resposta
- result (Objeto JSON) : Descrito em Mensagem de Retorno.
Formatação identifier_id
O campo identifier_id contido nas mensagens de evento de identificação enviadas pelo terminal de acesso, indica o id do identificador (wiegand, RFID, biometria, etc), e deverá ser interpretado da seguinte forma:
O tipo do dado é inteiro de 32 bits, mas os três bytes mais significativos devem ser interpretados como caracteres ASCII, e o último byte como valor inteiro binário.
Exemplo:
- "w" = 0x77 (ASCII)
- "i" = 0x69 (ASCII)
- "n" = 0x6E (ASCII)
- "0" = 0x00 (Binário)
"win0" indica wiegand zero, portanto, convertendo para o formato acima ficaria 0x77696E00 em hexadecimal, que em decimal é 2003398144.
Solicitar imagem de usuário ao servidor
O equipamento irá solicitar a foto do usuário para o servidor sempre que na resposta dos eventos de identificação o parâmetro user_image for true (indicando que o usuário possui foto). O método HTTP usado é o GET. O contentType é application/octet-stream. Todos os parâmetros são enviados através da query string.
GET /user_get_image.fcgi
Parâmetros
- user_id (int) : ID do usuário.
Resposta
- imagem (octet-stream) : Foto do usuário requisitado nos formatos BMP, JPG/JPG ou PNG;
Verifica disponibilidade do servidor
Se o equipamento não tiver êxito em se comunicar com o servidor nas três (configurável) tentativas que realizar, o equipamento entrará em modo de continência.
Neste modo todas as identificações são feitas no banco local do equipamento, que deve ser previamente configurado, além disso a cada minuto o equipamento envia o comando {ip}/device_is_alive.fcgi?device_id={valor} ao servidor com o número de logs disponíveis no corpo da mensagem (JSON). Assim que obter uma resposta (HTTP status code OK), ele volta ao modo enterprise. O método HTTP usado é o POST. O contentType é application/json.
POST /device_is_alive.fcgi
Parâmetros
- Esta chamada não possui parâmetros.
Resposta
- access_logs (int) : Número de logs disponíveis.
Mensagem de Retorno
Mensagem de retorno do servidor para o equipamentos após um evento de tentativa de identificação.
result
Resultado da análise da tentativa de identificação.
Campo | Tipo | Descrição |
---|---|---|
event | int | Tipo do evento, pode ser:
|
user_id | int | ID do usuário, em caso de identificação. |
user_name | string | Nome do usuário, em caso de identificação. |
user_image | bool | Usuário identificado possui ou não foto. |
user_image_hash | string | Caso o usuário identificado possua imagem, envia o hash (SHA1) da mesma. O equipamento usa esse valor para saber se ele possui a imagem em cache ou se precisa pedir a imagem ao servidor. |
portal_id | string | ID do portal correspondente. |
actions | Array de Objetos JSON | Ações que devem ser executas pelo equipamento. Exemplo: [ {"action":"door", "parameters":"door=1"}, {"action":"door", "parameters":"door=2"} ] |
message | string | Mensagem a ser exibida no display no momento do acesso. |
Exemplos de respostas
Resposta para os dispositivos iDAccess, iDFit e iDBox
Autoriza um acesso:
{"result":
{"event":7,
"user_id":6,
"user_name":"Neal Caffrey",
"user_image":false,
"portal_id":1,
"actions":[ {"action":"door", "parameters":"door=1"},
{"action":"door", "parameters":"door=2"} ]
}
}
Resposta para os dispositivos iDFlex, iDAccess Pro e iDAccess Nano
Autoriza um acesso:
{"result":
{"event":7,
"user_id":6,
"user_name":"Neal Caffrey",
"user_image":false,
"portal_id":1,
"actions":[ {"action": "sec_box", "parameters": "id=65793, reason=1"} ]
}
}
Nota: O parâmetro reason, define o motivo de abertura (0 = Desconhecido, 1 = Autorizado, 2 = Botoeira e 3 = Comando WEB).
Resposta específica para a catraca iDBlock
Autoriza um acesso:
{"result":
{"event":7,
"user_id":6,
"user_name":"Danny Boy",
"user_image":false,
"portal_id":1,
"actions":[ {"action":"catra", "parameters":"allow=clockwise"} ]
}
}
Nota: O parâmetro "clockwise" abre a catraca no sentido horário, outros valores possíveis são "anticlockwise" ou "both" que abrem a catraca no sentido anti-horário e ambos, respectivamente.