• Модуль: voximplant
  • Путь к файлу: ~/bitrix/modules/voximplant/classes/general/vi_rest.php
  • Класс: CVoxImplantRestService
  • Вызов: CVoxImplantRestService::finishExternalCall
static function finishExternalCall($params, $n, $server)
{
	if ($server->getAuthType() !== OauthAuth::AUTH_TYPE && $server->getAuthType() !== APAuthAuth::AUTH_TYPE)
	{
		throw new BitrixRestAuthTypeException();
	}
	$params['CALL_ID'] ??= null;
	$params['USER_ID'] ??= null;
	$params['DURATION'] ??= null;
	$params['COST'] ??= null;
	$params['COST_CURRENCY'] ??= null;
	$params['STATUS_CODE'] ??= null;
	$params['FAILED_REASON'] ??= null;
	$params['RECORD_URL'] ??= null;
	$params['VOTE'] ??= null;
	$params['ADD_TO_CHAT'] ??= null;

	/*
	$permissions = SecurityPermissions::createWithCurrentUser();
	if(!$permissions->canPerform(SecurityPermissions::ENTITY_CALL_DETAIL, SecurityPermissions::ACTION_MODIFY, SecurityPermissions::PERMISSION_ANY))
	{
		throw new BitrixRestAccessException();
	}
	*/

	$userId = (int)$params['USER_ID'];
	if ($userId == 0)
	{
		$userId = RestHelper::getUserByPhone($params['USER_PHONE_INNER']);
	}

	if (!$userId)
	{
		throw new BitrixRestRestException('USER_ID or USER_PHONE_INNER should be set');
	}

	$callId = $params['CALL_ID'];
	if (!is_string($callId))
	{
		throw new BitrixRestRestException('CALL_ID must be a string', 'INVALID_ARGUMENT');
	}

	$result = RestHelper::finishExternalCall([
		'CALL_ID' => $callId,
		'USER_ID' => $userId,
		'DURATION' => (int)$params['DURATION'],
		'COST' => (double)$params['COST'],
		'COST_CURRENCY' => (string)$params['COST_CURRENCY'],
		'STATUS_CODE' => (string)$params['STATUS_CODE'],
		'FAILED_REASON' => (string)$params['FAILED_REASON'],
		'RECORD_URL' => (string)$params['RECORD_URL'],
		'VOTE' => (int)$params['VOTE'],
		'ADD_TO_CHAT' => $params['ADD_TO_CHAT'] != false,
	]);

	if (!$result->isSuccess())
	{
		throw new BitrixRestRestException(implode('; ', $result->getErrorMessages()));
	}

	return $result->getData();
}