artem
13.03.2018
4149

Dashboard AMIws звонков в режиме реального времени.

Зачастую требуется получение информации о поступающих звонках в режиме реального времени с отображением в WEB панели, в рамках данной статьи будет рассмотрена открытая разработка AMI прокси-сервера «AMIws».

AMIws — простой прокси-сервер AMI в WEB. Он может подключаться к одному или нескольким серверам IP АТС Asterisk через AMI (Asterisk Manager Interface), читать сообщения из потока AMI и отправлять actions/commands. Полученные сообщения анализируются и преобразуются в JSON. AMIws также предоставляет интерфейс HTTP / WebSocket и отправляет сообщения JSON всем подключенным пользователям через HTTP.

Возможности Amiws:

1. Использование протокола AMI для получения данных
2. Возможность подключение к AMI по обычному TCP подключению и защищенному SSL/TLS
3. Логирование syslog
4. HTTP и WebSocket сервер
5. Защищенное SSL/TLS подключение к HTTP и WebSocket
6. Аутентификация по логину и паролю при доступе к WEB интерфейсу
7. Конфигурирование с использование YAML

Все описанные действия в статье необходимо выполнять от имени суперпользователя (root). Установка и настройка производилась на предустановленной системе CentOS 6.8 + Asterisk 11.23.1 + FreePBX 13.

Инструкция:

  1. Выполним подключение по SSH к роутеру для выполнения дальнейшей настройки. В зависимости от используемой системы(Windows, Linux, MacOS), подключение по SSH можно выполнить с использованием различного дополнительного программного обеспечения(Putty), либо системного терминала.

Подключение по SSH через Putty
Авторизация на сервере.

Внимание, при авторизации на сервере, пароль в консоли не отображается.

SSH консоль подключения.

2. Выполним установку необходимых зависимостей, введя в консоли команду вида:

# yum install libyaml libyaml-devel openssl openssl-devel

Установка зависимостей.
Информирование о успешном завершении установки зависимостей.

3. Приступим к сборке и установки AMIws, для этого в SSH консоли выполним ряд команд вида:

# cd /usr/src/
# wget https://github.com/staskobzar/amiws/archive/master.zip
# unzip master.zip

Переход в директорию и скачивание исходников AMIws.

# cd amiws-master/
# ./configure

Переход в директорию и конфигурирование перед сборкой.

# make && make install

Сборка AMIws
Установка AMIws.

Для поддержки защищенного SSL/TLS подключения, конфигурирование перед сборкой необходимо выполнить командой:

# ./configure —with-ssl

4. Прежде чем приступать к конфигурированию AMIws, необходимо создать AMI пользователя в Asterisk, для этого перейдём в WEB панель управления FreePBX через интернет обозреватель(Opera, Firefox, Google Chrome, Yandex Browser….) по ссылке вида: http://IP_адрес_сервера_Asterisk/ В примере ссылка имеет вид: http://192.168.170.163/

WEB панель FreePBX.

5. Пройдём авторизацию во FreePBX, нажмём «FreePBX Administration», введем «username и password» и нажмём «Continue»

Авторизация во FreePBX.

6. Перейдём к созданию AMI пользователя. Для этого перейдём в меню «Settings»→»Asterisk Manager Users»→ «Add Manager»→ «Submit»→ «Apply Config», где основные поля для заполнения:

Manager name — имя AMI пользователя(логин)
Manager secret — пароль AMI пользователя
Deny — запрещённые подсети для обращения по AMI
Permit — разрешенные подсети для обращения по AMI

Переход в меню «Settings»→»Asterisk Manager Users»

Добавление менеджера

Заполнение основных параметров AMI пользователя

Применение внесенных изменений

Установка слабого пароля для AMI пользователя и установка 0.0.0.0/0 подсети в качестве разрешенной может привести к несанкционированному доступу к серверу телефонии.

7. Приступим к конфигурированию AMIws, предварительно скопируем образцы конфигурационных файлов и файл сервиса, для этого в консоли выполним ряд команд вида:

# cp -vr etc/amiws.sample.yaml /etc/amiws.yaml
# cp -vr etc/amiws.sysv.init /etc/init.d/amiws

Копирование конфигурационных файлов.

8. Выполним редактирование скопированного образца конфигурационного файла:

# nano /etc/amiws.yaml

И приведем данный файл к следующему виду:

log_facility  : 40
log_level     : 6
ws_port       : 8000
web_root      : /var/www/html/amiws/web_root
#auth_domain   : 192.168.170.163
#auth_file     : /var/www/amiws/.htaccess
#ssl_cert      : /tmp/server.pem
#ssl_key       : /tmp/server.key
# List of AMI servers
amihosts:
  — name: ast01.localhost
    port: 5038
    host: 127.0.0.1
    username: amiws
    secret: amiws
#  — name: ssl.ast01.example.com
#    port: 5039
#    host: 127.0.0.1
#    username: amiws
#    secret: amiws
#    ssl_cert: /etc/ssl/asterisk.pem
#    ssl_key: /etc/ssl/asterisk.key

где ключевыми парамметрами для изменения являются:

web_root — директория расположения WEB файлов AMIws
ws_port — порт по которому будет осуществляться обращение к WEB Amiws
auth_file — расположение файла .htaccess содержащего параметры для авторизации по логину/паролю
ssl_cert — расположение SSL сертификата для защищенного обращения по https к WEB AMIws
ssl_key — расположение приватного SSL ключа, который генерируется совместно с SSL сертификатом
name — имя сервера, которое будет отображаться в WEB AMIws и по которому можно будет отфильтровывать данные если будет просматриваться информация по поступающим звонкам от нескольких серверов
port — порт для обычного подключения по AMI(по умолчанию 5038, 5039 для защищенного SSL/TLS подключения)
host — адрес сервера телефонии Asterisk
username — имя AMI пользователя созданного в п.6 данной статьи
secret — пароль  AMI пользователя созданного в п.6 данной статьи

Редактирование конфигурационного файла amiws.yaml

9. Выполним редактирование сервисного файла, для возможности управления AMIws(запуск, остановка, перезапуск и отслеживания состояния процесса)

# nano /etc/init.d/amiws

И приведем данный файл к следующему виду:

#!/bin/sh
#
#       /etc/rc.d/init.d/amiws
#
#       amiws — Asterisk Manager Iterface (AMI) to web-socket proxy
#
# chkconfig:   345 56 50
# description: AMI to websock proxy amiws

### BEGIN INIT INFO
# Provides:       amiws
# Required-Start: $network $rsyslog
# Required-Stop:
# Should-Start:
# Should-Stop:
# Default-Start: 3 4 5
# Default-Stop:  0 1 2 6
# Short-Description: start and stop amiws
# Description: amiws — Asterisk Manager Iterface (AMI) to web-socket proxy
### END INIT INFO
# Source function library.
. /etc/rc.d/init.d/functions
prog=»amiws»
app=»/usr/local/bin/$prog»
lock_file=»/var/lock/subsys/$prog»
conf_file=»/etc/amiws.yaml»
proguser=root
WORKDIR=»/var/run»
PIDFILE=»$WORKDIR/$prog.pid»

[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog

start() {
    [ -x $exec ] || exit 5

    echo -n $»Starting $prog: «
    daemon —user $proguser $app —file $conf_file —pidfile $PIDFILE —wdir $WORKDIR —daemon
    RETVAL=$?
    [ $RETVAL -eq 0 ] && touch $lock_file
    echo
    return $RETVAL
}
stop() {
    echo -n $»Stopping $prog: «
    killproc $prog -INT
    RETVAL=$?
    echo
    [ $RETVAL -eq 0 ] && rm -f $lock_file
    return $RETVAL
}
restart() {
    stop
    start
}
reload() {
    echo -n $»Reloading $prog: «
    killproc $prog -HUP
    RETVAL=$?
echo
    return $RETVAL
}
force_reload() {
    restart
}
rh_status() {
    status $prog
}
rh_status_q() {
    rh_status >/dev/null 2>&1
}
case «$1» in
    start)
        rh_status_q && exit 0
        $1
        ;;
    stop)
        rh_status_q || exit 0
        $1
        ;;
    restart)
        $1
        ;;
    force-reload)
        force_reload
        ;;
    status)
        rh_status
        ;;
    condrestart|try-restart)
        rh_status_q || exit 0
        restart
        ;;
    *)
        echo $»Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}»
        exit 2
esac
exit $?

Редактирование сервисного файла.
Редактирование сервисного файла.

10. Перенесем для удобства WEB файлы AMIws в директорию Apache, для этого выполним ряд команд вида:

# mkdir /var/www/html/amiws
# cp -vr /usr/src/amiws-master/web_root /var/www/html/amiws/

Копирование WEB директории.

11. Добавим AMIws в автозагрузку и запустим, для этого выполним ряд команд вида:

# chmod +x /etc/init.d/amiws
# chkconfig amiws on
# service amiws start

Добавление в автозагрузку и запуск AMIws.

12. Установка и конфигурирование AMIws на данном шаге завершены, теперь перейдя в интернет обозревателе(Opera, Firefox, Google Chrome, Yandex Browser….) по ссылке вида http://IP_адрес_сервера_Asterisk:8000/ В примере данной статьи ссылка имеет вид: http://192.168.170.163:8000/ . Мы попадём в Dashboard AMIws:

Dashboard AMIws.

13. Пример отображения поступающего звонка в режиме реального времени:

Отображение входящего звонка в Dashboard.

Dashboard AMIws так же имеет функционал отображения геолокации по странам.

14. Для ограничения доступа к Dashboard AMIws с использованием пары логин/пароль, необходимо выполнить следующие действия:

# cd /var/www/html/amiws/web_root/
# htdigest -c /var/www/html/amiws/web_root/.htaccess 192.168.170.163 admin

где  192.168.170.163 — IP адрес или доменное имя по которому будет осуществляться обращение к Dashboard AMIws
admin — логин учетной записи по которой разрешено пройти авторизацию

После ввода команды « htdigest…..» система попросит ввести пароль для создаваемой учетной записи. Внимание, во время ввода пароля, пароль не отображается в консоли.

Создание «.htaccess»

Далее необходимо раскомментировать и отредактировать строку с параметром «auth_file и auth_domain» в конфигурационном файле «/etc/amiws.yaml»

# nano /etc/amiws.yaml
и приведем строку к следующему виду:
auth_domain   : 192.168.170.163
auth_file     : /var/www/html/amiws/web_root/.htaccess

где  192.168.170.163 — IP адрес или доменное имя по которому будет осуществляться обращение к Dashboard AMIws
auth_file  — адрес расположения файла .htaccess

Редактирование конфигурационного файла  amiws.yaml.

После успешного внесения изменений в конфигурационные файлы, необходимо выполнить перезапуск AMIws

# service amiws restart

Перезапуск AMIws.

Последующие обращения через интернет обозреватель(Opera, Firefox, Google Chrome, Yandex Browser….) к Dashboard AMIws будут сопровождаться формой для прохождения авторизации:

 Форма авторизации  Dashboard AMIws.

 

 

 

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