artem
13.10.2018
618

Web модуль управления переадресациями

Многие сталкивались, при настройке функционала FreePBX с ситуацией, когда сотрудники компании периодически работают не в офисе, а, скажем, на удаленном объекте, в командировке в другом регионе и т. д., при этом забывают поставить переадресацию. Из-за чего может быть потерян клиент, т. к. не дозвонился менеджеру, чтобы уточнить важную информацию, или техническому специалисту для получения консультации или решения проблемы. Чтобы избежать такой проблемы был реализован модуль для установки и снятия переадресаций.

1. Описание

2. Разработка

3. Подключение к БД

4. Заполнение внутренних номеров

5. Заполнение списка активных переадресаций

Описание

Данный модуль имеет всего 1 web страницу, на которой можно управлять переадресациями.

Страница переадресации

Как видно на изображении интерфейс интуитивно понятный. Слева в колонке указаны внутренние номера на АТС, справа в текстовое поле вносятся данные, куда перенаправить вызов.

Разработка

Для создания данного модуля был использован PHP версии 5.3.

Для начала определим наши функции:

1. Подключение к БД
2. Заполнение массива с внутренними номерами
3. Заполнение массива данными о переадресации

Все данные берутся из AstDB и заносятся туда же

Рассмотрим каждую из функций.

Подключение к БД

function bd_connect($db,$q){
$link = @mysqli_connect(‘localhost’,db_user,db_password,$db) or die(“Error: “.@mysqli_connect_error($link));
$rs = @mysqli_query($link, $q) or die(“Warning: “.@mysqli_error($link));
if($rs){
return $rs;
}
else{
}
@mysqli_close($link);
}

Данные о подключении хранятся в файле settings.php.

<?php
//! ================== Доступ к MySQL ==================
define(‘db_host’,’localhost’);
define(‘db_user’,’DB_ISER’);
define(‘db_password’,’DB_PASS’);
?>

Заполнение внутренних номеров

function fill_val(){
$rs = bd_connect(“asterisk”,”SELECT id, description FROM devices WHERE tech=’sip’ AND ORDER BY id;”);
while($row = @mysqli_fetch_array($rs)){
if($row[0]!=”){
$nums[$row[0]] = $row[1];
}
}
return $nums;
}

Данная функция получает список внутренних номеров из таблицы sip базы asterisk. Данные записываются в массив $nums и возвращает массив.

Заполнение списка активных переадресаций

function Call_Forwards(){
$exts = fill_val();
foreach ($exts as $key => $value) {
$CF = shell_exec(‘asterisk -rx “database get CF ‘.$key.'”‘);
$pat = ‘/^Database/’;
if (!preg_match($pat,$CF)){
$cf_nums[$key] = explode(‘:’,$CF)[1];
}
else {
$cf_nums[$key] = ”;
}
}
return $cf_nums;
}

Данная функция проходится по всем записям AstDB и выбирает значения CallForward, если они есть. Заносит данные в словарь $cf_nums. И возвращает его значения.

Далее перейдем к основнову файлу index.php.

В теле нашей страницы будем подкличать созданные нами файлы:
settings.php и functions.php.

<body>
<?php
require_once “settings.php”;
require_once “functions.php”;
?>
</body>

Теперь нам надо получить список внутренних номеров и установленные переадресации. Для этого после подключения файлов, занесем в переменную $exts значения выполненнлй функции Call_Forwards. И опираясь на данные полученные выполненной функции будем заполнять таблицу.

<body>
<?php
require_once “settings.php”;
require_once “functions.php”;
$exts = Call_Forwards();
echo “<form id=’ext_list’ action=’newcf.php’ class=’form_check’ method=’POST’>”;
foreach ($exts as $ext => $cf){
if ($cf!=”){
echo “
<tr>
<td class=’CF extensions’>
<input type=’checkbox’ name=’check[“.$ext.”]’ value='”.$ext.”‘ id=id_$ext checked>
<label class=’exten’ for=id_$ext>$ext</label>
</td>
<td class=’CF call_forwards’>
<input type=’tel’ pattern='[78][0-9]{5,10}|1[0-9][0-9]’ maxlength=’11’ placeholder=’Телефон’ name=’CF[“.$ext.”]’ value='”.intval($cf).”‘ class=’input_phone_cf’>
<span class=’form_error’>Телефон должен быть в формате 89007775599 или 79007775599 или ХХХ</span>
</td>
</tr>
“;
} else {
echo “
<tr>
<td class=’CF extensions’>
<input type=’checkbox’ name=’check[“.$ext.”]’ value=” id=id_$ext>
<label class=’exten’ for=id_$ext>$ext</label>
</td>
<td class=’CF call_forwards’>
<input type=’tel’ pattern='[78][0-9]{5,10}|1[0-9][0-9]’ maxlength=’11’ placeholder=’Телефон’ name=’NoCF[“.$ext.”]’ value=” class=’input_phone_cf’>
<span class=’form_error’>Телефон должен быть в формате 89007775599 или 79007775599 или ХХХ</span>
</td>
</tr>
“;
}
}
echo “</form>
<button type=’submit’ class=’apply_config’ form=’ext_list’> Применить </button>”;
?>
</body>

 
avatar
  Подписаться  
Уведомление о

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

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

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

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

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

ONLINE

Why Choose HUGE?

Unlimited pre-designed elements

Each and every design element is designed for retina ready display on all kind of devices

User friendly interface and design

Each and every design element is designed for retina ready display on all kind of devices

100% editable layered PSD files

Each and every design element is designed for retina ready display on all kind of devices

Created using shape layers

Each and every design element is designed for retina ready display on all kind of devices