TelefUM24

Установка приложения TELEFUM24 на сервер с Asterisk/FreePBX

Настройка firewall
Если используете IPTables:
Для АТС с публичным IP адресом в firewall-е необходимо открыть доступ к портам 9000 и 9500 для серверов Telefum 24 - IP адрес 144.76.44.198


iptables -I INPUT -p tcp -s 144.76.44.198 --dport 9000 -j ACCEPT
iptables -I INPUT -p tcp -s 144.76.44.198 --dport 9500 -j ACCEPT

service iptables save
iptables -nvL
Если используете FirewallD:

firewall-cmd --permanent --zone=public --add-rich-rule='
  rule family="ipv4"
  source address="144.76.44.198"
  port protocol="tcp" port="9500" accept'
firewall-cmd --permanent --zone=public --add-rich-rule='
  rule family="ipv4"
  source address="144.76.44.198"
  port protocol="tcp" port="9000" accept'


firewall-cmd --reload


Просмотрите файл зоны public, чтобы проверить конфигурацию XML:

cat /etc/firewalld/zones/public.xml
Если АТС находится за NAT, то на нем необходимо выполнить проброс портов:

$EXTIP = 123.123.123.123 - внешний IP
$IP-PBX = 192.168.1.254 - внутренний IP АТС
iptables -t nat -A PREROUTING -p tcp -s 144.76.44.198 -d $EXTIP --dport 9000 -j DNAT --to $IP-PBX:9000
iptables -t nat -A PREROUTING -p tcp -s 144.76.44.198 -d $EXTIP --dport 9500 -j DNAT --to $IP-PBX:9500


iptables -t nat -A POSTROUTING -d $IP-PBX -j MASQUERADE


Установка приложения TELEFUM24 на сервер с Asterisk/FreePBX
для CentOS скачать приложение-предустановщик:
Потом установить права на файл и запустить. torun_script определит вашу версию OC, разрядность, проверит установлены ли необходимые пакеты для mysql и скачает необходимое приложение-инсталлятор
Дать права для запуска приложения-инсталлятора
Если у вас Centos5\Centos6\Centos7 x32\x64:

cd /usr/src/telefum
wget http://telefum.com/EugenyData/webserver/redhat_pbx/torun_script &&
chmod 755 torun_script &&
./torun_script &&
chmod 755 toservice_run
Если у вас Ubuntu\Debian x32:

cd /usr/src/telefum
wget http://telefum.com/EugenyData/webserver/ubuntu_pbx_i686/toservice_run &&
chmod 755 toservice_run
Если у вас Ubuntu\Debian x64:

версия libmysqlclient.so 18:

cd /usr/src/telefum
wget http://telefum.com/EugenyData/webserver/ubuntu_pbx/toservice_run &&
chmod 755 toservice_run
версия libmysqlclient.so 20:

cd /usr/src/telefum
wget http://telefum.com/EugenyData/webserver/ubuntu_pbx_new/toservice_run &&
chmod 755 toservice_run
Если у Вас другая ОС - пишите нам в поддержку support@telefum24.ru
Запустить приложение:

./toservice_run <внешний IP адрес сервера>.
В директории с приложением toservice_run создастся новая директория /toapi_server с таким набором файлов:

/usr/src/telefum/toapi_server
/..                            
/to_logs                       
 ami_urls.ini                  # Команды для AMI
 ast_config.ini                # Настройки приложения
 hangup_call.txt               # Параметры завершения вызова
 makecall.txt                  # Параметры создания вызова
 mysql.ini                     # Подключение к mysql
 pbxcallback_server_config.ini # Параметры 
*pbxserver1_run                # Скрипт запуска и мониторинга testserver1
 pbxserver2_config.ini         # Настройки сервера истории
*pbxserver2_run                # Скрипт запуска и мониторинга testserver2
*pbxserver_autorun             # Скрипт общего запуска
 pbxserver_config.ini          # Настройки сервера телефонии
*testserver1                   # Сервер телефонии (работает порту 9500)
*testserver2                   # Сервер истории звонков (работает порту 9000)
 transfer_call.txt             # Параметры перевода (blind transfer) звонка
Необходимо проверить наличие всех файлов. При необходимости перезапустить приложение
Настройка конфигурационных файлов ./toapi_server
mysql.ini В /toapi_server/mysql.ini указать данные и для подключения к MySQL

[MySQL account]
localhost      # сервер
asteriskuser   # пользователь mysql с правами на БД записей разговоров
pass123        # пароль пользователя
asteriskcdrdb  # база данных записей разговоровнные и для подключения к MySQL
Проверить подключение к mysql с введенными данными можно командой:

mysql -D asteriskcdrdb -u asteriskuser -p'pass123'
Проверить какие пользователи есть в mysql можно командой

USE asterisk
SELECT User,Host FROM mysql.user;

MariaDB [(none)]> SELECT User,Host FROM mysql.user;
+-------------+-----------+
| User        | Host      |
+-------------+-----------+
| root        | 127.0.0.1 |
| root        | ::1       |
| asteriskuser| localhost |
| root        | localhost |
+-------------+-----------+
pbxserver_config.ini и pbxserver2_config.ini
Файлы /toapi_server/pbxserver_config.ini и /toapi_server/pbxserver2_config.ini отвечают за подключение к серверу и формирование ссылок истории и записей разговоров.
Указанный в pbxserver2_config.ini IP адрес (так же можно указать порт через ":") отвечает за генерацию ссылок на записи разговоров CRM. Тут есть 2 варианта:

  1. если asterisk за NAT и указать внешний IP адрес роутера - тогда на роутере необходимо сделать проброс трафика, чтобы извне и изнутри сети можно было перейти по ссылке (напр.: xxx.xxx.xxx.xxx:порт/monitor/audio.wav)
  2. указать внутренний адрес АТС - тогда запись разговора можно будет прослушать только из локальной сети
С учетом вышеперечисленных вариантов данные в файлах могут отличаться (напр.):

Где
xxx.xxx.xxx.xxx - внешний IP адрес
yyy.yyy.yyy.yyy - внутренний IP адрес
ast_config.ini
В /toapi_server/ast_config.ini указать

ast_config_type=1                                               # Использование источника с внутренними номерами
                                                                # 1 - Источник MySQL таблица указанная ниже раздел users 
																#(например asterisk:devices:user,description)
                                                                # 1001 - Источник sip.conf (и/или users.conf, 
																# если он подкреплен #include users.conf в sip.conf)
ast_timezone=+3:00 ;Moscow                                      # Часовой пояс
ast_ssl_links=true                                              # Указывает что ссылки на записи 
                                                                # разговоров - https://
                                                                # 
[users]                                                         # 
users.db=asterisk                                               # Имя базы данных
users.table=devices                                             # Таблица списка пользователей
users.fields=user,description                                   # Используемые поля
                                                                # 
[companies]                                                     # В данный момент не используется
companies.active=false                                          # 
companies.db=                                                   # 
companies.table=                                                # 
companies.fields=                                               # 
                                                                # 
[call_history]                                                  # Параметры по сбору и передаче истории звонков
call_history.db=asteriskcdrdb                                   # Имя базы данных
call_history.table=cdr                                          # Таблица истории звонков
call_history.user_field=                                        # Пользовательское поле
call_history.direction_field=                                   # Направление звонка
call_history.time_field=calldate                                # Поле даты звонка
call_history.recording_field=recordingfile                      # Поле с именем файла разговора
call_history.recording_skip_path=                               # Пропустить часть пути до
                                                                # названия записи разговора (напр: audio:)
call_history.recording_add_path=/monitor/%Y%/%m%/%d%/           # Путь к записи разговора 
                                                                #(по 80 порту)
; Y - year, m - month, d - day,                                 # Используемые переменные для составления пути 
;time - call time, user - user account,                         # к записи разговора
;company - user company (context), number - abonent number      # 
call_history.recording_extension=.mp3                           # Добавить после названия 
                                                                # записи разговора (например: .mp3)
call_history.replace_extension=true                            	# 

		# ---- Дополнительные настройки ----
ast_sub_international_dialling_plus = 1                         #  убрать    international dialing +  
ast_add_international_dialling_plus = 1                         #  добавить    international dialing +
ast_9digit_numbers_correction = 1                               # приведение 9 значных номеров к 10 значным
ast_dial_on_app_start = 1                                       # dial по событию  app_start в cel
users.idfield =                                                 # что является id у users.table
call_history.check_incoming_calls = true                        # если присутствует context incoming_calls 
                                                                # звонок рассматривать как входящий 
                                                                #(даже если он исходящий)
call_history.replace_extension=true                             # изменить
call_history.from_cel = 1                                       # (2,3,4,.. )  не использовать т. cdr 
                                                                #ссыылки на файлы разговоров
																# указываются в call_history.recording_add_path
call_history.app_start = true                                   # app_start иногда может означать
                                                                # что звонок состоявшийся
call_history.ivr_trunks = true                                  # для звонков на ivr добавит cel.exten 
                                                                # из события cel.eventtype == 'answer' 
																# к json parameter "trunk_number"
                                                                # и ещё с параметром ast.config_type 
																# который может принимать 
																# множество значений 
																# а не только 
																# 1, 2, 1000, 1001, 1200
makecall.txt
В /toapi_server/makecall.txt указать свой контекст для исходящих звонков чтобы Telefum24 Desktop мог совершать исходящие звонки и технологию которую вы используете для добавочных номеров (sip, iax или pjsip).
В случае с FreePBX подобными системами Context по умолчанию from-internal

Action: Originate
Channel: sip/%username%
Context: from-internal
Exten: %ext%
Priority: 1
Callerid: "%ext%"<%username%>
Timeout: 30000
ActionID: ABC45678901234567890
transfer_call.txt
В /toapi_server/transfer_call.txt также указать контекст для исходящих звонков чтобы Telefum24 Desktop мог совершать перевод звонка.
В случае с FreePBX подобными системами Context по умолчанию from-internal

Action: Redirect
Channel: %channel_name%
Context: from-internal
Exten: %ext%
Priority: 1
Callerid: "%ext%"<%username%>

Прямые ссылки на запись разговора
Необходимо создать в директории /var/www/html/ «символьную» ссылку к директории с записями разговоров Asterisk:

cd /var/www/html/
ln -s /var/spool/asterisk/monitor
Обратите внимание, что прямые ссылки должны быть защищенными, т.е. https.
Для этого потребуется выполнить установку сертификата на сервер.

В противном случае - встроенные в веб-страницу плееры работать не будут (из за соображений безопасности браузеров)
Запуск приложения
Запусить ПО Telefum.Online коммандой:

cd ./toapi_server
./pbxserver_autorun
В результате, вы должны получить ответ приложения о ходе подключения

localhost# /toapi_server/pbxserver_autorun
pbxserver1_run - started
Start new testserver1 process

HELLO WORLD
timezone_diff = 0
curtime - 15:22:16
./testserver1
/api/makecall
/api/transfer_call
/api/hangup_call
mysql -u freepbxuser -p pass123
MySQL client version: 5.5.52-MariaDB
AMI: admin AMIuserpassword
Asterisk Call Manager/2.8.0
Response: Success
Message: Authentication accepted

TO callback connected
Server started on port: 9500

localhost# pbxserver2_run - started
Start new testserver2 process

HELLO WORLD
timezone_diff = 0
mysql -u freepbxuser -p pass123
MySQL client version: 5.5.52-MariaDB
4148
Server started on port: 9000

Далее необходимо подключить Asterisk к Telefum24.
Обновление приложения ./toapi_server
Сначала нужно остановить текущую программу:

killall pbxserver1_run; killall testserver1; killall pbxserver2_run; killall testserver2
Или запустить скрипт:

/usr/src/telefum/toapi_server/stop_pbxserver
Потом, также как при установке, скачать приложение-предустановщик и запустить его (пример для Centos):

cd /usr/src/telefum &&
wget http://telefum.com/EugenyData/webserver/redhat_pbx/torun_script &&
chmod 755 torun_script &&
./torun_script &&
chmod 755 toservice_run
Запустить установщик:

./toservice_run
И запустить приложение:

./pbxserver_autorun