Вебхуки
Вы можете настроить FindFace Multi для автоматической отправки уведомлений об определенных событиях, эпизодах, записях счетчиков на заданный URL-адрес. Для этого создайте и настройте вебхук. При возникновении нужного события/эпизода/записи счетчика FindFace Multi отправит HTTP-запрос на URL-адрес, указанный в настройках вебхука.
Вебхуки можно использовать для решения разнообразных задач, например, для уведомления пользователя об определенном событии, вызова определенных действий на целевом веб-сайте, при решении задач безопасности, таких как удаленное автоматическое управление доступом и др.
В этом разделе:
Настройка вебхука
Важно
Пользователь должен иметь соответствующие права доступа для создания, просмотра, изменения или удаления вебхука. Чтобы настроить права доступа, перейдите в Настройки → Роли.
Примечание
Перед использованием вебхуков убедитесь, что хотя бы один из следующих параметров задан в файле /opt/findface-multi/configs/findface-multi-legacy/findface-multi-legacy.py: SERVICE_EXTERNAL_ADDRESS или EXTERNAL_ADDRESS.
Для создания вебхука выполните следующие действия:
Перейдите на вкладку Настройки. Выберите Вебхуки.
Нажмите + Новый вебхук.
Введите заголовок вебхука.
Укажите адрес, на который будут отправляться оповещения.
Примечание
Если вы настраиваете вебхук для отправки событий в Тревожный монитор, укажите URL адрес, на который будут отправляться оповещения
http://ip_address:port/ff_multi/alarmer/. Подставьте вместоip_address:portIP адрес и порт для сервисаbackend_provider–127.0.0.1:1111. Таким образом URL будетhttp://127.0.0.1:1111/ff_multi/alarmer/.Однако мы рекомендуем использовать новую функцию Менеджер тревог, с помощью которой вы можете гибко задать необходимые правила для тревог и установить каналы доставки оповещения в зависимости от решаемых задач.
Вы можете отправлять уведомления в пакетном режиме. Укажите максимальное количество уведомлений в пакете. Фактическое количество может быть меньшим.
Укажите максимальное количество попыток отправить уведомление. Интервал между попытками увеличивается экспоненциально с максимумом 100 секунд.
Важно
Для того чтобы получить все сообщения с момента потери соединения, если оно имеет место, установите значение
0. Установите1, чтобы пропустить старые сообщения.FindFace Multi будет автоматически отправлять оповещения о событиях, эпизодах, записях счетчика, удовлетворяющих заданным фильтрам. Фильтровать события можно по следующим параметрам.
Существует два способа настройки фильтров:
визуально
с помощью кода
Чтобы настроить фильтры визуально, нажмите Настроить.
Универсальные фильтры для событий распознавания (лицо, силуэт, транспортное средство):
Совпадения: фильтровать только события с совпадением объектов/без совпадения объектов или все события.
Списки наблюдения: фильтровать только события по определенному списку наблюдения или все события.
Группы камер: фильтровать только события по определенной группе камер.
Камеры: фильтровать события по определенной камере.
Название карточки: фильтровать события с заданным названием карточки.
Лучший кадр события: фильтровать все события трека, только события с кадрами в реальном времени, только одно событие с лучшим кадром по окончанию трека.
Линия: фильтровать события с пересечением определенной линии.
Направление пересечения линии: фильтровать события с пересечением линий в заданном направлении или все события.
Есть обратное пересечение: фильтровать события с обратным пересечением/без обратного пересечения или все события.
Фильтры для событий распознавания лиц:
Возраст: фильтровать события с людьми определенного возраста.
Борода: фильтровать события по наличию у человека бороды.
Эмоции: фильтровать события по выражению эмоций на лице человека.
Пол: отобразить события с людьми заданного пола.
Состояние глаз: отобразить события с людьми, у которых глаза открыты/закрыты или не видны.
Очки: фильтровать события по наличию очков на лице.
Витальность: фильтровать события по витальности (liveness) лица.
Медицинская маска: фильтровать события по наличию медицинской маски на лице.
Поворот: фильтровать события по углу поворота головы.
Наклон: фильтровать события по углу наклона головы.
Фильтры для событий распознавания силуэтов:
Пол по силуэту: отобразить события с людьми заданного пола.
Возраст по силуэту: отобразить события с людьми определенного возраста.
Головной убор: отображать только события с людьми в головном уборе заданного типа: шапка/шляпа/кепка, капюшон/платок, без головного убора.
Жилет: отображать только события с людьми, одетыми в жилет заданного цвета.
Каска: отображать только события с людьми, одетыми в каску заданного цвета.
Цвет верха одежды: отображать только события с людьми, одетыми в одежду заданного цвета (верх).
Цвет низа одежды: отображать только события с людьми, одетыми в одежду заданного цвета (низ).
Тип верха одежды: отображать только те события, в которых человек носит одежду верха заданного типа: куртка, пальто, жилет, толстовка, футболка, рубашка, платье.
Низ одежды: отображать только те события, в которых человек носит одежду низа заданного типа: брюки, юбка, шорты, неопределенный.
Верх одежды: отображать только те события, в которых человек носит одежду верха заданной обобщенной категории: с длинными рукавами, с короткими рукавами, без рукавов.
Сумка на спине: отображать только события с людьми с сумкой на спине/без сумки на спине.
Сумка в руке: отображать только события с людьми с сумкой в руке/без сумки в руке.
Падение: отображать только те события, в которых человек падает (или упал) / падение отсутствует.
Курение: отображать только те события, в которых человек курит или курение отсутствует.
Использование телефона: отображать только те события, в которых человек использует/не использует телефон.
Разговор по телефону: отображать только те события, в которых человек звонит/разговаривает по телефону или нет.
Фильтры для событий распознавания транспортных средств:
Марка: фильтровать события по марке транспортного средства.
Модель: фильтровать события по модели транспортного средства.
Тип кузова: отобразить события с транспортными средствами заданного типа кузова: внедорожник, седан, кроссовер, кабриолет, купе, универсал, пикап, микроавтобус, минивэн, лимузин.
Цвет кузова: отобразить события с транспортными средствами заданного цвета кузова.
Страна: отобразить события с транспортными средствами, зарегистрированными в заданной стране.
Регистрационный номер: найти транспортное средство с заданным номером.
Спецтранспорт: отобразить только события с транспортными средствами, принадлежащими заданному типу: такси (включая грузотакси), маршрутный транспорт, каршеринг, скорая помощь (включая реанимобиль), полиция (включая ДПС), автомобили МЧС и пожарные машины, газоспасательные и аварийно-спасательные службы, военная техника (включая Росгвардию), коммунальная, строительная техника (включая ЦОДД), инкассация, остальной спецтранспорт, не спецтранспорт.
Категория ТС: отобразить только события с транспортными средствами, принадлежащими заданной категории: категория ТС не распознана, мотоцикл, скутер, квадроцикл, легковой автомобиль, легковой автомобиль с прицепом, грузовик, грузовик с прицепом, автобус, сочленённый автобус, ТС других категорий.
Вес и размер ТС: отобразить события с транспортными средствами заданного веса и размера кузова.
Ракурс ТС: отобразить события с транспортными средствами заданного ракурса (спереди, сзади, сбоку).
Примечание
Цвет номера, Регион отключены по умолчанию. Чтобы включить эти параметры раскомментируйте
"license_plate_number_color","license_plate_region"в разделеFFSECURITY_UI_CONFIGв конфигурационном файле/opt/findface-multi/configs/findface-multi-legacy/findface-multi-legacy.py.sudo vi /opt/findface-multi/configs/findface-multi-legacy/findface-multi-legacy.py FFSECURITY_UI_CONFIG = { ... "cars": { "features": { ... "license_plate_number_color": [ "unknown", "white", "yellow", "blue", "green", "grey", ], ... "license_plate_region": ["unknown", "DXB", "SHJ", "ADH", "AJM", "UAK", "RAK", "FUJ", "TH-10", "TH-11", "TH-12", "TH-13", "TH-14", "TH-15", "TH-16", "TH-17", "TH-18", "TH-19", "TH-20", "TH-21", "TH-22", "TH-23", "TH-24", "TH-25", "TH-26", "TH-27", "TH-30", "TH-31", "TH-32", "TH-33", "TH-34", "TH-35", "TH-36", "TH-37", "TH-38", "TH-39", "TH-40", "TH-41", "TH-42", "TH-43", "TH-44", "TH-45", "TH-46", "TH-47", "TH-48", "TH-49", "TH-50", "TH-51", "TH-52", "TH-53", "TH-54", "TH-55", "TH-56", "TH-57", "TH-58", "TH-60", "TH-61", "TH-62", "TH-63", "TH-64", "TH-65", "TH-66", "TH-67", "TH-70", "TH-71", "TH-72", "TH-73", "TH-74", "TH-75", "TH-76", "TH-77", "TH-80", "TH-81", "TH-82", "TH-83", "TH-84", "TH-85", "TH-86", "TH-90", "TH-91", "TH-92", "TH-93", "TH-94", "TH-95", "TH-96"], ... }, .... }, }
После внесения изменений перезапустите контейнеры FindFace Multi.
cd /opt/findface-multi/ sudo docker-compose restart
Эпизоды с людьми:
Тип эпизода: фильтровать эпизоды по статусу (открыт/с событиями/закрыт).
Совпадения: лица: отобразить только эпизоды с совпадением лиц/без совпадения лиц/все эпизоды.
Совпадения: силуэты: отобразить только эпизоды с совпадением силуэтов/без совпадения силуэтов/все эпизоды.
Списки наблюдения: отобразить только эпизоды по определенному списку наблюдения.
Группы камер: отобразить только эпизоды по определенной группе камер.
Камеры: отобразить только эпизоды по определенной камере.
Название карточки: отобразить эпизоды с заданным названием карточки.
Количество событий: отобразить эпизоды с заданным количеством событий.
Эпизоды с транспортными средствами:
Тип эпизода: фильтровать эпизоды по статусу (открыт/с событиями/закрыт).
Совпадения: отобразить только эпизоды с совпадением транспортных средств/без совпадения транспортных средств/все эпизоды.
Списки наблюдения: отобразить только эпизоды по определенному списку наблюдения.
Группы камер: отобразить только эпизоды по определенной группе камер.
Камеры: отобразить только эпизоды по определенной камере.
Название карточки: отобразить эпизоды с заданным названием карточки.
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": результат сопоставления с картотекой, логическое значение. Установитеtrueилиfalse, если отправку оповещения должны вызывать только события с совпадениями или только события без совпадений."confidence_gte": минимальное значение уверенности алгоритма, number. Минимальное значение –0, максимальное –1."bs_type": режим отслеживания объектов на видео, возможные значения:overall,realtime."line": ID пересечения линии, [integer]."line_crossing_direction": направление пересечения линии, [enum]. Возможные значения: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","fear","sad","neutral","disgust","happy","surprise"."beard": борода, [string]. Возможные значения:"none","beard"."medmask": медицинская маска, [string]. Возможные значения:"correct","incorrect","none"."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": наличие сумки в руках, [string]. Возможные значения:"none","hand"."bag_ground": наличие сумки на полу, [string]. Возможные значения:"ground","none"."bag_back": наличие сумки на спине, [string]. Возможные значения:"none","back"."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."gender_score_gte": минимальная достоверность распознавания пола, number."body_gender": пол, [string]. Возможные значения:"male","female"."fall": падение человека (падает (или упал) / падение отсутствует), [string]. Возможные значения:"fall","none"."fall_score_lte": максимальное значение уверенности алгоритма в том, что человек падает (или упал), либо падение отсутствует, number."fall_score_gte": минимальное значение уверенности алгоритма в том, что человек падает (или упал), либо падение отсутствует, number."handface_smoking": курение, [string]. Возможные значения:"smoking","none"."handface_phone_use": использование телефона, [string]. Возможные значения:"phone_use","none"."handface_phone_call": звонок/разговор по телефону, [string]. Возможные значения:"phone_call","none".
Фильтры для событий распознавания транспортных средств:
Секция:
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": минимальная достоверность распознавания цвета номерного знака, число."license_plate_country": страна номерного знака, [string]. Ознакомьтесь с соответствующим фильтром событий, чтобы узнать, какие страны поддерживаются в текущей версии."license_plate_region": регион номерного знака, словарь строк. Ознакомьтесь с соответствующим фильтром событий, чтобы узнать, какие регионы поддерживаются в текущей версии."special_vehicle_type": спецназначение транспортного средства, [string]. Возможные значения:"taxi","route_transport","car_sharing","ambulance","police","rescue_service","gas_service","military","road_service","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]. Возможные значения:"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": статус совпадения лица в эпизоде с картотекой, логическое значение. Установитеtrue, если только эпизоды с совпадениями лиц, илиfalse, если только эпизоды без совпадений лиц должны вызывать отправку оповещения."body_matched": статус совпадения силуэта в эпизоде с картотекой, логическое значение. Установите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": статус совпадения транспортного средства в эпизоде с картотекой, логическое значение. Установите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": [ -1 ], "camera_groups": [ -1 ], "cameras": [ 1 ], "matched_card_in": [ 1 ], "matched": false, "confidence_gte": 0, "bs_type": [ "overall" ], "line": [ 1 ], "line_crossing_direction": [ "AB" ], "backward_line_crossing": false, "headpose_yaw_angle_gte": -180, "headpose_yaw_angle_lte": -180, "headpose_pitch_angle_gte": -180, "headpose_pitch_angle_lte": -180, "gender": [ "A" ], "age_lte": 0, "age_gte": 0, "glasses": [ "A" ], "emotions": [ "A" ], "beard": [ "A" ], "medmask": [ "A" ], "liveness": [ "A" ], "temperature_gte": 0, "liveness_gte": 0, "eyes_attrs": [ "A" ], "eyes_attrs_score_gte": 0, "eyes_attrs_score_lte": 0 }, "body_events": { "matched_lists": [ -1 ], "camera_groups": [ -1 ], "cameras": [ 1 ], "matched_card_in": [ 1 ], "matched": false, "confidence_gte": 0, "bs_type": [ "overall" ], "line": [ 1 ], "line_crossing_direction": [ "AB" ], "backward_line_crossing": false, "headwear": [ "A" ], "upper_clothes": [ "A" ], "detailed_upper_clothes": [ "A" ], "top_color": [ "A" ], "lower_clothes": [ "A" ], "bottom_color": [ "A" ], "bag_hand": [ "A" ], "bag_ground": [ "A" ], "bag_back": [ "A" ], "vest_type_score_gte": 0, "vest_type_score_lte": 0, "vest_type": [ "A" ], "helmet_type_score_lte": 0, "helmet_type_score_gte": 0, "helmet_type": [ "A" ], "age_group_score_lte": 0, "age_group_score_gte": 0, "age_group": [ "A" ], "gender_score_lte": 0, "gender_score_gte": 0, "body_gender": [ "A" ], "fall": [ "A" ], "fall_score_lte": 0, "fall_score_gte": 0, "handface_smoking": [ "A" ], "handface_phone_use": [ "A" ], "handface_phone_call": [ "A" ] }, "car_events": { "matched_lists": [ -1 ], "camera_groups": [ -1 ], "cameras": [ 1 ], "matched_card_in": [ 1 ], "matched": false, "confidence_gte": 0, "bs_type": [ "overall" ], "line": [ 1 ], "line_crossing_direction": [ "AB" ], "backward_line_crossing": false, "category_confidence_gte": 0, "category_confidence_lte": 0, "category_type": [ "A" ], "color": [ "A" ], "body": [ "A" ], "make": [ "A" ], "model": [ "A" ], "license_plate_number": [ "A" ], "license_plate_number_color": [ "A" ], "license_plate_number_color_confidence_lte": 0, "license_plate_number_color_confidence_gte": 0, "license_plate_country": [ "A" ], "license_plate_region": [ "A" ], "special_vehicle_type": [ "A" ], "weight_type": [ "A" ], "weight_type_confidence_lte": 0, "weight_type_confidence_gte": 0, "orientation": [ "A" ], "orientation_confidence_lte": 0, "orientation_confidence_gte": 0 }, "human_episodes": { "allowed_types": [ "episode_event" ], "matched_lists": [ -1 ], "cameras": [ 1 ], "camera_groups": [ -1 ], "matched_card_in": [ 1 ], "events_count_gte": 0, "events_count_lte": 1, "face_matched": false, "body_matched": false }, "car_episodes": { "allowed_types": [ "episode_event" ], "matched_lists": [ -1 ], "cameras": [ 1 ], "camera_groups": [ -1 ], "matched_card_in": [ 1 ], "events_count_gte": 0, "events_count_lte": 1, "car_matched": false }, "counters": { "counter": [ 0 ], "cameras": [ 0 ], "camera_groups": [ -1 ], "faces_count_gte": 1, "faces_count_lte": 0, "silhouettes_count_gte": 1, "silhouettes_count_lte": 0, "cars_count_gte": 1, "cars_count_lte": 0 } }
Важно
Используйте только фильтры, соответствующие цели поиска. Для выключения фильтра удалите его из вебхука. Не оставляйте фильтр пустым ([]), поскольку это может повлиять на работу других фильтров, и фильтрация окажется нерезультативной.
Примечание
Для получения всех оповещений передайте скобки без вложенных фильтров:
{}Совет
Пример №1. Получение оповещений обо всех событиях с транспортными средствами:
{ "car_events": {} }
Пример №2. Получение оповещений об открытии эпизодов с людьми с совпадениями в картотеке по лицам:
{ "human_episodes": { "allowed_types": [ "episode_open" ], "face_matched": true } }
Примечание
Вы можете задать несколько значений в фильтрах с квадратными скобками. В этом случае вебхук будет активироваться при совпадении одного из значений фильтра. В примере ниже вы будете оповещены о событии с силуэтом с группы камер
1или3, если совпала карточка с id12или25.{ "body_events": { "camera_groups": [1, 3], "matched_card_in": [12, 25] } }
Поставьте флажок Активный.
Нажмите Сохранить.
Как работает вебхук
Для тестирования работы вебхука можно использовать следующий простой веб-сервер на 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
В результате оповещения по вебхуку будут содержать только идентификаторы таких сущностей, как карточки, списки наблюдения, камеры и группы камер.

