Александр Мисюрин
12.04.2020
1445

Использование внешней директории для получения списка клиентов и его последующей обработки

В данной статье рассмотрим возможность подключения внешней директории с сервера на Windows и использование ее для работы с телефонией. Как пример реализуем получение списка необходимых звонков с расписанием, через файл формата csv. Для экспортирования директории необходимо установить на АТС утилиты nfs и rpcbind. Произведем первичную настройку, работы nfs по статическим портам (необязательно). Указав в конфигурационном […]

В данной статье рассмотрим возможность подключения внешней директории с сервера на Windows и использование ее для работы с телефонией. Как пример реализуем получение списка необходимых звонков с расписанием, через файл формата csv.

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

Для экспортирования директории необходимо установить на АТС утилиты nfs и rpcbind.

Произведем первичную настройку, работы nfs по статическим портам (необязательно).

Указав в конфигурационном файле /etc/sysconfig/nfs следующие директивы:

LOCKD_TCPPORT=33656

LOCKD_UDPPORT=33657

MOUNTD_PORT=893

MOUNTD_PORT=857

STATD_PORT=652

STATD_OUTGOING_PORT=2023

Сохраняем и перезапускаем сервисы NFS и rpcbind

Service rpcbind

Service nfs restart

Соответственно эти порты должны быть открыты в файрволе по TCP/UDP:

111 TCP/UDP

2049 TCP

33656, 33657 TCP/UDP

893 TCP/UDP

857 TCP/UDP

2023 TCP/UDP

После указания и открытия этих портов можем приступить к дальнейшей настройке.

В файле /etc/exports указать следующую строку:

/usr/src/nfs 192.168.170.0/24(rw,sync,no_root_squash)

И выполнить команду exportfs –a

Соответственно папка уже должна быть создана и иметь разрешение на запись под любым пользователем.

Дальнейшая настройка на стороне клиента.

В ОС Window 10 (либо Windows 7 Максимальная) существует встроенный клиент NFS (для других версий необходимо устанавливать дополнительно), но его нужно включить в компонентах. Панель управления – Программы и компоненты – Включение или отключение компонентов Windows.

Включение NFS клиента в Windows
Включение NFS клиента в Windows
Включение NFS клиента в Windows
Включение NFS клиента в Windows

После установки, открываем командную строку и вводим:

mount 192.168.1.1:/usr/src/nfs z: (указать IP сервера)

 Монтирование внешней директории в Windows
Монтирование внешней директории в Windows

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

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

Проверка копирования на примонтированный раздел
Проверка копирования на примонтированный раздел
Список номеров, с указанием даты
Список номеров, с указанием даты
Обратите внимание, что дата должна быть указана в формате: «dd Month YYYY HH:mm» причем Month должен представлять собой первые 3 символа месяца (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec).

Затем файл загружаем на АТС, где считываем скриптом для последующей обработки. Необходима функция переводящая строки файла в массив:

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);

Формат файла для корректной работы должен быть: csv UTF-8.

Далее в скрипте полученный массив используем для создания call файлов:

foreach ($arrayvars as $key => $value) {

echo $key.» — $value\r\n»;

$fp = fopen(«/usr/src/test/calls/call_$key.call», ‘w’);

fwrite($fp, «Channel: Local/6001@ext-queues\n»);

fwrite($fp, «Callerid: Plan call <$key>».»\n»);

fwrite($fp, «MaxRetries: 1″.»\n»);

fwrite($fp, «RetryTime: 20″.»\n»);

fwrite($fp, «WaitTime: 20″.»\n»);

fwrite($fp, «Context: from-internal».»\n»);

fwrite($fp, «Extension: $key».»\n»);

fwrite($fp, «Priority: 1″.»\n»);

fclose($fp);

$touchfile=`touch -d «$value» /usr/src/test/calls/call_$key.call`;

$chownfile=`chown asterisk:asterisk /usr/src/test/calls/ -R`;

}

И перемещаем их в директорию для обработки:

$mvfile=`mv /usr/src/test/calls/* /var/spool/asterisk/outgoing`; /**/

Файлы звонков
Файлы звонков

Соответственно сам скрипт можно запускать несколькими способами, это может сделать администратор вручную, закрепить его на исполнение в cron либо прикрепить возможность вызова на звонок, например:

exten => 00101,1,Authenticate(1234)

same => n,System(/usr/bin/php -f /usr/src/test/test.php)

same => n,Hangup

Проверка работы из примонтированной директории
Проверка работы из примонтированной директории
Подписаться
Уведомление о
guest
0 Комментарий
Inline Feedbacks
View all comments

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

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

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

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

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

ONLINE

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