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