1. Introdução¶
BCC Services é um componente de software usado para captura biométrica. O BCC Services é usado para coletar imagens biométricas, mas não as envia automaticamente para o servidor. Você pode ver como enviar uma captura para o GBDS na seção Cadastro no GBDS.
Important
O BCC Services não salva os dados biométricos coletados e apenas os mantêm na RAM enquanto estiver ativo. Reiniciar ou desligar o computador ou fechar o BCC Services resultará na perda das coleções.
Este manual descreve o fluxo de trabalho e a solução de problemas padrão de captura biométrica do BCC Services. Consulte a especificação da API do BCC Services para obter mais informações sobre as chamadas de API.
Este manual está atualizado para a versão 2.8.8 do BCC Services.
2. Fluxo de Captura¶
Esta seção descreverá o fluxo de captura e as opções de capturas biométricas que você pode realizar com BCC Services. Um exemplo das chamadas e respostas do endpoint pode ser visto no Exemplo de Fluxo de Captura
Para iniciar uma captura, você precisa chamar um dos endpoints de captura biométrica. Esses são:
- Captura de Iris
- Captura de Palmar
- Captura de Assinatura
- Captura de Impressão Digital
- Captura de Palmar de Recém-nascido
- Captura de Face
- Captura de Imagem Auxiliar
- Captura de Perfil Completo
Essas capturas podem retornar uma de duas respostas:
- 200, para OK
- 400, para ERRO
O status 200 terá um campo tguid
que você deve salvar. Cada chamada de Captura Biométrica terá seu ID único,
independente de quantas capturas forem realizadas na mesma chamada. ou seja, você pode realizar a chamada
Captura de Impressão Digital
para coletar todos os dez dedos, gerando um tguid para todas as capturas, ou usando o mesmo endpoint dez vezes,
gerando um tguid para cada impressão digital.
A captura biométrica gera uma janela de captura. Para obter o status de captura, execute a chamada de status. Este endpoint retornará o status de captura, as informações do sensor e uma informação parcial de quais biometrias são capturadas.
Você deve realizar a chamada de status
até que o valor do campo status
seja captured
. Isso indicará que
a captura foi concluída. Outros status podem ser vistos se a captura estiver incompleta, como capturing
se
a janela de captura ainda estiver aberta ou closed
se a janela de captura tiver sido fechada sem concluir a captura.
Ao obter o status captured
, você precisa executar a chamada de
getProfile.
A resposta desta chamada contém as imagens .wsq
e .jpeg
. Essas estão no campo buffer
e convertido-buffer
,
respectivamente, como bytearrays no formato base64.
Após a conclusão de uma captura, recomendamos salvar as imagens em um banco de dados local até enviá-las ao servidor.
Danger
BCC Services salva a captura na RAM. Sair do BCC Services, desligar ou reiniciar o computador sem persistir os dados da transação resultará em perda de dados.
Depois que todas as capturas necessárias forem feitas, reinicie os serviços BCC usando a chamada restartBcc.
Warning
Reiniciar o BCC Services limpará todos os dados de transações na RAM. Garanta que seus dados estejam salvos antes de reiniciar o BCC Services.
A chamada restartBcc
encerrará o BCC Services e o reabrirá automaticamente. Para garantir que o software esteja
em execução após a reinicialização, execute a chamada
serviceStatus
e verifique se o valor do campo serverState
é running
.
2.1. Reabrir janela de captura incompleta¶
Se o usuário fechou a janela de captura sem finalizar a captura, a
chama de status retornará
o valor do status
como closed
. Você pode continuar uma captura interrompida com a chamada
openCapture
passando o tguid
fornecido pela chamada de captura biométrica. Isso manterá o progresso da captura.
2.2. Recuperando TGUID¶
Se você perdeu um TGUID por qualquer motivo, poderá recuperar o TGUID usando a chamada
listCaptureInstances.
Dentro do array de instances
, você pode encontrar todas as capturas biométricas realizadas enquanto o BCC Services
estava ativo (se o histórico de transações não foi limpo). Ele listará na ordem de execução, a primeira será a primeira
Captura Biométrica chamada e a última será a última Captura Biométrica chamada. Um exemplo de resposta é mostrado abaixo.
{
"result": "OK",
"instances": [
{
"tguid": "F1F14ADA-6A00-4A67-B887-F574764ECC77",
"type": "FINGERPRINT"
},
{
"tguid": "DD08CEAA-B508-421D-8484-717DF01C0C55",
"type": "SIGNATURE"
},
{
"tguid": "EB321A10-F2B2-46DB-9479-8A6E5A1A485D",
"type": "PROFILE"
}
]
}
3. Solução de Problemas¶
O BCC Services tem algumas chamadas para solução de problemas que você pode fazer e garantir que as coisas estejam funcionando corretamente. Tal como se seus equipamentos estão sendo identificados e se a versão do software é conhecida por você e pela equipe de suporte que pode ajudá-lo com seu problema. Essas chamadas são apresentadas a seguir.
3.1. Versão¶
Verificar a versão do software é essencial para o cenário de solução de problemas. Para verificar a versão do BCC Services, execute a chamada de versão.
3.2. Execução¶
Para verificar se o programa está executando, use a
chamada de serviceStatus
e observe o valor do campo serverState
.
3.3. Dispositivos¶
O BCC Services oferece uma opção para mostrar todos os dispositivos que estão conectados a ele. Para exibir a lista de dispositivos, execute a chamada deviceStatus.
4. Desligamento¶
Para desligar o BCC Services, chame finishService
5. Exemplo de Fluxo de Captura¶
Neste exemplo, descreveremos como realizar as chamadas para um registro de uma captura rolada de todos os dedos da mão esquerda.
Primeiro, execute a Chamada de Captura de Impressão Digital com a seguinte query:
Note
O campo “captureMode” não afeta o comportamento da captura do BCC Services. Este campo é utilizado para identificar a operação no BCC.
{
"captureMode": "REGISTER",
"notifyUrl": "",
"theme": "DARK",
"captureType": "ROLLED",
"type": "FINGERPRINT",
"sequenceControlType": "NONE",
"indexes": [
{
"index": "LEFT_LITTLE"
},
{
"index": "LEFT_RING"
},
{
"index": "LEFT_MIDDLE"
},
{
"index": "LEFT_INDEX"
},
{
"index": "LEFT_THUMB"
}
],
"exceptionSetType": "SIMPLIFIED",
"functions": [
{
"type": "RESET",
"enabled": true
},
{
"type": "CONFIG",
"enabled": true
},
{
"type": "CLEAR",
"enabled": true
},
{
"type": "CAPTURE",
"enabled": true
},
{
"type": "CANCEL",
"enabled": true
},
{
"type": "CAPTURE_NEW_IMAGE",
"enabled": true
},
{
"type": "IMAGE_PREVIEW",
"enabled": true
},
{
"type": "NEXT",
"enabled": true
},
{
"type": "OK",
"enabled": true
},
{
"type": "UPDATE_IMAGE",
"enabled": true
},
{
"type": "REMOVE_IMAGE",
"enabled": true
},
{
"type": "LIVE",
"enabled": true
},
{
"type": "ACQUIRE",
"enabled": true
},
{
"type": "SAVE",
"enabled": true
},
{
"type": "IMPORT",
"enabled": true
}
]
}
Se a tela for aberta com sucesso, você receberá este JSON:
{
"result": "OK",
"tguid": "F1F14ADA-6A00-4A67-B887-F574764ECC77"
}
Copie este TGUID e comece a chamar
status.
até receber o status captured
.
Important
Lembre-se que outros status, como closed
, também podem ser retornados caso o
operador não complete a captura.
Se nenhum dedo foi capturado, a resposta deve ser:
{
"result": "OK",
"tguid": "F1F14ADA-6A00-4A67-B887-F574764ECC77",
"type": "FINGERPRINT",
"status": "CAPTURING",
"operation": "INIT",
"command": "INIT",
"profile": {},
"profileMetadata": {
"profileVersion": "GBS BCC profile v2.8.7",
"appName": "GBS BCC",
"macAddress": [
"08-62-66-80-D5-5C",
"42-E2-30-11-DB-15",
"42-E2-30-11-D3-15",
"08-62-66-80-D4-94",
"40-E2-30-13-F7-8A",
"40-E2-30-11-D3-15"
],
"softwareStatus": {
"vendor": "Griaule Biometrics Ltda.",
"version": "2.8.7.10805",
"name": "GBS BCC Service"
},
"fingerprintPluggedDevices": [],
"fingerprintStartedDevices": [],
"faceDevice": {
"productName": "OBS Virtual Camera",
"serialNumber": "N/A",
"firmwareVersion": "N/A"
},
"bodyDevice": {
"productName": "OBS Virtual Camera",
"serialNumber": "N/A",
"firmwareVersion": "N/A"
},
"signatureDevice": {
"serialNumber": "N/A"
},
"irisDevice": "IRITECH",
"fields": [],
"fingerprints": [],
"palms": [],
"bodyImages": []
},
"windowInfo": {
"x": 683.0,
"y": 237.0,
"width": 685.0,
"height": 579.0,
"state": "NORMAL"
}
}
Se alguns dedos foram capturados, mas a captura não foi finalizada, o status
responderá com as
informações de captura parcial, conforme mostrado:
{
"result": "OK",
"tguid": "F1F14ADA-6A00-4A67-B887-F574764ECC77",
"type": "FINGERPRINT",
"status": "CAPTURING",
"operation": "INIT",
"command": "INIT",
"profileMetadata": {
"profileVersion": "GBS BCC profile v2.8.7",
"appName": "GBS BCC",
"macAddress": [
"08-62-66-80-D5-5C",
"42-E2-30-11-DB-15",
"42-E2-30-11-D3-15",
"08-62-66-80-D4-94",
"40-E2-30-13-F7-8A",
"40-E2-30-11-D3-15"
],
"softwareStatus": {
"vendor": "Griaule Biometrics Ltda.",
"version": "2.8.7.10805",
"name": "GBS BCC Service"
},
"fingerprintPluggedDevices": [],
"fingerprintStartedDevices": [],
"faceDevice": {
"productName": "OBS Virtual Camera",
"serialNumber": "N/A",
"firmwareVersion": "N/A"
},
"bodyDevice": {
"productName": "OBS Virtual Camera",
"serialNumber": "N/A",
"firmwareVersion": "N/A"
},
"signatureDevice": {
"serialNumber": "N/A"
},
"irisDevice": "IRITECH",
"fields": [],
"fingerprints": [
{
"index": "LEFT_LITTLE",
"type": "ROLLED",
"typeIndexKey": "ROLLED-left little",
"image": {
"resolution": 500
},
"height": 480,
"width": 320,
"template": {
"quality": 96
},
"captureType": "FLAT",
"nfiq": 1,
"contrast": 72,
"captured": false,
"extracted": true
},
{
"index": "LEFT_RING",
"type": "ROLLED",
"typeIndexKey": "ROLLED-left ring",
"image": {
"resolution": 500
},
"height": 480,
"width": 320,
"template": {
"quality": 98
},
"captureType": "FLAT",
"nfiq": 1,
"contrast": 66,
"captured": false,
"extracted": true
}
],
"palms": [],
"bodyImages": []
},
"windowInfo": {
"x": 683.0,
"y": 237.0,
"width": 685.0,
"height": 579.0,
"state": "NORMAL"
}
}
Após o término da captura, o campo de status
mudará para captured
e a chamada de status
responderá
com:
Important
Os valores “BYTEARRAY” são strings no formato base64.
{
"result": "OK",
"tguid": "F1F14ADA-6A00-4A67-B887-F574764ECC77",
"type": "FINGERPRINT",
"status": "CAPTURED",
"operation": "INIT",
"command": "NONE",
"profileMetadata": {
"profileVersion": "GBS BCC profile v2.8.7",
"appName": "GBS BCC",
"macAddress": [
"08-62-66-80-D5-5C",
"42-E2-30-11-DB-15",
"42-E2-30-11-D3-15",
"08-62-66-80-D4-94",
"40-E2-30-13-F7-8A",
"40-E2-30-11-D3-15"
],
"softwareStatus": {
"vendor": "Griaule Biometrics Ltda.",
"version": "2.8.7.10805",
"name": "GBS BCC Service"
},
"fingerprintPluggedDevices": [],
"fingerprintStartedDevices": [],
"faceDevice": {
"productName": "OBS Virtual Camera",
"serialNumber": "N/A",
"firmwareVersion": "N/A"
},
"bodyDevice": {
"productName": "OBS Virtual Camera",
"serialNumber": "N/A",
"firmwareVersion": "N/A"
},
"signatureDevice": {
"serialNumber": "N/A"
},
"irisDevice": "IRITECH",
"fields": [],
"fingerprints": [
{
"index": "LEFT_LITTLE",
"type": "ROLLED",
"typeIndexKey": "ROLLED-left little",
"image": {
"resolution": 500,
"converted-buffer": "BYTEARRAY"
},
"height": 480,
"width": 320,
"template": {
"quality": 96
},
"captureType": "FLAT",
"nfiq": 1,
"contrast": 72,
"captured": false,
"extracted": true
},
{
"index": "LEFT_RING",
"type": "ROLLED",
"typeIndexKey": "ROLLED-left ring",
"image": {
"resolution": 500,
"converted-buffer": "BYTEARRAY"
},
"height": 480,
"width": 320,
"template": {
"quality": 98
},
"captureType": "FLAT",
"nfiq": 1,
"contrast": 66,
"captured": false,
"extracted": true
},
{
"index": "LEFT_MIDDLE",
"type": "ROLLED",
"typeIndexKey": "ROLLED-left middle",
"image": {
"resolution": 500,
"converted-buffer": "BYTEARRAY"
},
"height": 480,
"width": 320,
"template": {
"quality": 98
},
"captureType": "FLAT",
"nfiq": 1,
"contrast": 76,
"captured": false,
"extracted": true
},
{
"index": "LEFT_INDEX",
"type": "ROLLED",
"typeIndexKey": "ROLLED-left index",
"image": {
"resolution": 500,
"converted-buffer": "BYTEARRAY"
},
"height": 480,
"width": 320,
"template": {
"quality": 100
},
"captureType": "FLAT",
"nfiq": 1,
"contrast": 71,
"captured": false,
"extracted": true
},
{
"index": "LEFT_THUMB",
"type": "ROLLED",
"typeIndexKey": "ROLLED-left thumb",
"image": {
"resolution": 500,
"converted-buffer": "BYTEARRAY"
},
"height": 480,
"width": 320,
"template": {
"quality": 100
},
"captureType": "FLAT",
"nfiq": 1,
"contrast": 70,
"captured": false,
"extracted": true
}
],
"palms": [],
"bodyImages": []
},
"windowInfo": {
"x": 683.0,
"y": 237.0,
"width": 1000.0,
"height": 579.0,
"state": "NORMAL"
}
}
Note
Após uma transação completa, a chamada de status responde com as imagens .jpeg
.
Agora é hora de realizar a chamada
getProfile.
Esta chamada responderá com as imagens em imagens .wsq
e .jpeg
. O campo buffer
contém as imagens .wsq
enquanto o campo converted-buffer
contém as imagens .jpeg
.
{
"result": "OK",
"tguid": "F1F14ADA-6A00-4A67-B887-F574764ECC77",
"type": "FINGERPRINT",
"status": "CAPTURED",
"operation": "INIT",
"command": "NONE",
"profile": {
"fingerprints": [
{
"index": "LEFT_LITTLE",
"type": "ROLLED",
"typeIndexKey": "ROLLED-left little",
"image": {
"buffer": "BYTEARRAY",
"resolution": 500,
"converted-buffer": "BYTEARRAY"
},
"height": 480,
"width": 320,
"template": {
"buffer": "BYTEARRAY",
"quality": 96
},
"captureType": "FLAT",
"nfiq": 1,
"contrast": 72,
"captured": false,
"extracted": true
},
{
"index": "LEFT_RING",
"type": "ROLLED",
"typeIndexKey": "ROLLED-left ring",
"image": {
"buffer": "BYTEARRAY",
"resolution": 500,
"converted-buffer": "BYTEARRAY"
},
"height": 480,
"width": 320,
"template": {
"buffer": "BYTEARRAY",
"quality": 98
},
"captureType": "FLAT",
"nfiq": 1,
"contrast": 66,
"captured": false,
"extracted": true
},
{
"index": "LEFT_MIDDLE",
"type": "ROLLED",
"typeIndexKey": "ROLLED-left middle",
"image": {
"buffer": "BYTEARRAY",
"resolution": 500,
"converted-buffer": "BYTEARRAY"
},
"height": 480,
"width": 320,
"template": {
"buffer": "BYTEARRAY",
"quality": 98
},
"captureType": "FLAT",
"nfiq": 1,
"contrast": 76,
"captured": false,
"extracted": true
},
{
"index": "LEFT_INDEX",
"type": "ROLLED",
"typeIndexKey": "ROLLED-left index",
"image": {
"buffer": "BYTEARRAY",
"resolution": 500,
"converted-buffer": "BYTEARRAY"
},
"height": 480,
"width": 320,
"template": {
"buffer": "BYTEARRAY",
"quality": 100
},
"captureType": "FLAT",
"nfiq": 1,
"contrast": 71,
"captured": false,
"extracted": true
},
{
"index": "LEFT_THUMB",
"type": "ROLLED",
"typeIndexKey": "ROLLED-left thumb",
"image": {
"buffer": "BYTEARRAY",
"resolution": 500,
"converted-buffer": "BYTEARRAY"
},
"height": 480,
"width": 320,
"template": {
"buffer": "BYTEARRAY",
"quality": 100
},
"captureType": "FLAT",
"nfiq": 1,
"contrast": 70,
"captured": false,
"extracted": true
}
]
},
"profileMetadata": {
"profileVersion": "GBS BCC profile v2.8.7",
"appName": "GBS BCC",
"macAddress": [
"08-62-66-80-D5-5C",
"42-E2-30-11-DB-15",
"42-E2-30-11-D3-15",
"08-62-66-80-D4-94",
"40-E2-30-13-F7-8A",
"40-E2-30-11-D3-15"
],
"softwareStatus": {
"vendor": "Griaule Biometrics Ltda.",
"version": "2.8.7.10805",
"name": "GBS BCC Service"
},
"fingerprintPluggedDevices": [],
"fingerprintStartedDevices": [],
"faceDevice": {
"productName": "OBS Virtual Camera",
"serialNumber": "N/A",
"firmwareVersion": "N/A"
},
"bodyDevice": {
"productName": "OBS Virtual Camera",
"serialNumber": "N/A",
"firmwareVersion": "N/A"
},
"signatureDevice": {
"serialNumber": "N/A"
},
"irisDevice": "IRITECH",
"fields": [],
"fingerprints": [
{
"index": "LEFT_LITTLE",
"type": "ROLLED",
"typeIndexKey": "ROLLED-left little",
"image": {
"resolution": 500,
"converted-buffer": "BYTEARRAY"
},
"height": 480,
"width": 320,
"template": {
"quality": 96
},
"captureType": "FLAT",
"nfiq": 1,
"contrast": 72,
"captured": false,
"extracted": true
},
{
"index": "LEFT_RING",
"type": "ROLLED",
"typeIndexKey": "ROLLED-left ring",
"image": {
"resolution": 500,
"converted-buffer": "BYTEARRAY"
},
"height": 480,
"width": 320,
"template": {
"quality": 98
},
"captureType": "FLAT",
"nfiq": 1,
"contrast": 66,
"captured": false,
"extracted": true
},
{
"index": "LEFT_MIDDLE",
"type": "ROLLED",
"typeIndexKey": "ROLLED-left middle",
"image": {
"resolution": 500,
"converted-buffer": "BYTEARRAY"
},
"height": 480,
"width": 320,
"template": {
"quality": 98
},
"captureType": "FLAT",
"nfiq": 1,
"contrast": 76,
"captured": false,
"extracted": true
},
{
"index": "LEFT_INDEX",
"type": "ROLLED",
"typeIndexKey": "ROLLED-left index",
"image": {
"resolution": 500,
"converted-buffer": "BYTEARRAY"
},
"height": 480,
"width": 320,
"template": {
"quality": 100
},
"captureType": "FLAT",
"nfiq": 1,
"contrast": 71,
"captured": false,
"extracted": true
},
{
"index": "LEFT_THUMB",
"type": "ROLLED",
"typeIndexKey": "ROLLED-left thumb",
"image": {
"resolution": 500,
"converted-buffer": "BYTEARRAY"
},
"height": 480,
"width": 320,
"template": {
"quality": 100
},
"captureType": "FLAT",
"nfiq": 1,
"contrast": 70,
"captured": false,
"extracted": true
}
],
"palms": [],
"bodyImages": []
},
"windowInfo": {
"x": 683.0,
"y": 237.0,
"width": 685.0,
"height": 579.0,
"state": "NORMAL"
}
}
Após a captura, você pode enviar as imagens para o servidor. Para entender como registrar a biometria capturada no GBDS, vá para a próxima seção.
5.1. Cadastro no GBDS¶
Chame o endpoint de enroll se desejar registrar as imagens capturadas anteriormente no GBDS.
No payload você precisa inserir as informações das chaves (keys), e biográficos (biographics). Dentro do
array biometric
, você precisará inserir os dados do endpoint getCapture
do BCC Services.
O valor do campo buffer
BCC Services precisa ser colocado no valor do campo content
no payload do
JSON para o GBDS.
See also
Para obter mais informações sobre operações no GBDS, consulte o Manual de Integração do GBDS.
O payload de exemplo para realizar o registro é mostrada abaixo:
{
"meta":{
"priority":"DEFAULT_PRIORITY",
"timeout":"-1"
},
"data":{
"keys": [
{
"id": "CPF",
"value": "618.323.606-44"
}
],
"biographics": [
{
"id": "name",
"value": "John Doe"
}
],
"biometric": [
{
"source": "ORIGINAL",
"type": "FINGERPRINT",
"format": "WSQ",
"properties": {
"width": 0,
"height": 0,
"resolution": 500,
"ratio": 0.0,
"matcherId": 0,
"extractorId": 0
},
"index": 0,
"content": "BYTEARRAY"
},
{
"source": "ORIGINAL",
"type": "FINGERPRINT",
"format": "WSQ",
"properties": {
"width": 0,
"height": 0,
"resolution": 500,
"ratio": 0.0,
"matcherId": 0,
"extractorId": 0
},
"index": 1,
"content": "BYTEARRAY"
},
{
"source": "ORIGINAL",
"type": "FINGERPRINT",
"format": "WSQ",
"properties": {
"width": 0,
"height": 0,
"resolution": 500,
"ratio": 0.0,
"matcherId": 0,
"extractorId": 0
},
"index": 2,
"content": "BYTEARRAY"
},
{
"source": "ORIGINAL",
"type": "FINGERPRINT",
"format": "WSQ",
"properties": {
"width": 0,
"height": 0,
"resolution": 500,
"ratio": 0.0,
"matcherId": 0,
"extractorId": 0
},
"index": 3,
"content": "BYTEARRAY"
},
{
"source": "ORIGINAL",
"type": "FINGERPRINT",
"format": "WSQ",
"properties": {
"width": 0,
"height": 0,
"resolution": 500,
"ratio": 0.0,
"matcherId": 0,
"extractorId": 0
},
"index": 4,
"content": "BYTEARRAY"
}
]
}
}