ABillS. Установка и настройка Callcenter

Однажды в одной компании, чтобы упростить поиск звонящих клиентов в ABillS, понадобилось установить модуль Callcenter, который имеет разные возможности, но нам понадобилось именно вплывающие уведомления в браузере со ссылкой на страницу звонящего клиента.

Файл Callcenter.pm выдадут разработчики ABillS после покупки модуля, переместим его в необходимую директорию:

mv Callcenter.pm /usr/abills/Abills/mysql/

Импортируем в базу данных данные из Callcenter.sql и Events.sql:

mysql --default-character-set=utf8 -D abills < /usr/abills/db/Callcenter.sql
mysql --default-character-set=utf8 -D abills < db/Events.sql

Откроем файл конфигурации ABillS:

nano /usr/abills/config.pl

Активируем модуль Callcenter, а также понадобиться модуль Events:

@MODULES = (
             'Callcenter',
             'Events',
            );

Также я добавил некоторые параметры:

$conf{CALLCENTER_ASTERISK_PHONE_PREFIX}='\+38';
$conf{EVENTS_ASTERISK} = 1;
$conf{ASTERISK_AMI_IP} = '192.168.5.5';
$conf{ASTERISK_AMI_PORT} = '5039';
$conf{ASTERISK_AMI_USERNAME} = 'abills_admin';
$conf{ASTERISK_AMI_SECRET} = 'Password';
$conf{WEBSOCKET_ENABLED} = 1;

CALLCENTER_ASTERISK_PHONE_PREFIX позволяет убирать ненужные символы в начале номера, я убрал +38, так как при звонке Asterisk передает например +380670000000, а в ABillS телефоны клиентов заведены как 0670000000.

Также необходимо настроить Asterisk AMI, как это сделать я описывал в статье:
Настройка Asterisk AMI

Установим необходимые компоненты:

sudo apt update
sudo apt install libanyevent-perl
sudo a2enmod proxy
sudo a2enmod proxy_wstunnel
sudo service apache2 restart
sudo apt install -yq cpanminus build-essential
sudo cpanm Protocol::WebSocket
sudo cpanm Asterisk::AMI

Откроем веб конфигурацию в текстовом редакторе:

sudo nano /etc/apache2/sites-enabled/abills_httpd.conf

И внутри «VirtualHost» добавим строки:

ProxyPass "/admin/wss/" "ws://127.0.0.1:19443/wss/admin/" retry=1

На всякий случай проверим корректность конфигурации apache2 и перезапустим его:

sudo apachectl -t
sudo service apache2 restart

Осталось запустить websocket_backend.pl:

ln -s /usr/abills/misc/websocket_backend.pl /usr/abills/libexec/websocket_backend.pl
chmod +x /usr/abills/libexec/websocket_backend.pl
/usr/abills/libexec/websocket_backend.pl -d

Можно еще так:

/usr/abills/libexec/websocket_backend.pl start
/usr/abills/libexec/websocket_backend.pl status
/usr/abills/libexec/websocket_backend.pl -d LOG_FILE=/tmp/abills_websocket.log DEBUG=5

Проверить запущен ли websocket_backend.pl и завершить его можно командами:

ps xa |grep websocket_backend.pl
sudo killall websocket_backend.pl

При необходимости откроем порт в iptables:

iptables -I INPUT 1 -p tcp --dport 19443 -j ACCEPT

Чтобы websocket_backend.pl запускался автоматически при запуске Ubuntu, я создал скрипт автозапуска и активировал его:

nano /etc/systemd/system/abills-backend.service
[Unit]
Description=ABillS Websocket Server
After=network.target
After=mysql.service
Requires=mysql.service
 
[Service]
Type=forking
 
PIDFile=/usr/abills/var/log/websocket_backend.pid
 
ExecStartPre=/bin/chown -R www-data /usr/abills/var/
ExecStart=/usr/abills/libexec/websocket_backend.pl -d
ExecReload=/usr/abills/libexec/websocket_backend.pl stop
 
[Install]
WantedBy=multi-user.target
systemctl is-enabled abills-backend.service
systemctl enable abills-backend.service
systemctl start abills-backend.service
systemctl status abills-backend.service
service abills-backend status

Либо вместо скрипта автозапуска можно просто добавить websocket_backend.pl в /etc/rc.local:

/etc/rc.local
(sleep 5 && /usr/abills/libexec/websocket_backend.pl -d) &

Также стоит учесть что скрипт websocket_backend.pl может внезапно прекращать свою работу, по этому я сделал скрипт watchdog который перезапустит его в случае падения, пример можно найти в моей статье:
Простой скрипт Watchdog

В директории с логами будут созданы следующие файлы:
/usr/abills/var/log/websocket_internal.log
/usr/abills/var/log/websocket_backend.pid
/usr/abills/var/log/websocket.log
/usr/abills/var/log/event_asterisk.log

Всем администраторам которые должны получать уведомления в браузере я указал в настройках SIP телефон: goip4new, так как использовалось несколько шлюзов с SIM картами и Asterisk присылает например goip4 и goip4new.

Смотрите также мои статьи:
Установка Asterisk в Ubuntu
Настройка GOIP4 c Asterisk

Оставьте комментарий

Добавить комментарий