Вебхуки

Вы можете настроить 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.

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

    Секция: 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.

    • "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_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": {
               "eyes_attrs_score_gte": 0.46,
               "headpose_yaw_angle_gte": -90,
               "headpose_yaw_angle_lte": 90,
               "headpose_pitch_angle_gte": -90,
               "headpose_pitch_angle_lte": 90,
               "liveness_score_gte": 0.92,
               "matched": true,
               "matched_lists": [
                       1,
                       2
               ],
               "camera_groups": [
                       1,
                       2,
                       -1
               ],
               "cameras": [
                       2,
                       8,
                       9
               ],
               "matched_card_in": [
                       2,
                       1
               ],
               "bs_type": [
                       "overall",
                       "realtime"
               ],
               "line": [
                       1
               ],
               "line_crossing_direction": [
                       "none",
                       "BA",
                       "AB"
               ],
               "backward_line_crossing": true,
               "age_gte": 30,
               "age_lte": 43,
               "gender": [
                       "male",
                       "female"
               ],
               "emotions": [
                       "angry",
                       "disgust",
                       "fear",
                       "happy",
                       "sad",
                       "surprise",
                       "neutral"
               ],
               "beard": [
                       "none",
                       "beard"
               ],
               "eyes_attrs": [
                       "opened",
                       "closed",
                       "occluded"
               ],
               "glasses": [
                       "eye",
                       "sun",
                       "other",
                       "none"
               ],
               "medmask": [
                       "none",
                       "incorrect",
                       "correct"
               ],
               "liveness": [
                       "real"
               ]
       },
       "body_events": {
               "age_group_score_gte": 0.94,
               "body_gender_score_gte": 0.9,
               "bag_hand_score_gte": 0.92,
               "bag_back_score_gte": 0.92,
               "vest_type_score_gte": 0.92,
               "helmet_type_score_gte": 0.92,
               "fall_score_gte": 0.92,
               "handface_smoking_score_gte": 0.92,
               "handface_phone_use_score_gte": 0.9,
               "handface_phone_call_score_gte": 0.94,
               "handface_taking_pictures_score_gte": 0.92,
               "matched": true,
               "matched_lists": [
                       1,
                       2,
                       3
               ],
               "camera_groups": [
                       -1,
                       2,
                       1
               ],
               "cameras": [
                       8,
                       9,
                       2
               ],
               "matched_card_in": [
                       1,
                       2
               ],
               "bs_type": [
                       "overall",
                       "realtime"
               ],
               "line": [
                       1
               ],
               "line_crossing_direction": [
                       "none",
                       "BA",
                       "AB"
               ],
               "backward_line_crossing": true,
               "age_group": [
                       "0-16",
                       "17-35",
                       "36-50",
                       "50+"
               ],
               "body_gender": [
                       "male",
                       "female"
               ],
               "detailed_upper_clothes": [
                       "jacket",
                       "coat",
                       "sleeveless",
                       "sweatshirt",
                       "t-shirt",
                       "shirt",
                       "dress"
               ],
               "upper_clothes": [
                       "long_sleeves",
                       "short_sleeves",
                       "without_sleeves"
               ],
               "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",
                       "beige",
                       "pink",
                       "violet"
               ],
               "headwear": [
                       "hat",
                       "hood",
                       "none"
               ],
               "bag_hand": [
                       "hand"
               ],
               "bag_back": [
                       "back"
               ],
               "vest_type": [
                       "green/yellow",
                       "orange",
                       "not_visible",
                       "none"
               ],
               "helmet_type": [
                       "red/orange",
                       "white",
                       "other",
                       "not_visible",
                       "none"
               ],
               "fall": [
                       "fall"
               ],
               "handface_smoking": [
                       "smoking"
               ],
               "handface_phone_use": [
                       "phone_use"
               ],
               "handface_phone_call": [
                       "phone_call"
               ],
               "handface_taking_pictures": [
                       "photo"
               ]
       },
       "car_events": {
               "confidence_gte": 0.94,
               "category_type_score_gte": 0.32,
               "weight_type_score_gte": 0.12,
               "matched": true,
               "matched_lists": [
                       3,
                       2,
                       -1,
                       1
               ],
               "camera_groups": [
                       -1,
                       2,
                       1
               ],
               "cameras": [
                       2,
                       8,
                       9
               ],
               "bs_type": [
                       "overall",
                       "realtime"
               ],
               "line": [
                       1
               ],
               "line_crossing_direction": [
                       "none",
                       "AB",
                       "BA"
               ],
               "backward_line_crossing": true,
               "license_plate_country": [
                       "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"
               ],
               "make": [
                       "ford"
               ],
               "model": [
                       "ford/edge"
               ],
               "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"
               ],
               "category_type": [
                       "unknown",
                       "A",
                       "B",
                       "BE",
                       "C",
                       "CE",
                       "D",
                       "DE",
                       "other"
               ],
               "weight_type": [
                       "B_light",
                       "B_heavy",
                       "C_light",
                       "C_heavy",
                       "D_long",
                       "D_light",
                       "other"
               ],
               "special_vehicle_type": [
                       "taxi",
                       "route_transport",
                       "car_sharing",
                       "ambulance",
                       "police",
                       "rescue_service",
                       "gas_service",
                       "military",
                       "road_service",
                       "cash_in_transit",
                       "other_special",
                       "not_special"
               ],
               "orientation": [
                       "front",
                       "back",
                       "side"
               ]
       },
       "human_episodes": {
               "allowed_types": [
                       "episode_open",
                       "episode_event",
                       "episode_close"
               ],
               "face_matched": true,
               "body_matched": true,
               "matched_lists": [
                       3,
                       2,
                       -1,
                       1
               ],
               "camera_groups": [
                       1,
                       2,
                       -1
               ],
               "cameras": [
                       4,
                       5,
                       6,
                       7
               ],
               "matched_card_in": [
                       1,
                       2
               ]
       },
       "car_episodes": {
               "allowed_types": [
                       "episode_open",
                       "episode_event",
                       "episode_close"
               ],
               "car_matched": false,
               "matched_lists": [
                       3,
                       2,
                       -1,
                       1
               ],
               "camera_groups": [
                       -1,
                       2,
                       1
               ],
               "cameras": [
                       13,
                       12,
                       11,
                       10
               ],
               "events_count_gte": "2"
       },
       "counters": {
               "faces_count_gte": 2,
               "faces_count_lte": 3,
               "silhouettes_count_gte": 3,
               "silhouettes_count_lte": 4,
               "cars_count_gte": 5,
               "cars_count_lte": 6,
               "camera_groups": [
                       2,
                       1,
                       -1
               ],
               "cameras": [
                       8,
                       9,
                       12,
                       13
               ],
               "counter": [
                       "1"
               ]
       }
    }
    

    Важно

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

    Примечание

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

    {}
    

    Совет

    Пример №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. Нажмите Сохранить.

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

Для тестирования работы вебхука можно использовать следующий простой веб-сервер на 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

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