- Модуль: faceid
- Путь к файлу: ~/bitrix/modules/faceid/lib/api/face.php
- Класс: BitrixFaceIdApiFace
- Вызов: Face::identify
static function identify($parameters, $n, CRestServer $server)
{
// permissions
static::checkPermission($server);
// parameters
$parameters = array_change_key_case($parameters, CASE_LOWER);
static::checkIssetParameters(['photo'], $parameters);
$photo = $parameters['photo'];
static::validatePhoto($photo);
if (isset($parameters['force_add']))
{
$forceAdd = mb_strtolower($parameters['force_add']);
static::validateForceAdd($forceAdd);
}
else
{
$forceAdd = 'n';
}
// identify photo
$forceAdded = false;
$response = BitrixFaceIdFaceId::identify($photo, static::FACEID_DEFAULT_CLIENT_SERVICE);
$responseResult = $response['result'];
if (!empty($response['success']) && !empty($responseResult['found']))
{
$item = $responseResult['items'][0];
$faceId = $item['face_id'];
$result = [
'ID' => $faceId,
'FACE_X' => $item['x'],
'FACE_Y' => $item['y'],
'FACE_WIDTH' => $item['width'],
'FACE_HEIGHT' => $item['height'],
'CONFIDENCE' => $item['confidence']
];
}
elseif ($forceAdd == 'y' && !$responseResult['found'] && $responseResult['code'] == BitrixFaceIdFaceId::CODE_OK_UNKNOWN_PERSON)
{
$response = BitrixFaceIdFaceId::add($photo, static::FACEID_DEFAULT_CLIENT_SERVICE);
if (!empty($response['success']) && !empty($response['result']['added']))
{
$item = $response['result']['item'];
$faceId = $item['face_id'];
$result = [
'ID' => $faceId,
'FACE_X' => $item['x'],
'FACE_Y' => $item['y'],
'FACE_WIDTH' => $item['width'],
'FACE_HEIGHT' => $item['height'],
'CONFIDENCE' => 0
];
$forceAdded = true;
}
else
{
throw new RestException($response['result']['code']);
}
}
else
{
throw new RestException($response['result']['code']);
}
// set `recently added` flag
if ($forceAdd == 'y')
{
$result['IS_NEW'] = $forceAdded;
}
return $result;
}