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.
Инструкция
- Выполним подключение по SSH к роутеру для выполнения дальнейшей настройки. В зависимости от используемой системы(Windows, Linux, MacOS), подключение по SSH можно выполнить с использованием различного дополнительного программного обеспечения(Putty), либо системного терминала.
Внимание, при авторизации на сервере, пароль в консоли не отображается.
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
# cd amiws-master/
# ./configure
# make && make install
Для поддержки защищенного 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/
5. Пройдём авторизацию во FreePBX, нажмём «FreePBX Administration», введем «username и password» и нажмём «Continue»
6. Перейдём к созданию AMI пользователя. Для этого перейдём в меню «Settings»→»Asterisk Manager Users»→ «Add Manager»→ «Submit»→ «Apply Config», где основные поля для заполнения:
Manager name — имя AMI пользователя(логин)
Manager secret — пароль AMI пользователя
Deny — запрещённые подсети для обращения по AMI
Permit — разрешенные подсети для обращения по 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 данной статьи
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/
11. Добавим AMIws в автозагрузку и запустим, для этого выполним ряд команд вида:
# chmod +x /etc/init.d/amiws
# chkconfig amiws on
# service amiws start
12. Установка и конфигурирование AMIws на данном шаге завершены, теперь перейдя в интернет обозревателе(Opera, Firefox, Google Chrome, Yandex Browser….) по ссылке вида http://IP_адрес_сервера_Asterisk:8000/ В примере данной статьи ссылка имеет вид: http://192.168.170.163:8000/ . Мы попадём в Dashboard AMIws:
13. Пример отображения поступающего звонка в режиме реального времени:
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…..» система попросит ввести пароль для создаваемой учетной записи. Внимание, во время ввода пароля, пароль не отображается в консоли.
Далее необходимо раскомментировать и отредактировать строку с параметром «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
# service amiws restart
Последующие обращения через интернет обозреватель(Opera, Firefox, Google Chrome, Yandex Browser….) к Dashboard AMIws будут сопровождаться формой для прохождения авторизации:
Остались вопросы?
Я - Першин Артём, менеджер компании 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 сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.
Привет. не работает…. пишет not found в браузере.
Добрый день!
Извиняюсь за прошлый коммент, все работает!
Добрый день!При попытке подключения к серверу получаю:
Connection LostConnection to server has been lost. Trying to reconnect…
PS. Все настройки перепробовал (