• Модуль: 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;
}