All pages
Powered by GitBook
1 of 5

Loading...

Loading...

Loading...

Loading...

Loading...

Описание коллбэка on_complete

Этот коллбэк вызывается после окончания проверки и возвращает результат анализа (не применяется в режиме capture). Вид результата зависит от параметра настройки Web Adapter result_mode.

Пожалуйста, обратите внимание: в целях безопасности мы рекомендуем настроить логику принятия решений на стороне вашего бэкенда. Более детальную информацию и примеры кода вы можете найти здесь.

Safe

Если result_mode установлен как safe, коллбэкon_complete возвращает только состояние анализов:

Обратите внимание: перечисленные ниже result_mode используются только для тестирования. Если информации, которая передается в режиме Safe, вам недостаточно, настройте плагин в соответствии с .

Status

При значении status коллбэк возвращает состояние анализов, а также – для каждого типа анализа – название типа, состояние анализа этого типа и вердикт системы.

Folder

При значенииfolderвозвращается практически то же самое, что при status, только добавляется идентификатор папки.

Full

В этом случае коллбэк возвращает полную информацию, включая чувствительные данные. Мы рекомендуем использовать safe; full будет отключен в ближайших релизах из соображений безопасности.

Рекомендациями по безопасности
{
  "state": "finished"
}
{
 "state": "finished",
 "analyses": {
   "quality": {
     "state": "finished",
     "resolution": "success"
   }
 }
}
{
 "state": "finished",
 "folder_id": "your_folder_id",
 "analyses": {
   "quality": {
     "state": "finished",
     "resolution": "success"
   }
 }
}

Описание коллбэка on_result

Этот коллбэк вызывается раз в несколько секунд в процессе анализа и возвращает промежуточный результат (не применяется в режиме capture). Вид результата зависит от параметра настройки Web Adapter result_mode.

Пожалуйста, обратите внимание: в целях безопасности мы рекомендуем настроить логику принятия решений на стороне вашего бэкенда. Более детальную информацию и примеры кода вы можете найти здесь.

Safe

Если result_mode установлен как safe, коллбэк on_result возвращает только состояние анализов:

или

Обратите внимание: перечисленные ниже result_mode используются только для тестирования. Если информации, которая передается в режиме Safe, вам недостаточно, настройте плагин в соответствии с .

Status

При значении status коллбэк возвращает состояние анализов, а также – для каждого типа анализа – название типа, состояние анализа этого типа и вердикт системы.

или

Folder

При значенииfolderвозвращается практически то же самое, что при status, только добавляется идентификатор папки.

Full

В этом случае коллбэк возвращает полную информацию, включая чувствительные данные. Мы рекомендуем использовать safe; full будет отключен в ближайших релизах из соображений безопасности.

Рекомендациями по безопасности
{
 "state": "processing"
}
{
 "state": "finished"
}
{
 "state": "processing",
 "analyses": {
   "quality": {
     "state": "processing",
     "resolution": ""
   }
 }
}
{
 "state": "finished",
 "analyses": {
   "quality": {
     "state": "finished",
     "resolution": "success"
   }
 }
}
{
 "state": "processing",
 "folder_id": "your_folder_id",
 "analyses": {
   "quality": {
     "state": "processing",
     "resolution": ""
   }
 }
}

Запуск плагина

Перед запуском убедитесь, что скрипты плагина загружены.

Для запуска окна плагина следует воспользоваться методом open(options). Параметры:

  • options – объект с настройками:

    • token – (опционально) токен авторизации;

    • license – объект с информацией о лицензии;

    • licenseUrl – строка, содержащая путь к файлу лицензии;

Пример:

lang – строка с идентификатором одного из подключенных языковых пакетов;
  • meta – объект, ключи которого являются названиями метаполей, а значения – их строковыми значениями. Метаданные передаются в Oz API и могут быть использованы для получения результатов анализа или поиска;

  • params – объект с идентификаторами и значениями дополнительных параметров:

    • extract_best_shot: true/false – запуск выбора лучшего кадра в анализе Quality;

  • action – массив строк с идентификаторами действий, по которым будет проводиться проверка. Доступные действия:

    • photo_id_front – фото лицевой стороны документа;

    • photo_id_back – фото обратной стороны документа;

    • video_selfie_left – поворот головы налево;

    • video_selfie_right – поворот головы направо;

    • video_selfie_down – наклон головы вниз;

    • video_selfie_high – поднятие головы вверх;

    • video_selfie_smile – улыбка;

    • video_selfie_eyes – моргание;

    • video_selfie_scan – сканирование;

    • video_selfie_blank – отсутствие действия, простое селфи.

    • video_selfie_best – специальное действие, которое извлекает из видео лучший кадр и выполняет анализ по нему вместо целого видео.

  • overlay_options – параметры отображения шаблона документа:

    • show_document_pattern: true/false – по умолчанию true, отображает картинку-шаблон, при значении false остается только прямоугольная рамка;

  • on_submit – callback-функция без аргументов, вызываемая после отправки пользовательских данных на сервер (не применяется в режиме capture).

  • on_capture_complete – callback-функция с одним аргументом, вызываемая по завершении съемки и возвращающая информацию о снятом видео. Пример возвращаемого объекта показан здесь.

  • on_complete – callback-функция с одним аргументом, вызываемая после окончания проверки и возвращающая результат анализа (не применяется в режиме capture). Вид результата зависит от параметра настройки Web Adapter result_mode. Описание результата здесь.

  • on_result – callback-функция с одним аргументом, вызываемая раз в несколько секунд в процессе анализа и возвращающая промежуточный результат (не применяется в режиме capture). Вид результата зависит от параметра настройки Web Adapter result_mode. Описание результата здесь.

  • on_error – callback-функция с одним аргументом, вызываемая при ошибке во время съемки и возвращающая информацию об ошибке: код ошибки, сообщение, идентификатор телеметрии для журналирования.

  • on_close – callback-функция без аргументов, вызываемая по окончании проверки после закрытия окна плагина, как ручного, так и автоматического.

  • style – раздел для настройки интерфейса.

  • device_id – (опционально) идентификатор используемой камеры.

  • enable_3d_mask (с версии 1.2.1) – включает использование 3D-маски при съемке вместо овала. Параметр работает только при load_3d_mask= true в настройках конфигурации адаптера; значение по умолчанию – false.

  • cameraFacingMode (добавлено в 1.4.0) – параметр, определяющий, какую камеру использовать; возможные значения: user (передняя камера), environment (задняя камера). Этот параметр работает только в том случае, когда для параметра use_for_liveness в файле конфигурации Web Adapter не установлено значение. Если use_for_liveness установлено любое значение, cameraFacingMode игнорируется.

  • disable_adaptive_aspect_ratio (добавлено в 1.5.0) – выключает автоматическую подстройку соотношения сторон видео к соотношению сторон окна. Значение по умолчанию – False, при стандартных настройках видео подстраивается под ближайшее соотношение из списка: 4:3, 3:4, 16:9, or 9:16. Обратите внимание: для съемки видео на смартфонах нужна портретная ориентация.

  • get_user_media_timeout (добавлено в 1.5.0) – когда SDK не может получить доступ к камере, по истечении этого таймаута появится подсказка, как решить проблему. Значение по умолчанию – 40000 (мс).

  • С помощью следующих параметров (добавлены в 1.7.15) вы можете управлять поведением SDK при зависании getUserMedia():

    • get_user_media_promise_timeout_ms – по истечении установленного здесь таймаута (в мс) SDK вызовет ошибку или покажет инструкцию для пользователя. Этот параметр представляет собой объект с ключами: "platform_browser", "browser", "platform", "default"(приоритет соответствует последовательности).

    • get_user_media_promise_timeout_throw_error – определяет, что именно демонстрирует SDK после таймаута, ошибку (если true) или инструкцию (если false).

  • OzLiveness.open({
        lang: 'en',
        action: [
            'video_selfie_blank',
        ],
        meta: { // если нужно, добавьте метаданные для папки
            'transaction_id': 'your unique transaction identifier', // идентификатор транзакции для поиска через Oz API
            'end_user_id': '<user_or_lead_id>',
            'meta_key': 'meta_value',
        },
        on_result: function (result) {
            console.log('on_result', result);
        },
        on_complete: function (result) {
            console.log('on_complete', result);
        },
        on_close: function () {
            console.log('on_close');
        },
        on_capture_complete: function (result) {
            console.log('on_capture_complete', result);
        }
    });

    Описание коллбэка on_error

    Этот коллбэк вызывается, если в системе возникает какая-либо ошибка. Он возвращает информацию об ошибке и идентификатор телеметрии, с помощью которого можно получить дополнительные данные о причине сбоя.

    on_error { 
        "code": "error_code", 
        "event_session_id": "id_of_telemetry_session_with_error", 
        "message": "<error decription>", 
        "context": {}  // дополнительная информация
    }

    Съемка видео и описание коллбэка on_capture_complete

    В этом разделе вы узнаете, как снимать видео и отправлять его Oz API через ваш бэкенд.

    1. Обзор

    Режим capture работает следующим образом:

    1. Oz Web SDK снимает видео и передает его вашему web-приложению в виде последовательности кадров.

    2. Web-приложение вызывает ваш бэкэнд и передает в него архив с кадрами.

    3. После обработки видео ваш бэкэнд вызывает Oz API для выполнения анализов, после чего получает их результаты.

    4. Ваш бэкэнд передает результаты обратно в web-приложение (опционально).

    2. Реализация

    На стороне сервера необходимо сконфигурировать Web SDK для работы в режиме capture: параметру architecture в файле app_config.json значение capture.

    В вашем web-приложении добавьте callback-функцию для обработки кадров при открытии Web SDK:

    Структура получаемого объекта зависит от того, была ли обнаружена виртуальная камера.

    Виртуальная камера не обнаружена

    Виртуальная камера обнаружена

    Список переменных с их значениями приведен ниже.

    Обратите внимание:

    • Видео, полученное через Oz Web SDK, – это последовательность кадров. Чтобы отправить его Oz API, поместите кадры в ZIP-архив, затем используйте метод POST {{host}}/api/folders (пройдите по для ознакомления с коллекцией Postman).

    • Вы можете получить из папки видео в формате MP4 video: вызовите метод /api/folders/{{folder_id}}, указав идентификатор папки. В JSON-ответе найдите preview_url в source_media. В preview_url содержится ссылка на видео. Из плагина получить MP4-видео нельзя (только в виде последовательности кадров).

    • Для передачи в Oz API используйте данные без кодирования в base64.

    Координаты "ориентиров" лица (левый глаз, правый глаз, нос, рот, левое ухо, правое ухо) на лучшем кадре

    frame_list

    Array[String]

    Все кадры в формате data URL

    frame_bounding_box_list

    Array[Array[Named_parameter: Int]]

    Координаты прямоугольников, в которые вписано лицо на кадрах из frame_list в соответствующем порядке

    frame_landmarks

    Array[Named_parameter: Array[Int, Int]]

    Координаты "ориентиров" лица (левый глаз, правый глаз, нос, рот, левое ухо, правое ухо) на кадрах из frame_list в соответствующем порядке

    action

    String

    Код действия

    additional_info

    String

    Информация о среде клиента

    При использовании архитектуры capture также необходимо добавить в запрос POST {{host}}/api/folders дополнительное поле additional_info. Оно нужно для сбора информации о среде клиента. Пример заполнения тела запроса:

    Переменная

    Тип

    Описание

    best_frame

    String

    Лучший кадр, JPEG в формате data URL

    best_frame_png

    String

    Лучший кадр, PNG в формате data URL, необходим для защиты от подмены видеопотока с помощью виртуальной камеры

    best_frame_bounding_box

    Array[Named_parameter: Int]

    Координаты прямоугольника, в который вписано лицо на лучшем кадре

    best_frame_landmarks

    установить
    плагина
    ссылке

    Array[Named_parameter: Array[Int, Int]]

    OZLiveness.open({
      ... // другие параметры
      on_capture_complete: function(result) {
             // Код для обработки кадров / отправки его через ваш API, шаг 2 на схеме
      }
    })
    {
    	"action": <action>,
    	"best_frame": <bestframe>,
    	"best_frame_png": <bestframe_png>,
    	"best_frame_bounding_box": {
    		"left": <bestframe_bb_left>,
    		"top": <bestframe_bb_top>,
    		"right": <bestframe_bb_right>,
    		"bottom": <bestframe_bb_bottom>
    		},
    	"best_frame_landmarks": {
    		"left_eye": [bestframe_x_left_eye, bestframe_y_left_eye],
    		"right_eye": [bestframe_x_right_eye, bestframe_y_right_eye],
    		"nose_base": [bestframe_x_nose_base, bestframe_y_nose_base],
    		"mouth_bottom": [bestframe_x_mouth_bottom, bestframe_y_mouth_bottom],
    		"left_ear": [bestframe_x_left_ear, bestframe_y_left_ear],
    		"right_ear": [bestframe_x_right_ear, bestframe_y_right_ear]
    		},
    	"frame_list": [<frame1>, <frame2>],
    	"frame_bounding_box_list": [
    		{
    		"left": <frame1_bb_left>,
    		"top": <frame1_bb_top>,
    		"right": <frame1_bb_right>,
    		"bottom": <frame1_bb_bottom>
    		},
    		{
    		"left": <frame2_bb_left>,
    		"top": <frame2_bb_top>,
    		"right": <frame2_bb_right>,
    		"bottom": <frame2_bb_bottom>
    		},
    	],
    	"frame_landmarks": [
    		{
    		"left_eye": [frame1_x_left_eye, frame1_y_left_eye],
    		"right_eye": [frame1_x_right_eye, frame1_y_right_eye],
    		"nose_base": [frame1_x_nose_base, frame1_y_nose_base],
    		"mouth_bottom": [frame1_x_mouth_bottom, frame1_y_mouth_bottom],
    		"left_ear": [frame1_x_left_ear, frame1_y_left_ear],
    		"right_ear": [frame1_x_right_ear, frame1_y_right_ear]
    		},
    		{
    		"left_eye": [frame2_x_left_eye, frame2_y_left_eye],
    		"right_eye": [frame2_x_right_eye, frame2_y_right_eye],
    		"nose_base": [frame2_x_nose_base, frame2_y_nose_base],
    		"mouth_bottom": [frame2_x_mouth_bottom, frame2_y_mouth_bottom],
    		"left_ear": [frame2_x_left_ear, frame2_y_left_ear],
    		"right_ear": [frame2_x_right_ear, frame2_y_right_ear]
    		}
    	],
    "from_virtual_camera": null,
    "additional_info": <additional_info>
    }
    {
    	"action": <action>,
    	"best_frame": null,
    	"best_frame_png": null,
    	"best_frame_bounding_box": null,
    	"best_frame_landmarks": null
    	"frame_list": null,
    	"frame_bounding_box_list": null,
    	"frame_landmarks": null,
    	"from_virtual_camera": {
    	"additional_info": <additional_info>,
    		"best_frame": <bestframe>,
    		"best_frame_png": <best_frame_png>,
    		"best_frame_bounding_box": {
    			"left": <bestframe_bb_left>,
    			"top": <bestframe_bb_top>,
    			"right": <bestframe_bb_right>,
    			"bottom": <bestframe_bb_bottom>
    			},
    		"best_frame_landmarks": {
    			"left_eye": [bestframe_x_left_eye, bestframe_y_left_eye],
    			"right_eye": [bestframe_x_right_eye, bestframe_y_right_eye],
    			"nose_base": [bestframe_x_nose_base, bestframe_y_nose_base],
    			"mouth_bottom": [bestframe_x_mouth_bottom, bestframe_y_mouth_bottom],
    			"left_ear": [bestframe_x_left_ear, bestframe_y_left_ear],
    			"right_ear": [bestframe_x_right_ear, bestframe_y_right_ear]
    			},
    		"frame_list": [<frame1>, <frame2>],
    		"frame_bounding_box_list": [
    			{
    			"left": <frame1_bb_left>,
    			"top": <frame1_bb_top>,
    			"right": <frame1_bb_right>,
    			"bottom": <frame1_bb_bottom>
    			},
    			{
    			"left": <frame2_bb_left>,
    			"top": <frame2_bb_top>,
    			"right": <frame2_bb_right>,
    			"bottom": <frame2_bb_bottom>
    			},
    			],
    		"frame_landmarks": [
    			{
    			"left_eye": [frame1_x_left_eye, frame1_y_left_eye],
    			"right_eye": [frame1_x_right_eye, frame1_y_right_eye],
    			"nose_base": [frame1_x_nose_base, frame1_y_nose_base],
    			"mouth_bottom": [frame1_x_mouth_bottom, frame1_y_mouth_bottom],
    			"left_ear": [frame1_x_left_ear, frame1_y_left_ear],
    			"right_ear": [frame1_x_right_ear, frame1_y_right_ear]
    			},
    			{
    			"left_eye": [frame2_x_left_eye, frame2_y_left_eye],
    			"right_eye": [frame2_x_right_eye, frame2_y_right_eye],
    			"nose_base": [frame2_x_nose_base, frame2_y_nose_base],
    			"mouth_bottom": [frame2_x_mouth_bottom, frame2_y_mouth_bottom],
    			"left_ear": [frame2_x_left_ear, frame2_y_left_ear],
    			"right_ear": [frame2_x_right_ear, frame2_y_right_ear]
    			}
    		]
    	}
    }
    "VIDEO_FILE_KEY": VIDEO_FILE_ZIP_BINARY
    "payload": "{
            "media:meta_data": {
               "VIDEO_FILE_KEY": {
                  "additional_info": <additional_info>
                  }
               }
    }"