Последовательные переадресации через custom destination. Веб-интерфейс управления
В предыдущей статье рассматривали способ реализации последовательных переадресаций, с помощью базы данных AstDB и модуля custom destination. В данной статье рассмотрим вариант реализации веб-интерфейса управления данным функционалом. Создаем таблицу в базе asteriskcdrdb: Записываем функции получения номеров в func_odbc.conf Перегружаем конфигурации системы core reload’ом В самом контексте заменяем ссылки к базе: Итак мы перенесли нахождение номеров […]
В предыдущей статье рассматривали способ реализации последовательных переадресаций, с помощью базы данных AstDB и модуля custom destination.
В данной статье рассмотрим вариант реализации веб-интерфейса управления данным функционалом.

Создаем таблицу в базе asteriskcdrdb:
create table extsfailover (
exten varchar(5) NOT NULL,
numfirst varchar(5) NOT NULL,
numsecond varchar(5) NOT NULL,
PRIMARY KEY `exten` (`exten`)
) DEFAULT CHARSET=utf8 ENGINE=InnoDB;
Записываем функции получения номеров в func_odbc.conf
[firstnum]
dsn=asteriskcdrdb
readsql=select numfirst from extsfailover where exten=${EXTEN};
[secondnum]
dsn=asteriskcdrdb
readsql=select numsecond from extsfailover where exten=${EXTEN};
Перегружаем конфигурации системы core reload’ом

В самом контексте заменяем ссылки к базе:
[failover-exts-manager]
exten => _X.,1,NoOp(== ${ODBC_firstnum()} - ${ODBC_secondnum()} ==)
same => n,ExecIf($["${ODBC_firstnum()}"!=""]?Dial(Local/${ODBC_firstnum()}@ext-local,20,Ttr))
same => n,ExecIf($["${ODBC_secondnum()}"!=""]?Dial(Local/${ODBC_secondnum()}@ext-local,20,Ttr))
same => n,Goto(check-callstate,s-NOANSWER,1)
Итак мы перенесли нахождение номеров для переадресации в Mysql, теперь реализуем веб-интерфейс конфигурации.
Указываем функцию подключения к БД (пользователь должен иметь доступ к чтению созданной таблицы):
function bd_bridge($db,$q){
$link = @mysqli_connect('localhost','user','password',$db) or die("Error: "[email protected]_connect_error($link));
$rs = @mysqli_query($link, $q) or die("Error: "[email protected]_error($link));
if($rs){
return $rs;
@mysqli_free_result($rs);
}
else{
}
mysqli_close($link);
}
Выводим форму с текущими записями :
echo "<form action='' method='post'>
<table border=1>
<tr>
<td>ExtenNum</td>
<td>ForwardNumFirst</td>
<td>ForwardNumSecond</td>
<td>Удалить</td>
</tr>";
$result = bd_bridge('asteriskcdrdb',"select exten, numfirst, numsecond from extsfailover;");
while ($row = mysqli_fetch_array($result))
{
$ExtenNum = $row[0];
$ForwardNumFirst = $row[1];
$ForwardNumSecond = $row[2];
echo "<tr>
<td>$ExtenNum</td>
<td>$ForwardNumFirst</td>
<td>$ForwardNumSecond</td>
<td><input type='checkbox' name='temp_arr[]' value='$row[0]' id='$row[0]' /></td>
</tr>";
}
Формы ввода новых значений, кнопки удаления и добавления/изменения:
echo "</table>
<p><input type='submit' name='delete' value='Удалить'/></p></form>";
echo "<form action='' method='post'>
Номер назначения:<input name=exten type=text pattern='[0-9]{3,5}' required>
Первая переадресация:<input name=first type=text pattern='[0-9]{3,5}'>
Вторая переадресация:<input name=second type=text pattern='[0-9]{3,5}'>
<p><input type='submit' name='change' value='Добавить/Изменить'/></p>
</form>";
Обработчики добавления:
if(isset($_POST['change'])){
$request = mysqli_fetch_array(bd_bridge("asteriskcdrdb","REPLACE INTO extsfailover VALUES ('".$_POST['exten']."','".$_POST['first']."','".$_POST['second']."');"));
echo "<script language='JavaScript' type='text/javascript'>window.location.replace('index.php')</script>";
}
Обработчик удаления:
if(isset($_POST['delete'])){
foreach ($_POST[temp_arr] as $value){
$request = mysqli_fetch_array(bd_bridge("asteriskcdrdb","DELETE FROM extsfailover WHERE exten='".$value."';"));
}
echo "<script language='JavaScript' type='text/javascript'>window.location.replace('index.php')</script>";
}

!Направление на контекст переадресации должно быть выставлено заранее.


Остались вопросы?
Я - Компаниец Никита, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.
категории
- DECT
- Linux
- Вспомогательный софт при работе с Asterisk
- Интеграция с CRM и другими системами
- Интеграция с другими АТС
- Использование Elastix
- Использование FreePBX
- Книга
- Мониторинг и траблшутинг
- Настройка Asterisk
- Настройка IP-телефонов
- Настройка VoIP-оборудования
- Новости и Статьи
- Подключение операторов связи
- Разработка под Asterisk
- Установка Asterisk
VoIP оборудование
ближайшие курсы
Новые статьи
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 сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.