Вебхуки¶
Вы можете настроить FindFace Security для автоматической отправки уведомлений об определенных событиях на заданный URL-адрес. Для этого создайте и настройте вебхук. При наступлении нужного события FindFace Security отправит HTTP-запрос на URL-адрес, указанный в настройках вебхука.
Вебхуки можно использовать для решения разнообразных задач, например, для уведомления пользователя об определенном событии, вызова определенных действий на целевом веб-сайте, при решении задач безопасности, таких как удаленное автоматическое управление доступом и др.
В этом разделе:
Настройка вебхука¶
Важно
Для создания вебхука необходимы права администратора.
Примечание
Для того чтобы использовать вебхуки, обязательно укажите по крайней мере один из параметров SERVICE_EXTERNAL_ADDRESS
/EXTERNAL_ADDRESS
в файле /etc/ffsecurity/config.py
.
Для создания вебхука выполните следующие действия:
Перейдите на вкладку Настройки. Выберите Вебхуки.
Нажмите +.
Введите имя вебхука.
Укажите адрес, на который будут отправляться оповещения.
FindFace Security будет автоматически отправлять оповещения о событиях, удовлетворяющих заданным фильтрам. Фильтровать события можно по следующим параметрам:
camera_group_in
: id группы камер, число.matched_dossier_in
: id совпавшего досье, число.matched
: статус событиясовпадение
(true
илиfalse
), логический.camera_in
: id камеры, число.
Важно
Используйте только фильтры, соответствующие цели поиска. Для выключения фильтра удалите его из вебхука. Не оставляйте фильтр пустым (
[]
), поскольку в этом случае фильтр вернет пустой результат.Примечание
Для получения оповещений обо всех совпадениях с досье передайте скобки без вложенных фильтров:
{}
Примечание
За исключением
matched
, для каждого фильтра можно задать несколько значений. В этом случае вебхук будет активироваться при совпадении одного из значений фильтра. В примере ниже вы будете оповещены о событии с группы камер1
или3
, если совпало досье с id12
или25
.{ "camera_group_in": [1, 3], "matched_dossier_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)
Если для вебхука не задано ни одного фильтра, данный веб-сервер будет получать оповещения о каждом произошедшем в системе событии. Оповещения отправляются в следующем формате:
======== Running on http://0.0.0.0:8888 ========
(Press CTRL+C to quit)
[{'acknowledged': True,
'acknowledged_by': None,
'acknowledged_date': '2019-04-09T12:29:23Z',
'acknowledged_reaction': None,
'camera': 2,
'confidence': 0.9098,
'created_date': '2019-04-09T12:29:23Z',
'face': 'http://172.20.77.17/uploads/2019/04/09/event/122955_face_aT3ZZh.jpg',
'features': {'age': None,
'beard': None,
'emotions': None,
'gender': None,
'glasses': None,
'liveness': None},
'frame': 'http://172.20.77.17/uploads/2019/04/09/event/122955_image_3msdHH.jpg',
'frame_coords_bottom': 981,
'frame_coords_left': 1630,
'frame_coords_right': 1911,
'frame_coords_top': 701,
'id': '4173669353687265180',
'looks_like_confidence': None,
'matched': True,
'matched_dossier': 1,
'matched_face': '4173665826982243136',
'matched_lists': [1],
'normalized_photo': 'http://172.20.77.17/uploads/2019/04/09/event/122955_face0_E638aW.png',
'quality': -0.000158,
'scores': {'direction_score': -2.62964,
'frame_no': 800,
'score': -0.000158435,
'tracking_duration': 34000}}]
Для просмотра статуса отправки вебхука в FindFace Security, выполните следующую команду:
sudo journalctl -u findface-security.service | grep 'WebhookUpdaterService'
Ответ в случае успеха:
Jan 24 14:08:49 ffsec4 ffsecurity[25316]: INFO [WebhookUpdaterService] [SC:PcQr6bjA-VW:bea6c7b5] Webhook updater got event 4240944471810639375
Jan 24 14:08:49 ffsec4 ffsecurity[25316]: INFO [WebhookUpdaterService] [SC:PcQr6bjA-VW:bea6c7b5] Event 4240944471810639375 enqueued for webhook 1 (1 items in queue)
Jan 24 14:08:49 ffsec4 ffsecurity[25316]: INFO [WebhookUpdaterService:1] <queue: 0> Received 1 events from queue: ['4240944471810639375']
Jan 24 14:08:50 ffsec4 ffsecurity[25316]: INFO [WebhookUpdaterService:1] <queue: 0> Attempting to send 1 events
Jan 24 14:08:50 ffsec4 ffsecurity[25316]: INFO [WebhookUpdaterService:1] <queue: 0> Sent 1 events: ['4240944471810639375']
Ответ, если попытка была неудачной:
Jan 24 14:09:02 ffsec4 ffsecurity[25316]: INFO [WebhookUpdaterService] [SC:TSlJfHlU-VW:107b37da] Webhook updater got event 4240944506705010458
Jan 24 14:09:02 ffsec4 ffsecurity[25316]: INFO [WebhookUpdaterService] [SC:TSlJfHlU-VW:107b37da] Event 4240944506705010458 enqueued for webhook 1 (1 items in queue)
Jan 24 14:09:02 ffsec4 ffsecurity[25316]: INFO [WebhookUpdaterService:1] <queue: 0> Received 1 events from queue: ['4240944506705010458']
Jan 24 14:09:02 ffsec4 ffsecurity[25316]: WARNING [WebhookUpdaterService:1] <queue: 0> Backing off for 0.270 seconds after failure: ClientConnectorError(111, 'Connection refused')
Jan 24 14:09:03 ffsec4 ffsecurity[25316]: WARNING [WebhookUpdaterService:1] <queue: 0> Backing off for 0.729 seconds after failure: ClientConnectorError(111, 'Connection refused')
Jan 24 14:09:03 ffsec4 ffsecurity[25316]: WARNING [WebhookUpdaterService:1] <queue: 0> Backing off for 1.968 seconds after failure: ClientConnectorError(111, 'Connection refused')