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