- Модуль: voximplant
- Путь к файлу: ~/bitrix/modules/voximplant/classes/general/vi_sip.php
- Класс: CVoxImplantSip
- Вызов: CVoxImplantSip::Get
public function Get($configId, $params = [])
{
$configId = intval($configId);
if ($configId <= 0)
{
$this->error = new CVoxImplantError(__METHOD__, 'CONFIG_ID_NULL', GetMessage('VI_SIP_CONFIG_ID_NULL'));
return false;
}
if (!is_array($params))
{
$params = [];
}
$result = VISipTable::getList([
'select' => ($params['WITH_TITLE'] ?? null) ? ['*', 'TITLE'] : ['*'],
'filter' => ['=CONFIG_ID' => $configId]
]);
$row = $result->fetch();
if (!$row)
{
$this->error = new CVoxImplantError(__METHOD__, 'CONFIG_NOT_FOUND', GetMessage('VI_SIP_CONFIG_NOT_FOUND'));
return false;
}
if ($row['TYPE'] == self::TYPE_CLOUD)
{
if (intval($row['REG_ID']) <= 0)
{
$result = $this->CreateSipRegistration(
$row['ID'],
$row['CONFIG_ID'],
$row['SERVER'],
$row['LOGIN'],
$row['PASSWORD'],
$row['AUTH_USER'],
$row['OUTBOUND_PROXY']
);
if ($result)
{
$row['REG_ID'] = $result->reg_id;
}
$row['REG_STATUS'] = $result? self::REG_STATUS_IN_PROGRESS: self::REG_STATUS_ERROR;
}
else
{
$row['REG_STATUS'] = self::REG_STATUS_WAIT;
}
unset($row['INCOMING_SERVER']);
unset($row['INCOMING_LOGIN']);
unset($row['INCOMING_PASSWORD']);
}
else
{
if (empty($row['INCOMING_SERVER']) && empty($row['INCOMING_LOGIN']) && empty($row['INCOMING_PASSWORD']))
{
$ViHttp = new CVoxImplantHttp();
$result = $ViHttp->GetSipParams($configId);
if ($result)
{
$row['INCOMING_SERVER'] = str_replace(Array('incoming.', '.voximplant.com'), Array('ip.', '.bitrixphone.com'), $result->server);
$row['INCOMING_LOGIN'] = $result->user_name;
$row['INCOMING_PASSWORD'] = $result->user_password;
$this->Update($configId, Array(
'TYPE' => self::TYPE_OFFICE,
'INCOMING_SERVER' => $row['INCOMING_SERVER'],
'INCOMING_LOGIN' => $row['INCOMING_LOGIN'],
'INCOMING_PASSWORD' => $row['INCOMING_PASSWORD']
));
}
}
else
{
$row['INCOMING_SERVER'] = str_replace(Array('incoming.', '.voximplant.com'), Array('ip.', '.bitrixphone.com'), $row['INCOMING_SERVER']);
}
unset($row['REG_ID']);
}
return $row;
}