Описание
Данное решение было предоставлено компанией Recfaces и функционирует независимо от основного проекта. Для Работы решения требуется: Компьютер под управлением операционной системы Windows и камера с поддержкой 3D. Взаимодействие QuokkaPlatfom с инстансом RecFaces происходит через API запросы и WebSocket соединение.
Объект пользователя
Сервис распознавания передает информацию о стоящем человеке в следующем виде:
- "id": "c5f5e8ca-d2ff-445c-6e6f-f60b4851a582", - идентификатор трека
- "clientId": "00000001-0001-1001-0001-000000000003", - ?
- "lastName": "",
- "firstName": "",
- "middleName": "",
- "email": "",
- "birthDate": "",
- "phoneNumber": "",
- "qualityIndex": 6509.874238275003, индекс качества фотографии в базе
- "photoId": "00000000000000000000000000000001.3ea5a62c564e48665a186304a4762b58c7d", идентификатор лучшего кадра
- "extId": "",
- "photoUrl": "http://host:port/api/v1/photo/00000000000000000000000000000001.3ea5a62c564e48665a186304a4762b58c7d/image/data", - ссылка на изображение
- "description": "",
- "fieldStr1": "", Дополнительные поля. Можно использовать по своему усмотрению.
- "fieldStr2": "",
- "fieldStr3": "",
- "fieldStr4": "",
- "fieldStr5": "",
- "fieldStr6": "",
- "fieldStr7": "",
- "fieldStr8": "",
- "fieldStr9": "",
- "fieldStr10": "",
- "fieldKey1": "",
- "fieldKey2": "",
- "fieldKey3": "",
- "fieldKey4": "",
- "fieldKey5": "",
- "fieldInt1": 0,
- "fieldInt2": 0,
- "fieldInt3": 0,
- "fieldInt4": 0,
- "fieldInt5": 0,
- "fieldFloat1": 0,
- "fieldFloat2": 0,
- "fieldFloat3": 0,
- "fieldFloat4": 0,
- "fieldFloat5": 0,
- "fieldDate1": "",
- "fieldDate2": "",
- "fieldDate3": "",
- "fieldDate4": "",
- "fieldDate5": "",
- "gender": 1.03500974,
- "age": 26
API
API содержит в себе следующие методы:
GET
- /api/v1/photo/#pid/image/data - Где pid это параметр photoId из объекта пользователя. Метод возвращает фотографию.
/api/v1/dict/photo-profile/:uuid - Где uuid это параметр photoProfileId. Возвращает объект данных пользователя.
/api/v1/integration/cur-profile - Получение объекта с данными о человеке находящемся перед камерой в данный момент.
/api/v1/integration/cur-profiles - Возвращает массив всех найденных людей в зоне видимости камеры.
POST
-
/api/v1/dict/photo-profile/create-by-track - Создание новой учетной записи по треку полученному от камеры.
Отправляемый объект:
- "id": "3f1b3505-eece-47a7-4a77-938a541eba44", // id трека
- "lastName": "Create",
- "firstName": "By",
- "middleName": "Track",
- "email":"email",
- "idCard":"123",
- "phoneNumber":"01"
Ответ со статусом 200 возвращает объект данных пользователя. Ответ со статусом 204: Профиль не создан
-
/api/v1/dict/photo-profile/find-or-create-by-track - Находит или создает профиль человека по треку полученному от камеры(трек получается отдельным запросом), возвращает объект пользователя.
Отправляемый объект:
- "id": "3f1b3505-eece-47a7-4a77-938a541eba44", // id трека
- "lastName": "Create",
- "firstName": "By",
- "middleName": "Track",
- "email":"email",
- "idCard":"123",
- "phoneNumber":"01"
WebSocket
После включения, сервис камеры отдает начинает реализовывать событийную модель. Подписка на события сервиса происходит через подключение WebSocket к серверу камеры: IP адрес решения Recfaces + ':8866/ws/v1/events. Все события приходят в виде следующего объекта:
- "uri":"person", // Описание объекта: Устройство, человек, группа лиц
- "action":"come", происходящее событие: come, leave, identified, status, count
- "body": { // объект трека } тело события содержащее информацию.
События
Come - Подход человека - Данный тип события происходит в момент появления в камере объекта распознанного как лицо. body объекта:
- id: "fd9e7d30-649a-4270-6de9-070f6a0c3a2a" - Идентификатор трэка
- camId: "2ee5b49c-38f2-4f8c-5b7d-5075a6a5ca47" - Идентификатор камеры
- camName: "cam1" - Название использующейся камеры
- alivenessCheck: true - Пройдена ли проверка на живость
- alivenessType: "ik" - тип проверки (ik, ...)
- multiVerify: false - Верификации человека по другому биометрическому признаку
- startDate: "2017-11-27T15:46:20Z" - Время начала трэка
- finishDate: "" - Время окончания трэка (может быть пустым, если трэк открыт)
- photoId: "00000000000000000000000000000001.41143b27b293437c447154742ed402ec88e" - ID Фото лучшего кадра
- photoProfileId: "176b1d95-e019-4bfb-7841-ad2766c07196" - Идентификатор профиля (пустое если трэк не привязан к человеку)
- photoUrl: "http://192.168.1.165:8866/api/v1/photo/00000000000000000000000000000001.41143b27b293437c447154742ed402ec88e/image/data" - ссылка на изображение
- discredit: false - Трэк скомпрометирован (если включена проверка)
- discreditReason: "" - Причина компрометации
- camCode: ""
- camFramePhotoId: ""
- camFramePhotoUrl: ""
- camOrderPlace: ""
- clientId: "00000001-0001-1001-0001-000000000014"
- creatorId: "438fad30-8e8e-49b4-7a18-949d6f9d5c12"
- dateCreate: "2017-11-27T15:46:25Z"
- dateEdit: "2017-11-27T15:46:34Z"
- editorId: "438fad30-8e8e-49b4-7a18-949d6f9d5c12"
- fio: "лох "
- isDelete: false
- items: null
- mkvzTrackId: "742970f5-f5b4-4774-b267-7297af07942e"
- packageId: "df55e9bc"
- reopen: true
Recognized - Идентификация человека - Данный тип события происходит в момент распознавания человека перед камерой сервисом Recfaces. body объекта соответствует объекту из события Come.
Leave - Уход человека - Данный тип события происходит в момент ухода человека из зоны распознавания камеры после события Come. body объекта соответствует объекту из события Come.
Count - Появление группы лиц - Данный тип события происходит в момент попадания группы лиц в область распознавания камеры. body объекта содержит:
- "camId": "de93146b-241c-4fcc-405a-4714bb9b8cb5" - идентификатор камеры
- "faceCount": "2" - количество лиц найденных камерой в зоне действия