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

Для этого нам понадобится настроить все аналогично включения/отключения 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.
Как видно на картинках изменили мы помимо названия сервисный код на номер, и ${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, а можно создать новую.
Применяем изменения диалплана:
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>»;
Соответственно теперь необходимо внесенные в формы пароли внести в базу, а удаленные – удалить:
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.

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