Настройка переадресаций и режима DND по списку из примонтированной директории
В данной статье рассмотрим возможность создания переадресаций с номеров операторов, а также режима «Не беспокоить», с помощью списка, помещаемого на примонтированную директорию. Для возможности редактировать подобные режимы без доступа в админ панель, либо через какую либо утилиту секретарем или супервайзером. Монтирование директории и создание файла из-под Windows Чтобы корректно указывать переадресации и постановку DND, необходимо […]
В данной статье рассмотрим возможность создания переадресаций с номеров операторов, а также режима «Не беспокоить», с помощью списка, помещаемого на примонтированную директорию. Для возможности редактировать подобные режимы без доступа в админ панель, либо через какую либо утилиту секретарем или супервайзером.

Монтирование директории и создание файла из-под Windows
Чтобы корректно указывать переадресации и постановку DND, необходимо проверить какие данные меняются на АТС при включении этих режимов обычным способом.


DND & CF изменяют записи в базе, а также статус пира.
Соответственно необходимо будет менять devstate и запись в базе соответственно выбранному режиму.
Записи из файла будем получать скриптом, применять в нем же, по аналогии со статьей выше. Записи в файл необходимо вносить в формате: номер оператора — необходимое действие. (Для DND yes/no (да/нет), для CF просто номер переадресации).
Как пример:
101,74959898533
102,yes
103,nocf
104,no
Функцию перевода файла таблицы в строку приведем ниже:
function str_to_arr($str){
$piece=array();
$string=array();
$arr=array();
$j=0;
$string = explode ("\n",$str);
for($i=0;$i<count($string);$i++){
$piece=explode(",",$string[$i],2);
if (isset($piece[1])){
$arr[trim($piece[0])]=trim($piece[1]);
}
}
return $arr;
}
$strvars = file_get_contents('/usr/src/nfs/1.csv');
$arrayvars=str_to_arr($strvars);
Для проверки заполнения будем использовать цикл с условиями, ниже тестовый вариант для наглядного вывода:
foreach ($arrayvars as $key => $value) {
if (preg_match("/[0-9]{3,4}/", $key))
{
if ($value == "yes") {
echo $key." - DND ON\r\n";
} elseif ($value == "no")
{
echo $key." - DND OFF\r\n";
} elseif ($value == "nocf")
{
echo $key." - CF SETUP OFF\r\n";
} elseif (preg_match("/[78][3-9][0-9]{9}/", $value))
{
echo $key." - CF SETUP: $value\r\n";
} else {echo "Неверный параметр: $value\r\n";}
} else { echo "Неверный оператор: $key\r\n"; }
Как видно выше, строки заполненные неверно не будут обработаны. Также желательно ограничить возможные для переадресации номера, чтобы не было возможности поставить МН направление, например. Ошибочные данные можно выводить в отдельный файл, если необходим анализ ошибок.

Проверка реализована, теперь перейдем к заполнению необходимых данных.
Для обоих режимов (как DND так и переадресации), необходим статус пира «BUSY», выставляется он через консольную команду devstate change (CLI консоль asterisk). Также необходимо внести запись в AstDB, в соответствующий раздел.
Для DND:
devstate change Custom:DEVDND100 BUSY
devstate change Custom:DND100 BUSY
database put DND 100 yes
Для CF:
devstate change Custom:DEVCF100 BUSY
devstate change Custom:CF100 BUSY
database put CF 100 74959999999
Для снятия, необходимо выставить статус NOT_INUSE и удалить запись из базы.
Соответственно теперь, для каждой соответствующей строки нужно прописать команды.
foreach ($arrayvars as $key => $value) {
if (preg_match("/[0-9]{3,4}/", $key))
{
if ($value == "yes") {
echo $key." - DND ON\r\n";
$dndon1=`/usr/sbin/asterisk -rx "devstate change Custom:DEVDND$key BUSY"`;
$dndon2=`/usr/sbin/asterisk -rx "devstate change Custom:DND$key BUSY"`;
$dndon3=`/usr/sbin/asterisk -rx "database put DND $key yes"`;
} elseif ($value == "no")
{
echo $key." - DND OFF\r\n";
$dndoff1=`/usr/sbin/asterisk -rx "devstate change Custom:DEVDND$key NOT_INUSE"`;
$dndoff2=`/usr/sbin/asterisk -rx "devstate change Custom:DND$key NOT_INUSE"`;
$dndoff3=`/usr/sbin/asterisk -rx "database del DND $key"`;
} elseif ($value == "nocf")
{
echo $key." - CF SETUP OFF\r\n";
$cfoff1=`/usr/sbin/asterisk -rx "devstate change Custom:DEVCF$key NOT_INUSE"`;
$cfoff2=`/usr/sbin/asterisk -rx "devstate change Custom:CF$key NOT_INUSE"`;
$cfoff3=`/usr/sbin/asterisk -rx "database del CF $key"`;
} elseif (preg_match("/[78][3-9][0-9]{9}/", $value))
{
echo $key." - CF SETUP: $value\r\n";
$cfon1=`/usr/sbin/asterisk -rx "devstate change Custom:DEVCF$key BUSY"`;
$cfon2=`/usr/sbin/asterisk -rx "devstate change Custom:CF$key BUSY"`;
$cfon3=`/usr/sbin/asterisk -rx "database put CF $key $value"`;
} else {echo "Неверный параметр: $value\r\n";}
} else { echo "Неверный оператор: $key\r\n"; }
}
Проверяем выполнив скрипт:
php -f cfdnd.php



Далее скрипт можно поместить в крон на выполнение раз в сутки, либо запускать вручную с помощью телефонного номера.
Например утром, в 9 по будням:
0 9 * * 1-5 php -f /usr/src/cfdnd.php

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