Вебхуки

Вы можете настроить FindFace Multi для автоматической отправки уведомлений об определенных событиях, эпизодах, записях счетчиков на заданный URL-адрес. Для этого создайте и настройте вебхук. При возникновении нужного события/эпизода/записи счетчика FindFace Multi отправит HTTP-запрос на URL-адрес, указанный в настройках вебхука.

Вебхуки можно использовать для решения разнообразных задач, например, для уведомления пользователя об определенном событии, вызова определенных действий на целевом веб-сайте, при решении задач безопасности, таких как удаленное автоматическое управление доступом и др.

В этом разделе:

Настройка вебхука

Важно

Пользователь должен иметь соответствующие права доступа для создания, просмотра, изменения или удаления вебхука. Чтобы настроить права доступа, перейдите в НастройкиРоли.

Примечание

Перед использованием вебхуков убедитесь, что хотя бы один из следующих параметров задан в файле /opt/findface-multi/configs/findface-multi-legacy/findface-multi-legacy.py: SERVICE_EXTERNAL_ADDRESS или EXTERNAL_ADDRESS.

Для создания вебхука выполните следующие действия:

  1. Перейдите на вкладку Настройки. Выберите Вебхуки.

  2. Нажмите + Новый Вебхук.

    create_webhook_ru

  3. Введите заголовок вебхука.

    webhook_ru

  4. Укажите адрес, на который будут отправляться оповещения.

    Примечание

    Если вы настраиваете вебхук для отправки оповещений о событиях в Тревожный монитор и Журнал тревог, укажите в URL адрес, на который будут отправляться оповещения. В адресе http://ip_address:port/ff_multi/alarmer/ укажите название и порт сервиса backend_provider. Таким образом, URL будет выглядеть следующим образом: http://backend_provider:1111/ff_multi/alarmer/.

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

  5. Вы можете отправлять уведомления в пакетном режиме. Укажите максимальное количество уведомлений в пакете. Фактическое количество может быть меньшим.

  6. Укажите максимальное количество попыток отправить уведомление. Интервал между попытками увеличивается экспоненциально с максимумом 100 секунд.

    Важно

    Для того чтобы получить все сообщения с момента потери соединения, если оно имеет место, установите значение 0. Установите 1, чтобы пропустить старые сообщения.

  7. FindFace Multi будет автоматически отправлять оповещения о событиях, эпизодах, записях счетчика, удовлетворяющих заданным фильтрам. Фильтровать события можно по следующим параметрам.

    Существует два способа настройки фильтров:

    • визуально

    • с помощью кода

    Чтобы настроить фильтры визуально, нажмите Настроить.

    Универсальные фильтры для событий распознавания (лицо, силуэт, транспортное средство):

    • Совпадения: фильтровать только события с совпадением объектов/без совпадения объектов или все события.

    • Списки наблюдения: фильтровать только события по определенному списку наблюдения или все события.

    • Группы камер: фильтровать только события по определенной группе камер.

    • Камеры: фильтровать события по определенной камере.

    • ID камер: отображать только события по камере с определенным ID.

    • Название карточки: фильтровать события с заданным названием карточки.

    • Лучший кадр события: фильтровать все события трека, только события с кадрами в реальном времени, только одно событие с лучшим кадром по окончании трека.

    • Линия: фильтровать события с пересечением определенной линии.

    • Направление пересечения линии: фильтровать события с пересечением линий в заданном направлении или все события.

    • Есть обратное пересечение: фильтровать события с обратным пересечением/без обратного пересечения или все события.

    • Принадлежность: фильтровать события лиц с людьми по их принадлежности к «своим» или «чужим».

    Фильтры для событий распознавания лиц:

    • Возраст: фильтровать события с людьми определенного возраста.

    • Пол: отобразить события с людьми заданного пола.

    • Эмоции: фильтровать события по выражению эмоций на лице человека.

    • Борода: фильтровать события по наличию у человека бороды.

    • Состояние глаз: отобразить события с людьми, у которых глаза открыты/закрыты или не видны.

    • Очки: фильтровать события по наличию очков на лице.

    • Медицинская маска: фильтровать события по наличию медицинской маски на лице.

    • Поворот: фильтровать события по углу поворота головы.

    • Наклон: фильтровать события по углу наклона головы.

    • Витальность: фильтровать события по витальности (liveness) лица.

    Фильтры для событий распознавания силуэтов:

    • Возраст по силуэту: отобразить события с людьми определенного возраста.

    • Пол по силуэту: отобразить события с людьми заданного пола.

    • Тип верха одежды: отображать события, в которых человек носит одежду верха заданного типа: куртка, пальто, жилет, толстовка, футболка, рубашка, платье.

    • Верх одежды: отображать события, в которых человек носит одежду верха заданной обобщенной категории: с длинными рукавами, с короткими рукавами, без рукавов.

    • Цвет верха одежды: отображать события с людьми, одетыми в одежду заданного цвета (верх).

    • Низ одежды: отображать события, в которых человек носит одежду низа заданного типа: брюки, юбка, шорты, неопределенный.

    • Цвет низа одежды: отображать только события с людьми, одетыми в одежду заданного цвета (низ).

    • Головной убор: отображать события с людьми в головном уборе заданного типа: шапка/шляпа/кепка, капюшон/платок, без головного убора.

    • Сумка в руке: отображать события с людьми с сумкой в руке/без сумки в руке.

    • Сумка на спине: отображать события с людьми с сумкой на спине/без сумки на спине.

    • Жилет: отображать события с людьми, одетыми в жилет заданного цвета.

    • Каска: отображать события с людьми, одетыми в каску заданного цвета.

    • Падение: отображать события, в которых человек падает (или упал) / падение отсутствует.

    • Курение: отображать события, в которых человек курит или курение отсутствует.

    • Использование телефона: отображать события, в которых человек использует/не использует телефон.

    • Разговор по телефону: отображать события, в которых человек звонит/разговаривает по телефону или нет.

    • Фотографирование: отображать события, в которых человек фотографирует телефоном экран или документы или не делает этого.

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

    Фильтры для событий распознавания транспортных средств:

    • Регистрационный номер неизвестен: найти транспортное средство с неизвестным или известным номером.

    • Регистрационный номер: найти транспортное средство с заданным номером.

    • Страна: отобразить события с транспортными средствами, зарегистрированными в заданной стране.

    • Марка: фильтровать события по марке транспортного средства.

    • Модель: фильтровать события по модели транспортного средства.

    • Цвет кузова: отобразить события с транспортными средствами заданного цвета кузова.

    • Тип кузова: отобразить события с транспортными средствами заданного типа кузова: внедорожник, седан, кроссовер, кабриолет, купе, универсал, пикап, микроавтобус, минивэн, лимузин.

    • Категория ТС: отобразить только события с транспортными средствами, принадлежащими заданной категории: категория ТС не распознана, мотоцикл, скутер, квадроцикл, легковой автомобиль, легковой автомобиль с прицепом, грузовик, грузовик с прицепом, автобус, сочленённый автобус, ТС других категорий.

    • Вес и размер ТС: отобразить события с транспортными средствами заданного веса и размера кузова.

    • Спецтранспорт: отобразить только события с транспортными средствами, принадлежащими заданному типу: такси (включая грузотакси), маршрутный транспорт, каршеринг, скорая помощь (включая реанимобиль), полиция (включая ДПС), автомобили МЧС и пожарные машины, газоспасательные и аварийно-спасательные службы, военная техника (включая Росгвардию), коммунальная, строительная техника (включая ЦОДД), инкассация, остальной спецтранспорт, не спецтранспорт.

    • Ракурс ТС: отобразить события с транспортными средствами заданного ракурса: ракурс ТС неизвестен, вид спереди, вид сзади, вид сбоку.

    Примечание

    Цвет номера, Регион отключены по умолчанию. Чтобы включить эти параметры раскомментируйте "license_plate_number_color", "license_plate_region" в секции carsfeatures в конфигурационном файле /opt/findface-multi/configs/findface-multi-legacy/ui-config.yaml.

    sudo vi /opt/findface-multi/configs/findface-multi-legacy/ui-config.yaml
    
    ...
    cars:
      features:
      ...
        license_plate_number_color:
          name: license_plate_number_color
          extractor: license_plate
          classes:
            - unknown
            - white
            - yellow
            - blue
            - green
            - grey
          index: 6
        license_plate_region:
          name: license_plate_region
          extractor: license_plate
          classes:
            - unknown
            - DXB
            - SHJ
            - ADH
            - AJM
            - UAK
            - RAK
            - FUJ
            - TH-10
            - TH-11
            - TH-12
            - TH-13
            - TH-14
           ...
            - TH-93
            - TH-94
            - TH-95
            - TH-96
          index: 7
    

    После внесения изменений перезапустите контейнеры FindFace Multi.

    cd /opt/findface-multi/
    
    sudo docker-compose restart
    

    Эпизоды с людьми:

    • Тип эпизода: фильтровать эпизоды по статусу (открыт/с событиями/закрыт).

    • Совпадения: лица: отобразить только эпизоды с совпадением лиц/без совпадения лиц/все эпизоды.

    • Совпадения: силуэты: отобразить только эпизоды с совпадением силуэтов/без совпадения силуэтов/все эпизоды.

    • Списки наблюдения: отобразить только эпизоды по определенному списку наблюдения.

    • Группы камер: отобразить только эпизоды по определенной группе камер.

    • Камеры: отобразить только эпизоды по определенной камере.

    • ID камер: отобразить только эпизоды по камере с определенным ID.

    • Название карточки: отобразить эпизоды с заданным названием карточки.

    • Количество событий: отобразить эпизоды с заданным количеством событий.

    Эпизоды с транспортными средствами:

    • Тип эпизода: фильтровать эпизоды по статусу (открыт/с событиями/закрыт).

    • Совпадения: отобразить только эпизоды с совпадением транспортных средств/без совпадения транспортных средств/все эпизоды.

    • Списки наблюдения: отобразить только эпизоды по определенному списку наблюдения.

    • Группы камер: отобразить только эпизоды по определенной группе камер.

    • Камеры: отобразить только эпизоды по определенной камере.

    • ID камер: отобразить только эпизоды по камере с определенным ID.

    • Название карточки: отобразить эпизоды с заданным названием карточки.

    • ID эпизода: отобразить эпизод с определенным ID.

    • Количество событий: отобразить эпизоды с заданным количеством событий.

    Записи счетчиков:

    • Группы камер: отобразить записи счетчика по определенной группе камер.

    • Камеры: отобразить записи счетчика по определенной камере.

    • Количество лиц: фильтровать записи счетчика по количеству лиц.

    • Количество силуэтов: фильтровать записи счетчика по количеству силуэтов.

    • Количество транспортных средств: фильтровать записи счетчика по количеству транспортных средств.

    • ID счётчика: фильтровать записи счетчика с определенным ID.

    Для некоторых фильтров дополнительно можно указать порог срабатывания.

    Примечание

    Некоторые параметры доступны только в режиме кода и не представлены в визуальных фильтрах. Чтобы правильно настроить эти параметры с помощью кода, прочтите их описания.

    Чтобы настроить фильтры с помощью кода, переключитесь в режим Код. Используйте следующие описания:

    Универсальные фильтры для событий распознавания (лицо, силуэт, транспортное средство):

    Секции: face_events, body_events, car_events.

    • "matched_lists": ID списка наблюдения, [integer].

    • "camera_groups": ID группы камер, [integer].

    • "cameras": ID камеры, [integer].

    • "matched_card_in": ID совпавшей карточки, [integer].

    • "matched": результат сопоставления с картотекой, boolean. Установите true или false, если отправку оповещения должны вызывать только события с совпадениями или только события без совпадений.

    • "confidence_gte": минимальное значение уверенности алгоритма, number. Минимальное значение – 0, максимальное – 1.

    • "bs_type": режим отслеживания объектов на видео, [string]. Возможные значения: "overall", "realtime".

    • "line": ID пересечения линии, [integer].

    • "line_crossing_direction": направление пересечения линии, [enum]. Возможные значения: "none", "AB", "BA".

    • "backward_line_crossing": установите true или false, если событие имеет или не имеет обратное пересечение, boolean.

    • "local": установите true или false, чтобы фильтровать события с людьми по их принадлежности к «своим» или «чужим», boolean. Только для событий лиц.

    Фильтры для событий распознавания лиц:

    Секция: face_events.

    • "headpose_yaw_angle_gte": минимальный поворот головы, integer (градусы). Если голова полностью повернута влево, угол равен -180. Если полностью повернута вправо, то 180. Нейтральное положение головы соответствует 0.

    • "headpose_yaw_angle_lte": максимальный поворот головы, integer (градусы). Если голова полностью повернута влево, угол равен -180. Если полностью повернута вправо, то 180. Нейтральное положение головы соответствует 0.

    • "headpose_pitch_angle_gte": минимальный наклон головы, integer (градусы). Если голова наклонена вперед, а подбородок касается груди, угол равен -180. Если голова наклонена назад и обращена к небу, то 180. Нейтральное положение головы соответствует 0.

    • "headpose_pitch_angle_lte": максимальный наклон головы, integer (градусы). Если голова наклонена вперед, а подбородок касается груди, угол равен -180. Если голова наклонена назад и обращена к небу, то 180. Нейтральное положение головы соответствует 0.

    • "gender": пол, [string]. Возможные значения: "male", "female".

    • "age_lte": максимальный возраст, integer.

    • "age_gte": минимальный возраст, integer.

    • "glasses": очки, [string]. Возможные значения: "none", "eye" (очки), "sun" (солнцезащитные очки), "other" (например, карнавальные очки, спортивные очки и т.д.).

    • "emotions": эмоции, [string]. Возможные значения: "angry", "disgust", "fear", "happy", "sad", "surprise", "neutral".

    • "beard": борода, [string]. Возможные значения: "none", "beard".

    • "medmask": медицинская маска, [string]. Возможные значения: "none", "correct", "incorrect".

    • "liveness": оценка витальности liveness, [string]. Возможные значения: "real", "fake".

    • "temperature_gte": минимальная температура, number.

    • "liveness_gte": минимальное значение уверенности алгоритма в том, что лицо витально, number. Минимальное значение – 0, максимальное – 1.

    • "eyes_attrs": состояние глаз, [string]. Возможные значения: "opened", "closed", "occluded".

    • "eyes_attrs_score_gte": минимальное значение уверенности алгоритма в том, что глаза открыты, закрыты, перекрыты, number. Минимальное значение – 0, максимальное – 1.

    • "eyes_attrs_score_lte": максимальное значение уверенности алгоритма в том, что глаза открыты, закрыты, перекрыты, number. Минимальное значение – 0, максимальное – 1.

    Фильтры для событий распознавания силуэтов:

    Секция: body_events.

    • "headwear": тип головного убора (шапка/кепка, капюшон/платок, без убора), [string]. Возможные значения: "hat", "hood", "none".

    • "upper_clothes": обобщенная категория одежды верхней части тела (с длинными рукавами, с короткими рукавами, без рукавов), [string]. Возможные значения: "long_sleeves", "short_sleeves", "without_sleeves".

    • "detailed_upper_clothes": детализированный тип одежды верхней части тела (куртка, пальто, жилет без рукавов, толстовка, футболка, рубашка, платье), [string]. Возможные значения: "jacket", "coat", "sleeveless", "sweatshirt", "t-shirt", "shirt", "dress".

    • "top_color": цвет одежды верхней части тела, [string]. Возможные значения: "white", "black", "grey", "brown", "red", "orange", "yellow", "green", "lightblue", "blue", "purple", "pink", "beige", "violet".

    • "lower_clothes": тип одежды нижней части тела (брюки, юбка, шорты, неопределенный), [string]. Возможные значения:"pants", "obscured", "skirt", "shorts".

    • "bottom_color": цвет одежды нижней части тела, [string]. Возможные значения: "white", "black", "grey", "brown", "red", "orange", "yellow", "green", "lightblue", "blue", "purple", "pink", "beige", "violet".

    • "bag_hand_score_gte": минимальное значение уверенности алгоритма в том, что человек носит сумку в руке, number. Минимальное значение – 0, максимальное – 1.

    • "bag_hand_score_lte": максимальное значение уверенности алгоритма в том, что человек носит сумку в руке, number. Минимальное значение – 0, максимальное – 1.

    • "bag_hand": наличие сумки в руках, [string]. Возможные значения: "hand", "none".

    • "bag_back_score_gte": минимальное значение уверенности алгоритма в том, что человек носит сумку на спине, number. Минимальное значение – 0, максимальное – 1.

    • "bag_back_score_lte"`: максимальное значение уверенности алгоритма в том, что человек носит сумку в руке, number. Минимальное значение – 0, максимальное – 1.

    • "bag_back": наличие сумки на спине, [string]. Возможные значения: "back", "none".

    • "vest_type_score_gte": минимальная достоверность распознавания наличия жилета, number. Минимальное значение – 0, максимальное – 1.

    • "vest_type_score_lte": максимальная достоверность распознавания наличия жилета, number. Минимальное значение – 0, максимальное – 1.

    • "vest_type": наличие средства индивидуальной защиты в виде жилета, [string]. Возможные значения:"green/yellow", "orange", "not_visible", "none".

    • "helmet_type_score_lte": максимальная достоверность распознавания наличия шлема, number. Минимальное значение – 0, максимальное – 1.

    • "helmet_type_score_gte": минимальная достоверность распознавания наличия шлема, number. Минимальное значение – 0, максимальное – 1.

    • "helmet_type": наличие средства индивидуальной защиты в виде шлема, [string]. Возможные значения: "red/orange", "white", "other", "not_visible", "none".

    • "age_group_score_lte": максимальная достоверность распознавания возрастной группы, number. Минимальное значение – 0, максимальное – 1.

    • "age_group_score_gte": минимальная достоверность распознавания возрастной группы, number. Минимальное значение – 0, максимальное – 1.

    • "age_group": возраст по группе, [string]. Возможные значения: "0-16", "17-35", "36-50", "50+".

    • "gender_score_lte": максимальная достоверность распознавания пола, number. Минимальное значение – 0, максимальное – 1.

    • "gender_score_gte": минимальная достоверность распознавания пола, number. Минимальное значение – 0, максимальное – 1.

    • "body_gender": пол, [string]. Возможные значения: "male", "female".

    • "fall": падение человека (падает (или упал) / падение отсутствует), [string]. Возможные значения: "fall", "none".

    • "fall_score_lte": максимальное значение уверенности алгоритма в том, что человек падает (или упал), либо падение отсутствует, number. Минимальное значение – 0, максимальное – 1.

    • "fall_score_gte": минимальное значение уверенности алгоритма в том, что человек падает (или упал), либо падение отсутствует, number. Минимальное значение – 0, максимальное – 1.

    • "uniform": человек одет в униформу [string]. Возможные значения: "civilian", "police", "military", "none".

    • "uniform_score_lte": максимальное значение уверенности алгоритма в том, что человек одет в униформу, number. Минимальное значение – 0, максимальное – 1.

    • "uniform_score_gte": минимальное значение уверенности алгоритма в том, что человек одет в униформу, number. Минимальное значение – 0, максимальное – 1.

    • "handface_smoking": курение, [string]. Возможные значения: "smoking", "none".

    • "handface_smoking_score_lte": максимальное значение уверенности алгоритма в том, что человек курит, number. Минимальное значение – 0, максимальное – 1.

    • "handface_smoking_score_gte": минимальное значение уверенности алгоритма в том, что человек курит, number. Минимальное значение – 0, максимальное – 1.

    • "handface_phone_use": использование телефона, [string]. Возможные значения: "phone_use", "none".

    • "handface_phone_use_score_lte": максимальное значение уверенности алгоритма в том, что человек использует телефон, number. Минимальное значение – 0, максимальное – 1.

    • "handface_phone_use_score_gte": минимальное значение уверенности алгоритма в том, что человек использует телефон, number. Минимальное значение – 0, максимальное – 1.

    • "handface_phone_call": звонок/разговор по телефону, [string]. Возможные значения: "phone_call", "none".

    • "fall_score_lte": максимальное значение уверенности алгоритма в том, что человек звонит/разговаривает по телефону, number. Минимальное значение – 0, максимальное – 1.

    • "handface_phone_call_score_gte": минимальное значение уверенности алгоритма в том, что человек звонит/разговаривает по телефону, number. Минимальное значение – 0, максимальное – 1.

    • "handface_taking_pictures": фотографирование экрана или документов телефоном, [string]. Возможные значения: "photo", "none".

    • "handface_taking_pictures_score_lte": максимальное значение уверенности алгоритма в том, что человек фотографирует экран или документы своим телефоном или не фотографирует, number. Минимальное значение – 0, максимальное – 1.

    • "handface_taking_pictures_score_gte": минимальное значение уверенности алгоритма в том, что человек фотографирует экран или документы своим телефоном или не фотографирует, number. Минимальное значение – 0, максимальное – 1.

    Фильтры для событий распознавания транспортных средств:

    Секция: car_events.

    • "category_confidence_gte": минимальная достоверность распознавания категории транспортного средства, number. Минимальное значение – 0, максимальное – 1.

    • "category_confidence_lte": максимальная достоверность распознавания категории транспортного средства, number. Минимальное значение – 0, максимальное – 1.

    • "category_type": категория транспортного средства, [string]. Возможные значения: "unknown", "A", "B", "BE", "C", "CE", "D", "DE", "other".

    • "color" цвет кузова, [string]. Возможные значения: "beige", "black", "blue", "brown", "cyan", "gold", "green", "grey", "orange", "pink", "purple", "red", "silver", "violet", "white", "yellow".

    • "body": тип кузова транспортного средства, [string]. Возможные значения: "suv", "sedan", "crossover", "convertible", "coupe", "wagon", "cab" (пикап), "minibus", "minivan", "limousine". Смотрите описание фильтров для событий распознавания транспортных средств, настроенных визуально.

    • "make": марка транспортного средства, [string]. Ознакомьтесь с соответствующим фильтром событий, чтобы узнать, какие производители поддерживаются в текущей версии.

    • "model": модель транспортного средства, [string]. Ознакомьтесь с соответствующим фильтром событий, чтобы узнать, какие модели поддерживаются в текущей версии.

    • "license_plate_number": регистрационный номер транспортного средства, [string]. Подстановочные знаки (wildcards), заменяющие другие символы, не поддерживаются.

    • "license_plate_number_color": цвет номерного знака, [string]. Возможные значения: "unknown", "white", "yellow", "blue", "green", "grey".

    • "license_plate_number_color_confidence_lte": максимальная достоверность распознавания цвета номерного знака, number.

    • "license_plate_number_color_confidence_gte": минимальная достоверность распознавания цвета номерного знака, number.

    • "license_plate_number_score_lte": если значение равно 0, то регистрационный номер неизвестен, number.

    • "license_plate_number_score_gte": если значение равно 0, то регистрационный номер известен, number.

    • "license_plate_country": страна номерного знака, [string]. Ознакомьтесь с соответствующим фильтром событий, чтобы узнать, какие страны поддерживаются в текущей версии. Возможные значения: "unknown", "AM", "BR", "BY", "GE", "IN", "KG", "SA", "KZ", "RU", "UA", "AE", "UZ", "VN", "AZ", "EST", "FIN", "LT", "LV", "MD", "MX", "AR", "PK", "SRB", "TJ", "TH", "TM", "CZ", "CN", "EG", "JP", "MN", "MA", "PS", "SG", "KR", "BH", "CO", "PE", "QA", "TN", "TR", "IR", "IQ", "JO", "KW", "OM", "ZA".

    • "license_plate_region": регион номерного знака, [string]. Ознакомьтесь с соответствующим фильтром событий, чтобы узнать, какие регионы поддерживаются в текущей версии.

    • "special_vehicle_type": спецназначение транспортного средства, [string]. Возможные значения: "taxi", "route_transport", "car_sharing", "ambulance", "police", "rescue_service", "gas_service", "military", "road_service", "cash_in_transit", "other_special", "not_special".

    • "weight_type": весовая категория транспортного средства, [string]. Возможные значения: "B_light", "B_heavy", "C_light", "C_heavy", "D_light", "D_long", "other".

    • "weight_type_confidence_lte": максимальная достоверность распознавания весовой категории транспортного средства, number. Минимальное значение – 0, максимальное – 1.

    • "weight_type_confidence_gte": минимальная достоверность распознавания весовой категории транспортного средства, number. Минимальное значение – 0, максимальное – 1.

    • "orientation": ракурс транспортного средства, [string]. Возможные значения: "unknown", "front", "back", "side".

    • "orientation_confidence_lte": максимальная достоверность распознавания ракурса автомобиля, number. Минимальное значение – 0, максимальное – 1.

    • "orientation_confidence_gte": минимальная достоверность распознавания ракурса автомобиля, number. Минимальное значение – 0, максимальное – 1.

    Эпизоды с людьми:

    Секция: human_episodes.

    • "allowed_types": статус эпизода [string]. Возможные значения: открытие эпизода (episode_open), добавление нового события в эпизод (episode_event), закрытие эпизода (episode_close).

    • "matched_lists": ID списка наблюдения, [integer].

    • "cameras": ID камеры, [integer].

    • "camera_groups": ID группы камер, [integer].

    • "matched_card_in": ID совпавшей карточки, [integer].

    • "events_count_gte": минимальное количество событий в эпизоде, integer.

    • "events_count_lte": максимальное количество событий в эпизоде, integer.

    • "face_matched": статус совпадения лица в эпизоде с картотекой, boolean. Установите true, если только эпизоды с совпадениями лиц, или false, если только эпизоды без совпадений лиц должны вызывать отправку оповещения.

    • "body_matched": статус совпадения силуэта в эпизоде с картотекой, boolean. Установите true, если только эпизоды с совпадениями силуэтов, или false, если только эпизоды без совпадений силуэтов должны вызывать отправку оповещения.

    Эпизоды с транспортными средствами:

    Секция: car_episodes.

    • "allowed_types": статус эпизода [string]. Возможные значения: открытие эпизода (episode_open), добавление нового события в эпизод (episode_event), закрытие эпизода (episode_close).

    • "matched_lists": ID списка наблюдения, [integer].

    • "cameras": ID камеры, number.

    • "camera_groups": ID группы камер, [integer].

    • "matched_card_in": ID совпавшей карточки, [integer].

    • "events_count_gte": минимальное количество событий в эпизоде, integer.

    • "events_count_lte": максимальное количество событий в эпизоде, integer.

    • "car_matched": статус совпадения транспортного средства в эпизоде с картотекой, boolean. Установите true, если только эпизоды с совпадениями ТС, или false, если только эпизоды без совпадений ТС должны вызывать отправку оповещения.

    Записи счетчиков:

    Секция: counters.

    • "counter": ID счетчика, [integer].

    • "cameras": ID камеры, [integer].

    • "camera_groups": ID группы камер, [integer].

    • "faces_count_gte": минимальное количество лиц в записи счетчика, integer.

    • "faces_count_lte": максимальное количество лиц в записи счетчика, integer.

    • "silhouettes_count_gte": минимальное количество силуэтов в записи счетчика, integer.

    • "silhouettes_count_lte": максимальное количество силуэтов в записи счетчика, integer.

    • "cars_count_gte": минимальное количество транспортных средств в записи счетчика, integer.

    • "cars_count_lte": максимальное количество транспортных средств в записи счетчика, integer.

    Пример

    Примечание

    Этот пример приведен только для ознакомления, подставьте свои значения в соответствующие поля.

    {
            "face_events": {
                    "matched_lists": [
                            3,
                            2,
                            1
                    ],
                    "camera_groups": [
                            1,
                            2,
                            -1
                    ],
                    "cameras": [
                            10,
                            9,
                            2
                    ],
                    "matched_card_in": [
                            1,
                            2
                    ],
                    "matched": true,
                    "confidence_gte": 0.52,
                    "bs_type": [
                            "overall",
                            "realtime"
                    ],
                    "line": [
                            1
                    ],
                    "line_crossing_direction": [
                            "none",
                            "BA",
                            "AB"
                    ],
                    "backward_line_crossing": false,
                    "headpose_yaw_angle_gte": -90,
                    "headpose_yaw_angle_lte": 90,
                    "headpose_pitch_angle_gte": -90,
                    "headpose_pitch_angle_lte": 90,
                    "gender": [
                            "male",
                            "female"
                    ],
                    "age_lte": 53,
                    "age_gte": 26,
                    "glasses": [
                            "eye",
                            "sun",
                            "other",
                            "none"
                    ],
                    "emotions": [
                            "angry",
                            "disgust",
                            "fear",
                            "happy",
                            "sad",
                            "surprise",
                            "neutral"
                    ],
                    "beard": [
                            "none",
                            "beard"
                    ],
                    "medmask": [
                            "none",
                            "incorrect",
                            "correct"
                    ],
                    "liveness": [
                            "real",
                            "fake"
                    ],
                    "eyes_attrs": [
                            "opened",
                            "closed",
                            "occluded"
                    ],
                    "eyes_attrs_score_gte": 0.72,
                    "local": true
            },
            "body_events": {
                    "matched_lists": [
                            3,
                            2,
                            1
                    ],
                    "camera_groups": [
                            1,
                            2,
                            -1
                    ],
                    "cameras": [
                            10,
                            9,
                            2
                    ],
                    "matched_card_in": [
                            1,
                            2
                    ],
                    "matched": false,
                    "bs_type": [
                            "overall",
                            "realtime"
                    ],
                    "line": [
                            1
                    ],
                    "line_crossing_direction": [
                            "none",
                            "BA",
                            "AB"
                    ],
                    "backward_line_crossing": false,
                    "headwear": [
                            "hat",
                            "hood",
                            "none"
                    ],
                    "upper_clothes": [
                            "long_sleeves",
                            "short_sleeves",
                            "without_sleeves"
                    ],
                    "detailed_upper_clothes": [
                            "jacket",
                            "coat",
                            "sleeveless",
                            "sweatshirt",
                            "t-shirt",
                            "shirt",
                            "dress"
                    ],
                    "top_color": [
                            "white",
                            "black",
                            "grey",
                            "brown",
                            "red",
                            "orange",
                            "yellow",
                            "green",
                            "lightblue",
                            "blue",
                            "purple",
                            "pink",
                            "beige",
                            "violet"
                    ],
                    "lower_clothes": [
                            "pants",
                            "obscured",
                            "skirt",
                            "shorts"
                    ],
                    "bottom_color": [
                            "white",
                            "black",
                            "grey",
                            "brown",
                            "red",
                            "orange",
                            "yellow",
                            "green",
                            "lightblue",
                            "blue",
                            "purple",
                            "pink",
                            "beige",
                            "violet"
                    ],
                    "bag_hand_score_gte": 0.94,
                    "bag_hand": [
                            "hand",
                            "none"
                    ],
                    "bag_back_score_gte": 0.56,
                    "bag_back": [
                            "back",
                            "none"
                    ],
                    "vest_type_score_gte": 0.56,
                    "vest_type": [
                            "green/yellow",
                            "orange",
                            "not_visible",
                            "none"
                    ],
                    "helmet_type_score_gte": 0.56,
                    "helmet_type": [
                            "red/orange",
                            "white",
                            "other",
                            "not_visible",
                            "none"
                    ],
                    "age_group_score_gte": 0.28,
                    "age_group": [
                            "0-16",
                            "17-35",
                            "36-50",
                            "50+"
                    ],
                    "body_gender": [
                            "male",
                            "female"
                    ],
                    "fall": [
                            "fall",
                            "none"
                    ],
                    "fall_score_gte": 0.56,
                    "uniform": [
                            "civilian",
                            "police",
                            "military",
                            "none"
                    ],
                    "uniform_score_gte": 0.42,
                    "handface_smoking": [
                            "smoking",
                            "none"
                    ],
                    "handface_smoking_score_gte": 0.56,
                    "handface_phone_use": [
                            "phone_use",
                            "none"
                    ],
                    "handface_phone_use_score_gte": 0.56,
                    "handface_phone_call": [
                            "phone_call",
                            "none"
                    ],
                    "handface_phone_call_score_gte": 0.3,
                    "handface_taking_pictures": [
                            "photo",
                            "none"
                    ],
                    "handface_taking_pictures_score_gte": 0.42
            },
            "car_events": {
                    "matched_lists": [
                            1,
                            2,
                            3
                    ],
                    "camera_groups": [
                            -1,
                            2,
                            1
                    ],
                    "cameras": [
                            5,
                            10,
                            9
                    ],
                    "matched_card_in": [
                            1
                    ],
                    "matched": false,
                    "confidence_gte": 0.56,
                    "bs_type": [
                            "overall",
                            "realtime"
                    ],
                    "line": [
                            1
                    ],
                    "line_crossing_direction": [
                            "none",
                            "BA",
                            "AB"
                    ],
                    "backward_line_crossing": false,
                    "category_type": [
                            "unknown",
                            "A",
                            "B",
                            "BE",
                            "C",
                            "CE",
                            "D",
                            "DE",
                            "other"
                    ],
                    "color": [
                            "beige",
                            "black",
                            "blue",
                            "brown",
                            "cyan",
                            "gold",
                            "green",
                            "grey",
                            "orange",
                            "pink",
                            "purple",
                            "red",
                            "silver",
                            "violet",
                            "white",
                            "yellow"
                    ],
                    "body": [
                            "suv",
                            "sedan",
                            "crossover",
                            "convertible",
                            "coupe",
                            "wagon",
                            "cab",
                            "minibus",
                            "minivan",
                            "limousine"
                    ],
                    "make": [
                            "skoda"
                    ],
                    "model": [
                            "skoda/octavia"
                    ],
                    "license_plate_number_score_lte": 0,
                    "license_plate_country": [
                            "unknown",
                            "AM",
                            "AZ",
                            "BR",
                            "BH",
                            "BY",
                            "CN",
                            "CO",
                            "CZ",
                            "EST",
                            "EG",
                            "FIN",
                            "GE",
                            "IN",
                            "IR",
                            "IQ",
                            "JP",
                            "JO",
                            "KG",
                            "SA",
                            "KW",
                            "KZ",
                            "LT",
                            "LV",
                            "MA",
                            "MD",
                            "MX",
                            "MN",
                            "OM",
                            "PE",
                            "PK",
                            "PS",
                            "QA",
                            "AR",
                            "KR",
                            "RU",
                            "SG",
                            "SRB",
                            "TH",
                            "TJ",
                            "TM",
                            "TN",
                            "TR",
                            "UA",
                            "AE",
                            "UZ",
                            "VN",
                            "ZA"
                    ],
                    "special_vehicle_type": [
                            "taxi",
                            "route_transport",
                            "car_sharing",
                            "ambulance",
                            "police",
                            "rescue_service",
                            "gas_service",
                            "military",
                            "road_service",
                            "cash_in_transit",
                            "other_special",
                            "not_special"
                    ],
                    "weight_type": [
                            "B_light",
                            "B_heavy",
                            "C_light",
                            "C_heavy",
                            "D_light",
                            "D_long",
                            "other"
                    ],
                    "orientation": [
                            "unknown",
                            "front",
                            "back",
                            "side"
                    ]
            },
            "human_episodes": {
                    "allowed_types": [
                            "episode_open",
                            "episode_event",
                            "episode_close"
                    ],
                    "matched_lists": [
                            3,
                            2,
                            1
                    ],
                    "cameras": [
                            10,
                            9,
                            6,
                            3
                    ],
                    "camera_groups": [
                            1,
                            2,
                            -1
                    ],
                    "matched_card_in": [
                            1,
                            2
                    ],
                    "events_count_gte": 10,
                    "face_matched": false,
                    "body_matched": false
            },
            "car_episodes": {
                    "allowed_types": [
                            "episode_open",
                            "episode_event",
                            "episode_close"
                    ],
                    "matched_lists": [
                            2,
                            3,
                            1
                    ],
                    "cameras": [
                            10,
                            9,
                            7,
                            6
                    ],
                    "camera_groups": [
                            -1,
                            2,
                            1
                    ],
                    "matched_card_in": [
                            1
                    ],
                    "events_count_gte": 1,
                    "car_matched": true
            },
            "counters": {
                    "counter": [
                            1
                    ],
                    "cameras": [
                            7
                    ],
                    "camera_groups": [
                            1
                    ],
                    "faces_count_gte": 2,
                    "faces_count_lte": 5,
                    "silhouettes_count_gte": 2,
                    "silhouettes_count_lte": 5,
                    "cars_count_gte": 2,
                    "cars_count_lte": 5
            }
    }
    

    Важно

    Используйте только фильтры, соответствующие цели поиска. Для выключения фильтра удалите его из вебхука. Не оставляйте фильтр пустым ([]), поскольку это может повлиять на работу других фильтров, и фильтрация окажется нерезультативной.

    Примечание

    Для получения всех оповещений передайте скобки без вложенных фильтров:

    {}
    

    Совет

    Пример №1. Получение оповещений обо всех событиях с транспортными средствами:

    {
            "car_events": {}
    }
    

    Пример №2. Получение оповещений об открытии эпизодов с людьми с совпадениями в картотеке по лицам:

    {
            "human_episodes": {
                    "allowed_types": [
                            "episode_open"
                    ],
                    "face_matched": true
            }
    }
    

    Примечание

    Вы можете задать несколько значений в фильтрах с квадратными скобками. В этом случае вебхук будет активироваться при совпадении одного из значений фильтра. В примере ниже вы будете оповещены о событии с силуэтом с группы камер 1 или 3, если совпала карточка с id 12 или 25.

    {
            "body_events": {
                    "camera_groups": [1, 3],
                    "matched_card_in": [12, 25]
            }
    }
    
  8. Поставьте флажок Активный.

  9. Нажмите Сохранить.

  10. При нажатии на кнопку ellipsis_button для созданного вебхука доступны следующие действия:

    • Удалить

    • Дублировать

Как работает вебхук

Для тестирования работы вебхука можно использовать следующий простой веб-сервер на Python, обеспечивающий захват отправленных вебхуком оповещений о событиях:

from pprint import pprint
from aiohttp import web


async def handle(request):
    pprint(await request.json())
    return web.Response(status=200)


app = web.Application()
# for aiohttp v 3.x
# app.add_routes([web.post('/', handle)])

# for aiohttp v 2.x
app.router.add_post('/', handle)

web.run_app(app, port=8888)

Важно

Используемый вами сервер-ловушка оповещений по вебхуку должен возвращать ответ HTTP 200 после получения вебхука от FindFace Multi, по аналогии с примером выше.

Если для вебхука не задано ни одного фильтра, данный веб-сервер будет получать оповещения обо всех произошедших в системе событиях, эпизодах, записях счетчиков.

Для просмотра статуса отправки вебхука в FindFace Multi выполните следующую команду:

sudo journalctl CONTAINER_NAME=findface-multi-findface-multi-legacy-1 -f | grep 'Webhook'

Подробные данные в вебхуках (Verbose)

По умолчанию в вебхуках включен подробный режим оповещений (режим verbose), что означает, что уведомления по вебхукам содержат подробную информацию по таким сущностям как карточки, списки наблюдения, камеры и группы камер. Если по каким-то причинам вы хотите отключить подробный режим оповещений, сделайте следующее:

Откройте файл конфигурации /opt/findface-multi/configs/findface-multi-legacy/findface-multi-legacy.py и установите 'VERBOSE_WEBHOOKS': False:

sudo vi /opt/findface-multi/configs/findface-multi-legacy/findface-multi-legacy.py

...
FFSECURITY = {
    ...
    # send serialized cards, card-lists, camera and camera groups in webhooks
    'VERBOSE_WEBHOOKS': False,
    ...
}
...

После внесения изменений обязательно перезапустите контейнеры FindFace Multi.

cd /opt/findface-multi/

sudo docker-compose restart

В результате оповещения по вебхуку будут содержать только идентификаторы таких сущностей, как карточки, списки наблюдения, камеры и группы камер.