- Модуль: voximplant
- Путь к файлу: ~/bitrix/modules/voximplant/classes/general/vi_outgoing.php
- Класс: CVoxImplantOutgoing
- Вызов: CVoxImplantOutgoing::StartCall
static function StartCall($userId, $phoneNumber, $params)
{
$phoneNormalized = CVoxImplantPhone::Normalize($phoneNumber);
if (!$phoneNormalized)
{
$phoneNormalized = preg_replace("/[^0-9#*]/i", "", $phoneNumber);
}
$userId = intval($userId);
if ($userId <= 0 || !$phoneNormalized)
return false;
$additionalParams = array();
if(isset($params['LINE_ID']))
{
$additionalParams['LINE_ID'] = $params['LINE_ID'];
}
$viHttp = new CVoxImplantHttp();
$result = $viHttp->StartOutgoingCall($userId, $phoneNumber, $additionalParams);
if(!$result)
{
return array(
'ERROR' => $viHttp->GetError()->msg
);
}
$config = self::GetConfigByUserId($userId);
$callFields = array(
'CALL_ID' => $result->call_id,
'CONFIG_ID' => $config['ID'],
'USER_ID' => $userId,
'INCOMING' => CVoxImplantMain::CALL_OUTGOING,
'CALLER_ID' => $phoneNormalized,
'ACCESS_URL' => $result->access_url,
'STATUS' => VIModelCallTable::STATUS_WAITING,
'DATE_CREATE' => new FieldTypeDateTime(),
'LAST_PING' => null,
'QUEUE_ID' => null
);
if(isset($params['SRC_ACTIVITY_ID']))
{
$callFields['CRM_ACTIVITY_ID'] = $params['SRC_ACTIVITY_ID'];
}
if(isset($params['CALL_LIST_ID']))
{
$callFields['CRM_CALL_LIST'] = $params['CALL_LIST_ID'];
}
$call = VICall::create($callFields);
$call->addUsers([$userId], VIModelCallUserTable::ROLE_CALLEE, VIModelCallUserTable::STATUS_INVITING);
$crmEntities = [];
if(isset($params['ENTITY_TYPE']) && isset($params['ENTITY_ID']) && mb_strpos($params['ENTITY_TYPE'], 'CRM_') === 0)
{
$crmEntities[] = [
'ENTITY_TYPE' => mb_substr($params['ENTITY_TYPE'], 4),
'ENTITY_ID' => $params['ENTITY_ID'],
'IS_PRIMARY' => 'Y',
'IS_CREATED' => 'N'
];
}
if(isset($params['ENTITY_TYPE_NAME']) && isset($params['ENTITY_ID']))
{
$crmEntities[] = [
'ENTITY_TYPE' => $params['ENTITY_TYPE_NAME'],
'ENTITY_ID' => $params['ENTITY_ID'],
'IS_PRIMARY' => 'Y',
'IS_CREATED' => 'N'
];
}
$call->updateCrmEntities($crmEntities);
return array(
'USER_ID' => $userId,
'PHONE_NUMBER' => $phoneNormalized,
'CALL_ID' => $call->getCallId(),
'CALL_DEVICE' => 'PHONE',
'EXTERNAL' => true,
'CONFIG' => CVoxImplantConfig::getConfigForPopup($call->getCallId()),
);
}