• Модуль: voximplant
  • Путь к файлу: ~/bitrix/modules/voximplant/classes/general/vi_outgoing.php
  • Класс: CVoxImplantOutgoing
  • Вызов: CVoxImplantOutgoing::StartInfoCallWithSound
static function StartInfoCallWithSound($outputNumber, $number, $url)
{
	$result = new Result();
	CVoxImplantHistory::WriteToLog(Array($outputNumber, $number, $url), 'StartInfoCallWithSound');

	if($outputNumber === CVoxImplantConfig::LINK_BASE_NUMBER)
	{
		$result->addError(new Error('Making infocall using LINK_BASE_NUMBER is not allowed'));
		return $result;
	}

	$numberConfig = CVoxImplantConfig::GetConfigBySearchId($outputNumber);
	if(isset($numberConfig['ERROR']))
	{
		$result->addError(new Error('Could not find config for number ' . $outputNumber));
		return $result;
	}

	$limitRemainder = VILimits::getInfocallsLimitRemainder($numberConfig['PORTAL_MODE']);
	if ($limitRemainder === 0)
	{
		$result->addError(new Error('Infocall limit for this month is exceeded'));
		return $result;
	}

	if($numberConfig['PORTAL_MODE'] === CVoxImplantConfig::MODE_SIP)
		$phoneNormalized = $number;
	else
		$phoneNormalized = CVoxImplantPhone::stripLetters($number);

	if (!$phoneNormalized)
	{
		$result->addError(new Error('Phone number is not correct'));
		return $result;
	}

	$options = array(
		'MODE' => self::INFOCALL_MODE_URL,
	);

	$httpClient = new CVoxImplantHttp();
	$infocallResult = $httpClient->StartInfoCall($phoneNormalized, $url, $options, $numberConfig);

	if($infocallResult === false)
	{
		$result->addError(new Error('Infocall failure'));
		return $result;
	}

	CVoxImplantHistory::WriteToLog($result, 'Infocall started');
	if($limitRemainder > 0)
	{
		VILimits::addInfocall($numberConfig['PORTAL_MODE']);
	}
	$result->setData(array(
		'CALL_ID' => $infocallResult->call_id
	));
	return $result;
}