artem
26.06.2018
8578

Включение и отключение переадресации по звонку

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

Переадресация по звонку при включении и отключении

Для этого нам понадобится настроить все аналогично включения/отключения DND по звонку. То есть нам понадобится создать список паролей для внутренних номеров, ИВР для ввода внутреннего номера и контексты для обработки.

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

В отличие от DND тут нам так же понадобится вводить номер для переадресации (если включаем).

Для тестов использовалась АТС с Asterisk 11 & FreePBX 12.

Для включения и выключения будем использовать стандартные контексты FreePBX: app-cf-on & app-cf-off, предварительно изменив их. Изменить нужно будет название (поскольку именно их будем использовать только для данного функционала). Назовем, например, app-cf-outbound-on & app-cf-outbound-off.

Контексты можно найти в файле extensions_additional.conf, копируем их в extensions_custom.conf и изменяем название и extension.

Cf-app-outbound-on

Cf-app-outbound-off

Как видно на картинках изменили мы помимо названия сервисный код на номер, и ${AMPUSER} на ${EXTEN}.

Маска _XXX предназначена для 3х значных номеров, если у вас иной номерной план следует это учесть, но можно и указать более общую маску.

Для ввода пароля воспользуемся аналогичным DND механизмом:

[ivr-9]
exten => _XXX,1,Set(pass=${DB(CFPASS/${EXTEN})})
same => n,Authenticate(${pass})
same => n,Set(num=${EXTEN})
same => n,Read(toggle,ru/custom/hello-test,1)
same => n,GotoIf($[«${toggle}»=»1»]? app-cf-outbound-on,${EXTEN},1)
same => n,GotoIf($[«${toggle}»=»2»]? app-cf-outbound-off,${EXTEN},1)
same => n,Playback(beep)
same => n,Macro(hangupcall,)

Соответственно ivr-9 должна быть создана, аналогично той что для DND.

Примечание! Номер ИВР можно узнать через веб-интерфейс, он будет подписан как id в адресной строке при открытии нужного голосового меню.

Пароль для внутренних номеров так же получаем из базы, можно использовать ту же базу что и для DND, а можно создать новую.

Голосовое меню для CF.

Входящий маршрут.

Применяем изменения диалплана:

Asterisk –rx ‘dialplan reload’

И можем тестировать.

Для управления паролями будем использовать web-форму.

Для основы используем форму управления DND из прошлой статьи (Управление DND через web).

Оттуда возьмем вывод всех операторов и их текущие пароли:

<?php
include(‘connectdb.php’);
$cfdb = new SQLite3(‘/var/lib/asterisk/astdb.sqlite3’);
$result = bd_bridge(‘asterisk’,’SELECT extension, name FROM users ORDER BY extension ASC;’);
echo «<form action=’cfpass.php’ method=’POST’><table border=1><tr><td>Номер</td><td>Имя</td><td>Статус</td></tr>»;

while ($row = mysql_fetch_array($result))
{
$CellName = $row[‘name’];
$CellPhone = $row[‘extension’];

$cfpass = $cfdb->query(«SELECT value FROM astdb WHERE key like ‘/CFPASS/$CellPhone’ AND key not like ‘%only’  ORDER BY key»);
$astdb = $cfpass->fetchArray();
$CFpwd = $astdb[‘value’];

echo «<tr><td>».$row[0].»</td><td>».$row[1].»</td><td><input type=’text’ name='».$row[0].»‘ pattern='[0-9]{4}’ value='».$CFpwd.»‘></td></tr>»;//Выводим поля для ввода пароля с необходимым паттерном и индексом.
echo «</td></tr>»;
}
echo «</table>
<input type=submit name=set>//кнопка обработчик
</form>»;

Вывод всех текущих паролей для CF.

Соответственно теперь необходимо внесенные в формы пароли внести в базу, а удаленные – удалить:

if (isset ($_POST[‘set’])) {
foreach ($_POST as $key => $pass) {

if ($pass != «») {$cf = `asterisk -rx «database put CFPASS $key $pass»`;}
else {$cf = `asterisk -rx «database del CFPASS $key»`;}

}

echo «<meta http-equiv=’refresh’ content=’1′>»;
}
?>

Данный скрипт помещаем как обычно в веб-директорию и даем ему пользователя asterisk.

БД Asterisk пример.

Демонстрация web-интерфейса

Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии

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

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

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 сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.