• Модуль: voximplant
  • Путь к файлу: ~/bitrix/modules/voximplant/lib/controller/callerid.php
  • Класс: BitrixVoximplantControllerCallerId
  • Вызов: CallerId::addAction
public function addAction($phoneNumber, $requestVerification = false)
{
	$number = Parser::getInstance()->parse($phoneNumber);

	if(!$number->isValid())
	{
		$this->errorCollection[] = new Error(Loc::getMessage("VOX_CALLER_ID_WRONG_NUMBER"), "wrong_number");
		return null;
	}
	$normalizedNumber = $number->format(Format::E164);
	// remove +
	$normalizedNumber = mb_substr($normalizedNumber, 1);

	$checkRow = CallerIdTable::getRow(['filter' => ['=NUMBER' => $normalizedNumber]]);
	if($checkRow)
	{
		$this->errorCollection[] = new Error(Loc::getMessage("VOX_CALLER_ID_ALREADY_EXISTS"), "not_unique");
		return null;
	}

	$apiClient = new CVoxImplantHttp();
	$result = $apiClient->addCallerID($normalizedNumber);

	if(!$result)
	{
		$this->errorCollection[] = new Error($apiClient->GetError()->msg, $apiClient->GetError()->code);
		return null;
	}

	$verifiedUntil = ($result->verified ? new DateTime($result->verified_until, 'Y-m-d') : null);
	CVoxImplantPhone::addCallerId($normalizedNumber, $result->verified, $verifiedUntil);

	if(!$result->verified && $requestVerification)
	{
		$verificationResult = $apiClient->VerifyCallerID($normalizedNumber);
		if(!$verificationResult)
		{
			$this->errorCollection[] = new Error($apiClient->GetError()->msg, $apiClient->GetError()->code);
			return null;
		}
	}

	return [
		'number' => $normalizedNumber,
		'verified' => $result->verified ? 'Y' : 'N',
		'verifiedUntil' => $verifiedUntil ? $verifiedUntil->toString() : '',
	];
}