Manual de Integracão do CAIF

Criada por Juan José Gómez, Modificado em Qua, 7 Mai na (o) 10:20 AM por Juan José Gómez

Resumo 


    Este manual explica os requerimentos e o processo de integração entre os sistemas de controle de acesso da interlaken e o sistema de gestão de um cliente.



1. Glossário


Cliente: Empresa contratante do ERP e do CAIF.


CAIF: Sistema para administrar o control de acesso de IntegraFácil.


ERP (Enterprise Resource Planning): Sistema de gestão usado pelo cliente.



2. Comunicação (API HTTP e Webhooks) 


O IntegraFácil se comunica via API HTTP, permitindo integração direta entre nossos dispositivos e sua aplicação.


Quando um usuário se identifica em um de nossos dispositivos, enviamos uma requisição para sua API contendo os dados do usuário e do dispositivo. Aguardamos uma resposta para confirmar ou negar o acesso.


Além disso, nossa API também permite o envio de logs de acessos realizados, garantindo o registro e o monitoramento das atividades.



3. Integração  


A Integração entre os sistemas é realizada através do identificador do aluno, nome e foto. Esses dados são entregados e mantidos pelo ERP e o sistema de controle de acesso (CAIF) não os altera. Todos os  dados gerados pelo CAIF são vinculados ao ID do aluno.


A integração entre os sistemas ocorre por meio do identificador do aluno, nome e foto, que são fornecidos e mantidos pelo ERP. O sistema de controle de acesso (CAIF) apenas utiliza esses dados, sem modificá-los.


Todos os registros gerados pelo CAIF são vinculados ao identificador único do aluno, garantindo rastreabilidade e consistência nas operações.

Fig 1. Fluxo de integração entre CAIF e o ERP do cliente.






Fig 2. Interface do sistema de controle de acesso - CAIF




3.1. Endpoints para consulta  


O integrador deve fornecer quatro endpoints para consulta:

  • Buscar nomes por termo parcial – Retorna uma lista de alunos cujo nome contém o termo informado.
  • Obter dados do aluno pelo ID – Retorna o nome e a foto do aluno com base no seu identificador único.
  • Consultar status de liberação por grupo de dispositivos – Verifica se determinado grupo de dispositivos tem permissão de acesso.
  • Listar IDs de alunos por unidade e academia – Retorna os identificadores dos alunos associados a uma unidade específica e sua respectiva academia.


Nota: As URLs a seguir são apenas para exemplificar, a estrutura delas é definida pelo cliente.



3.1.1. Obter a lista de nomes por parte do nome  


Usado para obter nome e foto por parte do nome.

http://suwebservice/person?name={{name}}&idUnidade={{idUnidade}}
Generic

Resposta:

Status code: 200
Generic
[     
  {
     "personName":"user A",
     "usuarioID":1,
     "photoUrl":"http://dirección/foto.jpg"
  },
  {
     "personName":"user B",
     "usuarioID":2,
     "photoUrl":"http://dirección/foto.jpg"
  },
  {
   "personName":"user C",
   "usuarioID":3,
   "photoUrl":"http://dirección/foto.jpg"
  },
...
]
Generic




3.1.2. Obter nome e foto pelo id do aluno 


Usado para obter nome e foto por id do aluno.

http://suwebservice/person?usuarioID={{usuarioID}}&idUnidade={{idUnidade}}
JavaScript

Resposta:

Status code: 200
Generic
{
   "personName":"User name xxxx",
   "usuarioID":100,
   "photoUrl":"https://endereco-da-foto.jpg"
}
JavaScript



3.1.3. Obter status de liberação por grupo de dispositivo 


Usado para obter status de liberação por grupo de dispositivo.

http://suwebservice/person?usuarioID={{usuarioID}}&grupoDispositivo={{gupo}}&IdAcademia={{idAcademia}}&idUnidade={{idUnidade}}
JavaScript

Resposta:

Status code: 200
Generic
{
   "usuarioID":100,
   "released":true,
   "dueDate":"2022-12-31",
   "personName":"User Name",
   "photoUrl":"https://url-da-foto.jpg"
}
JavaScript



3.1.4. Obter lista de Id de alunos pelo id da unidade e da academia


Usado para obter lista de IDs de alunos por id da unidade ou sede.

http://suwebservice/person?IdAcademia={{idAcademia}}&idUnidade={{idUnidade}}
JavaScript

Resposta:

Status code: 200
Generic
[      
   {
   "usuarioID":1
   },
   {
   "usuarioID":2
   },
   {
   "usuarioID":3
   },
...
]
JavaScript



3.2. Endpoint para recepção de logs de acesso  


Embora não seja obrigatório, recomenda-se fornecer um endpoint para recebimento dos logs de acesso. Isso permite ao ERP contabilizar os registros e acompanhar o histórico de acessos.


Como nosso sistema opera normalmente sem conexão com a internet, os logs gerados durante períodos offline serão sincronizados quando a conexão for restabelecida, garantindo que o ERP tenha acesso a todos os registros.


Os logs são gerados em diferentes tipos de identificação, incluindo biometria, leitura de QR Code e RFID. No caso de dispositivos como torniquetes, os logs também registram o giro do mecanismo.

 


3.2.1. Log de identificação digital bem sucedida 


Isso é o que o cliente receberá:


{
   "id":"000000000000005578332020-08-19T18:22:21Z",
   "numeroSerie":"049226c597c8",
   "grupo":"turnstile",
   "identificacao":{
      "horario":"2020-08-19T18:22:21Z",
      "dispositivo":"finger",
      "numeroSerie":"557833",
      "usuarioId":"200",
      "convidado":false
   },
   "cliente":{
      "url":"http://192.168.0.5:8000/log",
      "recebimentos":[
         
      ]
   },
   "pgProcessamento":{
      "horario":"2020-08-19T18:22:21Z",
      "response":"{\"text\":\"text to turnstile\",\"clockwiseFree\":true,\"counterclockwiseFree\":false,\"accessTime\":10000,\"msgToReception\":\"msg to reception\"}",
      "cacheUsado":false
   },
   "giro":{
      "horario":"2020-08-19T18:22:26Z",
      "sentido":"antiHorario",
      "direcao":"entrada"
   },
   "motivoLiberacaoManual":"",
   "processamentos_json":null,
   "liberaCatraca":{
      "texto":"text to turnstile",
      "sentidoHorarioLiberado":true,
      "sentidoAntiHorarioLiberado":false,
      "liberacaoTempo":10000,
      "semComando":false,
      "msgRecepcao":"msg to reception",
      "senha":null,
      "nomeCatraca":"Catraca1",
      "grupoCatracas":"turnstile",
      "nsPLC":"049226c597c8"
   }
}


3.2.2. Log de identificação facial bem sucedida 


Isso é o que o cliente receberá:

{
   "id":"00000000049226c597c82020-08-19T18:28:21Z",
   "numeroSerie":"049226c597c8",
   "identificacao":{
      "horario":"2020-08-19T18:28:21Z",
      "dispositivo":"interface",
      "numeroSerie":"049226c597c8",
      "usuarioId":"200",
      "convidado":false
   },
   "cliente":{
      "url":"http://192.168.0.5:8000/log",
      "recebimentos":[
         
      ]
   },
   "pgProcessamento":{
      "horario":"2020-08-19T18:28:21Z",
      "response":"{\"text\":\"text to turnstile\",\"clockwiseFree\":true,\"counterclockwiseFree\":false,\"accessTime\":10000,\"msgToReception\":\"msg to reception\"}",
      "cacheUsado":false
   },
   "giro":{
      "horario":"2020-08-19T18:28:28Z",
      "sentido":"antiHorario",
      "direcao":"entrada"
   },
   "motivoLiberacaoManual":"",
   "processamentos_json":null,
   "liberaCatraca":"msg to reception",
   "senha":null,
   "nomeCatraca":"Catraca 1",
   "grupoCatracas":"turnstile",
   "nsPLC":"049226c597c8"
}
JavaScript




4. Endpoint para recebimento de dados biométricos (facial e digital) – opcional


É possível receber registros biométricos de impressões digitais e rosto de um associado. Fornecer um endpoint para o envio desses dados, vai permitir que o ERP mantenha uma cópia de segurança.


Esse backup pode ser útil para restaurar dados locais no ServidorIF, caso necessário, ou para migrar informações biométricas do usuário para outro ServidorIF sem perda de dados.



4.1. Log de registro de template facial 


Isso é o que o cliente receberá:


{
   "type":"faceEnrollLog",
   "id":"a2cc0e5e-75df-4186-9a80-bcf883afc6ab",
   "personId":"2",
   "clientUrlLog":"http://localhost:8000/logs",
   "clientUrlLogHttpMethod":"post",
   "clientUrlLogHeader":"{\"Content-Type\": \"application/json;charset=utf-8;\", \"Authorization\": \"Token{{token}}\",\"tenant\": \"{{tenant}}\" }",
   "clientUrlLogError":null,
   "clientUrlLogReceived":null,
   "needsSync":true,
   "photoBase64":"/9j/....//Z",
   "webSrvIFReceived":null,
   "webSrvIFError":null,
   "createdAt":"2022-10-18T14:50:11.000Z",
   "updatedAt":"2022-10-18T14:50:11.000Z"
}



4.2. Log de registro de template digital 


Isso é o que o cliente receberá:


{
   "type":"fingerEnrollLog",
   "id":"fas1d5b6-75df-4186-9a80-bcf883afc555",
   "personId":"2",
   "serialNumber":"123456",
   "fingerIdx":6,
   "clientUrlLog":"http://localhost:8000/logs",
   "clientUrlLogHttpMethod":"post",
   "clientUrlLogHeader":"{\"Content-Type\": \"application/json;charset=utf-8;\", \"Authorization\": \"Token{{token}}\",\"tenant\": \"{{tenant}}\" }",
   "clientUrlLogError":null,
   "clientUrlLogReceived":null,
   "needsSync":true,
   "template":"/9j/....//Z",
   "webSrvIFReceived":null,
   "webSrvIFError":null,
   "createdAt":"2022-10-18T15:51:11.000Z",
   "updatedAt":"2022-10-18T15:51:11.000Z"
}



5. Simulador  


O simulador de acesso é uma funcionalidade incluída no servidorIF e que permite testar a integração com os serviçõs do cliente; disponível através do seguinte link:


https://if-instaladores.s3.amazonaws.com/servidorIF/servidorIF.zip


Uma vez descomprimido e executado o arquivo servidorif.exe como ADM, o servidorIF registra a porta 8080 e é possível abrir sua interface pelo navegador em http://localhost:8080



  • Do lado superior direito, estão os botões, Configurações e Simulador. Clique em Simulador.


Fig 3. Acesso ao simulador de dispositivos.



  • Em Configurações são definidos os  endpoints do cliente. Em Simulador, é testado o tipo de controle de acesso e em Resultado é exibida a resposta do sistema do cliente. 



  • Configurações > URL é o endpoint do cliente a ser chamado quando alguém se identifica pelo torniquete. Permite customizar opções da chamada HTTP.



  • Simulador > Info recebe o código do aluno a ser verificado.





Nota: O botão Executar vai mostrar as informações de request e response, enquanto que o botão Executar (Simular Catraca) vai direcionar o response do sistema do cliente para o simulador. Caso seja liberado um ou ambos os sentidos, vai mostrar na cor verde e clicando é possível simular o giro.


Este artigo foi útil?

Que bom!

Obrigado pelo seu feedback

Desculpe! Não conseguimos ajudar você

Obrigado pelo seu feedback

Deixe-nos saber como podemos melhorar este artigo!

Selecione pelo menos um dos motivos

Feedback enviado

Agradecemos seu esforço e tentaremos corrigir o artigo