Установка и настройка FusionPBX

Поиск файлов

 find / -name pg_hba.conf -type f 2>/dev/null

Ставим Freeswich 1.6.20 64 bit

+ FusionPBX 4.4.2 64 bit

на Centos 7 Linux 3.10.0-862.14.4.el7.x86_64.


Предварительно установил bind, openvpn и т.д. по аналогии с установкой Issabel.

 

Схема сети:

При такой схеме доступ к настройке телефонов и шлюза Goip4 из сети №2 не возможен. Если наблюдаются проблемы в  сети №2, в которой находятся компьютеры, то сеть №1, в которой все телефоны и шлюз, продолжает работать.

В нашем случае софтофоны из сети №2 будут звонить на телефоны из сети №1 бех дополнительных настроек. У нас один домен Freeswitch, с именем не равным его IP адресу.

Настраиваем Grandstream для доступа к АТС из сети интернет по OpenVPN


Документация на FusionPBX

Устанавливаем samba, меняем hostname.

Предварительно включаем FirewallD, скрипт установки дополнит его своими правилами.

yum install wget
wget -O - https://raw.githubusercontent.com/fusionpbx/fusionpbx-install.sh/master/centos/pre-install.sh | sh

затем

cd /usr/src/fusionpbx-install.sh/centos && ./install.sh

Сохраняем полученный пароль после установки и перезагружаем

reboot

Если что то пошло не так, можно заново запустить скрипт установки и получить чистую конфигурацию.


Я запустил еще кэширующий DNS и добавил правила для FirewallD

firewall-cmd --list-all
firewall-cmd --permanent --add-port=53/tcp
firewall-cmd --permanent --add-port=53/udp
firewall-cmd --reload

Полезные команды для работы с Freeswich:

Смотрим порты

netstat -ltupn | grep freeswi

Смотрим список сервисов

systemctl list-units --type service --all –

Поиск файлов

 find / -name pg_hba.conf -type f 2>/dev/null

Скрипт для резервного копирования лежит в

cd /usr/src/fusionpbx-install.sh/centos/resources/backup/

Для его запуска меняем внутри пароль к базе данных (его можно посмотреть в /etc/fusionpbx/config.php)

./fusionpbx-backup.sh

Резервная копия создается в папке

/var/backups/fusionpbx/

Поднимаем второй сетевой интерфейс

ifconfig enp1s0 192.168.0.206 up

 

Загрузка консоли Freeswich

fs_cli

В консоли Freeswich работают функциональные клавиши F1,F2…..

Ctrl+D       – выход из консоли

Посмотреть значения переменных :

fs_cli -x 'global_getvar'| grep _dir

Перед настройкой шлюзов – добавляем в ACL адреса sipnet.ru и zadarma.com:

Меняем локализацию в меню и настройках на ru-ru


В домене выставляем локализацию для русского языка:

Добавляем переменную 

Категория - domain

Подкатегория - language

Тип - code

Значения - выбираем ru-ru

Настройка шлюза с sipnet.ru:

Исходящие на sipnet набираются с двумя решетками – ##XXXXXXXXX

 


Настройка шлюза с zadarma.com:

Аналогично sipnet, только меняем

Прокси

В плане набора – указываем 6 цифр


Настройка шлюза Goip4

Профиль берем Internal, у нас авторизация по IP, а шлюз находится во внутренней сети №1.

Добавляем внутренний номер 1000, указанный в настройке шлюза

В направлении добавляем

Ну и диалплан для входящих

Для исходящих, с заменой +7 на 8

Выражение для замены #XXXXXXX на номер XXXXXXX  ^#(\d{7})$

в переменной типа bridge указываем перед $1 какие цифры надо подставить.


Для проверки регулярных выражений PCRE можно использовать  https://regex101.com/


Goip4 отображается в списке SIP- без регистрации NOREG

Настроен в режиме Trunk Gateway Mode, если установить параметр Re-register Period (s) равным 0, то регистрация идет по IP, если отличное от 0 то с именем и паролем.

Смотрим статус:

2 номера настроены для входящих, все для исходящих.


Настройка Grandstream GXP1615-GXP1620

Вся история связана с тем, чтобы зарегистрировать телефон по имени домена, а не по IP адресу

 

Здесь 192.168.137.106 – как раз IP адрес DNS сервера, который на запрос имени FSATS вернет ее IP адрес.

настройки сети для GXP1615 -стандартная DHCP


В настройках софтофонов вместо IP адреса указываем имя АТС  – FSATS


Настройка профиля internal на 1 внутреннюю сеть в домене fsats

1,2,3,4,5

Настройка профиля internal на 2 внутреннюю сеть в домене fsats

1,2,3,4,5

После этого звонки будут ходить между двумя сетями, как в одной сети.


В меню Шлюзы стартуем шлюзы

В меню: статусе SIP стартуем профили


В консоли наблюдаем ошибки вида:

[ERR] mod_sndfile.c:204 Error Opening File [/usr/share/freeswitch/sounds/ru/ru/elena/voicemail/vm-listen_to_recording.wav] [System error : No such file or directory.]

Исправляем переписыванием не достающих файлов и установки прав на них

Установка прав на добавленные звуковые файлы

chown -R freeswitch:daemon /usr/share/freeswitch/sounds/ru/RU/elena
chmod -R 770 /usr/share/freeswitch/sounds/ru/

В профиле  internal выставляем

<param name="log-auth-failures" value="false"/>
Для отключения лишних сообщений в консоли.

Кодек iLBC не запустился из коробки, отключаем в меню – Модули.

Ошибка

 Error Loading module /usr/lib64/freeswitch/mod/mod_ilbc.so
**/usr/lib64/freeswitch/mod/mod_ilbc.so: undefined symbol: ilbc_decode**

Подключение к ESL

Правим файл /etc/freeswitch/autoload_configs/event_socket.conf.xml

<param name=”apply-inbound-acl” value=”lan”/>


Мультифон и FusionPBX

Можно подключить мультифон к астериск, а астериск транком к freeswitch

Через USSD команду *137# включаем Multifon

Через строку в запросе выставляем режим работы

https://sm.megafon.ru/sm/client/routing/set?login=7927NOMER@multifon.ru&password=PASSWORD&routing=2

0 = Только GSM

1 = Только ПК

2 = ПК и GSM

В ответ придет xml с кодом 200 OK или ошибка.

Надо запустить пару раз с разными кодами (прочитано из форумов) например с кодом 0, а затем с кодом 2 !!! Заодно убеждаемся в правильности пароля.

Создаем шлюз для каждого номера:

Имя пользователя                     7927NOMER
Пароль                               PASSWORDMULTIFON
От пользователя                      7927NOMER
From domain                          multifon.ru
Прокси                               multifon.ru
Область (realm)                      sbc.multifon.ru
Имя Пользователя для авторизации     7927NOMER
Время жизни регистрации              120
Повтор попытки регистрации           60
Регистрация                          Да
Прокси-сервер регистрации            sbc.multifon.ru
Исходящий прокси-сервер              sbc.multifon.ru
Идентификатор вызывающего абонента   да
Подавление CNG                       да
SIP идентификатор CID вызывающего    да
Домен                                глобальный
Контекст                             public
Профиль                              external

В маршрутизации входящих условие – destination_number = 7927NOMER

Проверяем регистрацию: Статус-Статус SIP

Если ее нет – смотрим вывод sngrep

 


Чтобы посмотреть список записей и вызовов в прилинкованом сервере PostgreSQL на сервере MSSQL

FS – имя прилинкованого сервера PostgreSQL

fusionpbx – имя базы на сервере PostgreSQL

выполняем:

DECLARE @SQLtext nvarchar(max)
SET @SQLtext = 'select * from fusionpbx.public.v_call_recordings'
SET @SQLtext = 'SELECT * FROM OPENQUERY(FS, '+ CHAR(39) + @SQLtext + CHAR(39) +') AS derivedtbl_1'

insert #dataset exec (@SQLtext) - если создана таблица #dataset
или просто
exec (@SQLtext)

-- можно и так

select * from FS.fusionpbx.[public].[v_countries]

Резервная копия и восстановление 

Прохождение звонка

Продолжение