artem
13.03.2018
1230

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.

 

 

 

 
avatar
  Подписаться  
Уведомление о

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

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

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

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

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

ONLINE

Why Choose HUGE?

Unlimited pre-designed elements

Each and every design element is designed for retina ready display on all kind of devices

User friendly interface and design

Each and every design element is designed for retina ready display on all kind of devices

100% editable layered PSD files

Each and every design element is designed for retina ready display on all kind of devices

Created using shape layers

Each and every design element is designed for retina ready display on all kind of devices