Кирилл Золотавин
04.02.2020
433

Провиженинг Softphone.Pro

Описание: В одной из наших статей было рассмотрено как выполнить настройку внутреннего номера в Softphone.Pro https://voxlink.ru/kb/ip-phones-configuration/softfon/ustanovka-i-nastrojka-softphonpro/, но данное ПО обладает функционалом автонастройки и значительно облегчает настройку большого количества внутренних номеров. В рамках данной статьи будет рассмотрено как выполнить подготовку WEB сервера провиженинга, создание скриптов для генерации конфигурационных файлов на основе данных из БД  FreePBX: В […]

Описание:

В одной из наших статей было рассмотрено как выполнить настройку внутреннего номера в Softphone.Pro https://voxlink.ru/kb/ip-phones-configuration/softfon/ustanovka-i-nastrojka-softphonpro/, но данное ПО обладает функционалом автонастройки и значительно облегчает настройку большого количества внутренних номеров. В рамках данной статьи будет рассмотрено как выполнить подготовку WEB сервера провиженинга, создание скриптов для генерации конфигурационных файлов на основе данных из БД  FreePBX:

Все описанные действия в статье необходимо выполнять от имени суперпользователя (root). Установка и настройка производилась на предустановленной системе CentOS 7 + Asterisk 13 + FreePBX 13 + PHP 5.6.40 + Apache/2.4.6.

В статье использовались файлы:
configs.php —
скрипт генерации конфигурационных файлов провиженинга, содержащих внутренний номер и пароль регистрации внутреннего номера
users.php —
скрипт генерации конфигурационного файла , содержащего лоигн:пароль для авторизации на
web сервере провиженинга
softphonepro_provisioning_server.zip —
web сервер провиженинга

Инструкция:

  1. Выполним подключение по SSH к серверу IP АТС Asterisk. В зависимости от используемой системы(Windows, Linux, MacOS), подключение по SSH можно выполнить с использованием различного дополнительного программного обеспечения(Putty), либо системного терминала.
  2. Выполним скачивание WEB сервера провиженинга в корневую директорию Apache
# cd /var/www/html/
# git clone https://github.com/vedisoft/softphonepro_provisioning_server.git softphonepro
# chown asterisk:asterisk /var/www/html/softphonepro -R
Скачивание WEB сервера провиженинга и смена прав пользователя и группы
Скачивание WEB сервера провиженинга и смена прав пользователя и группы

3. Выполним настройку базового конфигурационного файла, который будет использоваться для всех внутренних номеров:

# nano /var/www/html/softphonepro/templates/sip_account_common.ini
Настройка базового конфигурационного файла sip_account_common.ini
Настройка базового конфигурационного файла sip_account_common.ini

Где ключевые параметры для изменения:
 ServerIP адрес или доменное имя сервера телефонии(в примере данной статьи 192.168.170.197)
Domain
— IP адрес или доменное имя сервера телефонии(в примере данной статьи 192.168.170.197)
LocalPort
локальный порт софтфона можно не указывать, тогда будет генерироваться динамический(в примере данной статьи 5060)
Transport — протокол, может принимать значения
Auro/TCP/UDP(в примере данной статьи UDP)
CallTransferDTMF
код используемый для условного трансфера вызова
CallPickupDTMF — код парковки вызова
RtpPortStart — диапазон голосовых портов
RtpPortEnd — диапазон  голосовых портов

Если у Вас приобретен лицензионный ключ для данного ПО, то его так же необходимо прописать в базовом конфигурационном файле /var/www/html/softphonepro/templates/app_settings.ini параметр «LicenseKey»

4. Выполним настройку Apache для доступа к WEB серверу провиженинга по http:

# nano +1500 /etc/httpd/conf/httpd.conf

Добавить следующие строки:

NameVirtualHost *:8080
Listen 8080
<VirtualHost *:8080>
DocumentRoot /var/www/html/softphonepro
<Directory /var/www/html/softphonepro>
RewriteEngine off
Options +FollowSymLinks
</Directory>
</VirtualHost>

Создание VirtualHost WEB сервера провиженинга
Создание VirtualHost WEB сервера провиженинга

5. Создадим скрипты автоматической генерации конфигурационных файлов провиженинга на основе данных из БД FreePBX:

# nano /opt/configs.php

<?php
// Данные подключения к БД
$DBhost = "localhost";
$DBuser = "freepbxuser";
$DBpass = "пароль";
$DBdatabase = "asterisk";

// Функция удаления старых конфигурационных файлов
recursive("/var/www/html/softphonepro/configs");
function recursive($dirname){
if(is_dir($dirname)){
  $opendir = opendir($dirname);
  while(($name = readdir($opendir)) !== false){
    $fullpath = $dirname.'/'.$name;
    if(is_file($fullpath)){
    if(preg_match('~(.*)+\.ini~', $fullpath)){
    echo 'file "'.$fullpath.'" deleted!<br>' . "\r\n";
    unlink($fullpath);
    }
  }
  else if($name != '.' && $name != '..') recursive($fullpath);
  }
  closedir($opendir);
}
else echo $dirname.' - not dir!';
}
recursive('stats');

// Подключение к БД и получение данных для регистрации  всех внутренних номеров
$DBlink = @mysql_connect($DBhost, $DBuser, $DBpass) or die("Could not connect to host.");
@mysql_select_db($DBdatabase, $DBlink) or die("Could not find database.");
$DBquery = "SELECT id,data FROM sip WHERE keyword='secret';";
$QUERYresult = @mysql_query($DBquery,$DBlink) or die("Data not found.");

//Добавление данных в массив
while (
$contact=@mysql_fetch_array($QUERYresult)){
$result = "{% include \"restrictions.ini\" %} \n{% include \"app_settings.ini\" %} \n{% include \"sip_account_common.ini\" %} \nName=" . $contact['id'] . "\n" . "Username=" . $contact['id'] . "\n" . "Password=" . $contact['data'] . "\n" . "AuthId=" . $contact['id'] . "\n" . "DisplayName=" . $contact['id'] . "\n" . "\n";
file_put_contents("/var/www/html/softphonepro/configs/". $contact['id'] . ".ini",print_r($result,true),FILE_APPEND);
//Смена прав пользователя и группы
chmod("/var/www/html/softphonepro/configs/". $contact['id'] . ".ini", 0777);
chown("/var/www/html/softphonepro/configs/". $contact['id'] . ".ini", "asterisk");
chgrp("/var/www/html/softphonepro/configs/". $contact['id'] . ".ini", "asterisk");
}
?>

# nano /opt/users.php

<?php
// Данные подключения к БД
$DBhost = "localhost";
$DBuser = "freepbxuser";
$DBpass = "пароль";
$DBdatabase = "asterisk";

//Удаление старого конфигурационного файла
unlink("/var/www/html/softphonepro/users.xml");
// Подключение к БД и получение данных для регистрации  всех внутренних номеров
$DBlink = @mysql_connect($DBhost, $DBuser, $DBpass) or die("Could not connect to host.");
@mysql_select_db($DBdatabase, $DBlink) or die("Could not find database.");
$DBquery = "SELECT id,data FROM sip WHERE keyword='secret';";
$QUERYresult = @mysql_query($DBquery,$DBlink) or die("Data not found.");
file_put_contents("/var/www/html/softphonepro/users.xml",print_r("<?xml version=\"1.0\" encoding=\"UTF-8\"?>" . "\n" . "<users>" . "\n",true),FILE_APPEND);

// Добавление данных в массив
while ($contact=@mysql_fetch_array($QUERYresult)){
$result = "<user>" . "\n" . "<login>" . $contact['id'] . "</login>" . "\n" . "<password>" . $contact['id'] . "</password>" . "\n" . "</user>" . "\n";
file_put_contents("/var/www/html/softphonepro/users.xml",print_r($result,true),FILE_APPEND);
}
file_put_contents("/var/www/html/softphonepro/users.xml",print_r("</users>" . "\n",true),FILE_APPEND);
//Смена прав пользователя и группы
chmod("/var/www/html/softphonepro/users.xml", 0777);
chown("/var/www/html/softphonepro/users.xml", "asterisk");
chgrp("/var/www/html/softphonepro/users.xml", "asterisk");
?>

Скрипт генерации файлов провиженинга configs.php
Скрипт генерации файлов провиженинга configs.php
Скрипт генерации файлов провиженинга users.php
Скрипт генерации файлов провиженинга users.php

6. Выполним запуск созданных скриптов генерации конфигурационных файлов провиженинга:

# php /opt/configs.php
 # php /opt/users.php
Генерация конфигурационных файлов.
Генерация конфигурационных файлов.

7. Выполним генерацию/скачивание/установку SoftphonePro с вшитой ссылкой на WEB сервер провиженинга, для этого перейдет на сайт разработчика по ссылке https://ru.softphone.pro/it-pros и в параметре provisioning.ini укажем конфигурации вида:

[Features]
# 0 or 1
ProvisioningEnabled=1
[Urls]
LoginUrl=http://192.168.170.197:8080/login.php?login=%LOGIN%&password=%PASSWORD_HASH%

где 192.168.170.197 — это IP адрес сервера телефонии с развернутым WEB сервером провиженинга
8080 — порт VirtualHost настраиваемый в п.4 данной статьи

Генерация установщика SoftPhonePro
Генерация установщика SoftPhonePro

SoftphonePro_provision_7.

8. При первом запуске софтфона необходимо будет ввести логин и пароль, скрипт users.php генерирует пару Логин:Пароль равную внутреннему номеру сотрудника

Авторизация на WEB сервере провиженинга
Авторизация на WEB сервере провиженинга
Успешное получение конфигурационного файла и регистрация внутреннего номера на АТС
Успешное получение конфигурационного файла и регистрация внутреннего номера на АТС
Подписаться
Уведомление о
guest
0 Комментарий
Inline Feedbacks
View all comments

Остались вопросы?

Я - Компаниец Никита, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.

VoIP оборудование

ближайшие курсы

ближайшие Вебинары

ONLINE

10 доводов в пользу Asterisk

Распространяется бесплатно.

Asterisk – программное обеспечение с открытым исходным кодом, распространяется по лицензии GPL. Следовательно, установив один раз Asterisk вам не придется дополнительно платить за новых абонентов, подключение новых транков, расширение функционала и прочие лицензии. Это приближает стоимость владения станцией к нулю.

Безопасен в использовании.

Любое программное обеспечение может стать объектом интереса злоумышленников, в том числе телефонная станция. Однако, сам Asterisk, а также операционная система, на которой он работает, дают множество инструментов защиты от любых атак. При грамотной настройке безопасности у злоумышленников нет никаких шансов попасть на станцию.

Надежен в эксплуатации.

Время работы серверов некоторых наших клиентов исчисляется годами. Это значит, что Asterisk работает несколько лет, ему не требуются никакие перезагрузки или принудительные отключения. А еще это говорит о том, что в районе отличная ситуация с электроэнергией, но это уже не заслуга Asterisk.

Гибкий в настройке.

Зачастую возможности Asterisk ограничивает только фантазия пользователя. Ни один конструктор шаблонов не сравнится с Asterisk по гибкости настройки. Это позволяет решать с помощью Asterisk любые бизнес задачи, даже те, в которых выбор в его пользу не кажется изначально очевидным.

Имеет огромный функционал.

Во многом именно Asterisk показал какой должна быть современная телефонная станция. За многие годы развития функциональность Asterisk расширилась, а все основные возможности по-прежнему доступны бесплатно сразу после установки.

Интегрируется с любыми системами.

То, что Asterisk не умеет сам, он позволяет реализовать за счет интеграции. Это могут быть интеграции с коммерческими телефонными станциями, CRM, ERP системами, биллингом, сервисами колл-трекинга, колл-бэка и модулями статистики и аналитики.

Позволяет телефонизировать офис за считанные часы.

В нашей практике были проекты, реализованные за один рабочий день. Это значит, что утром к нам обращался клиент, а уже через несколько часов он пользовался новой IP-АТС. Безусловно, такая скорость редкость, ведь АТС – инструмент зарабатывания денег для многих компаний и спешка во внедрении не уместна. Но в случае острой необходимости Asterisk готов к быстрому старту.

Отличная масштабируемость.

Очень утомительно постоянно возвращаться к одному и тому же вопросу. Такое часто бывает в случае некачественного исполнения работ или выбора заведомо неподходящего бизнес-решения. С Asterisk точно не будет такой проблемы! Телефонная станция, построенная на Asterisk может быть масштабируема до немыслимых размеров. Главное – правильно подобрать оборудование.

Повышает управляемость бизнеса.

Asterisk дает не просто набор полезных функций, он повышает управляемость организации, качества и комфортности управления, а также увеличивает прозрачность бизнеса для руководства. Достичь этого можно, например, за счет автоматизации отчетов, подключения бота в Telegram, санкционированного доступа к станции из любой точки мира.

Снижает расходы на связь.

Связь между внутренними абонентами IP-АТС бесплатна всегда, независимо от их географического расположения. Также к Asterisk можно подключить любых операторов телефонии, в том числе GSM сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.