====== FreePBX ====== * [[http://val.bmstu.ru/unix/voip/Rukovodstvo_Administratora_FreePBX_na_russkom_yazyke.pdf|FreePBX 13 руководство]] ===== Установка ===== * [[https://downloads.freepbxdistro.org/ISO/SNG7-PBX16-64bit-2302-1.iso]] Новый образ FreePBX ==== Подготовка VM ==== * Память от 2Gb * https://www.freepbx.org/downloads/ * https://www.asterisk.org/downloads/ ==== Настройка сети ==== * При наличии вебинаристов использовать сеть 172.16.1.0/24 * Настройка сети в Linux [[Настройка сети в Linux#Файлы конфигурации CentOS/SL/RHEL]] или # ifconfig eth0 inet 172.16.1.100+X/24 # route add default gw 172.16.1.254 # echo "nameserver 172.16.1.254" > /etc/resolv.conf * При проблемах со звуком, помогает рестарт asterisk [root@freepbx ~]# ps ax | grep ast [root@freepbx ~]# kill NNNN [root@freepbx ~]# service asterisk start Работает вариант: freepbx*CLI> core restart now ==== Процесс начальной конфигурации ==== * В визарде все ответы по умолчанию (Skip или Yes) * [[https://wiki.freepbx.org/pages/viewpage.action?pageId=37912685#fwconsolecommands(13+)-Unlock|unlock the GUI login of FreePBX to let you into the FreePBX GUI without the username and password]] * !!! Большая пауза в конфигурационном визарде для загрузки русских семплов (в настоящее время не доступны) Username: admin Password: Pa$$w0rd Admin Email address: userX@isp.un ==== Отключение Firewall ==== * Можно оставить Connectivity - Firewall - Disable Firewall * !!! в методических целях - обязательно # systemctl stop fail2ban ===== Базовая конфигурация ===== Settings - Asterisk SIP Settings External Address: 172.16.1.100+X Local Networks: 172.16.0.0 / 16 Local Networks: 10.0.0.0 / 8 ===== Управление телефонными номерами и пользователями ===== * [[https://wiki.freepbx.org/display/FPG/Bulk+Handler+User+Guide|Bulk Handler User Guide]] * !!! Проверить для новых версий FreePBX, может не работать Application-Extensions Add Extensions -> PJSIP User Extension: 402 Display Name: Petr Petrov Secret: tpassword402 Link to a Default User: Create New User Username: user2 Use Custom Username Password For New User: password2 C:\> cd Documents C:\> notepad extensions.csv extension,name,secret 401,Ivan Ivanov,tpassword401 403,Sidor Sidorov,tpassword403 C:\> notepad users.csv username,password,default_extension user1,password1,401 user3,password3,403 Admin -> Bulk Handler !!! Не включает в группу All Users, приходится "вручную" для доступа к UCP ===== Звонки в "город" ===== * !!! Могут быть проблемы с голосом, помогает потребуется перезагрузка всей системы (попробовать перезагрузить сервис asterisk) Connectivity -> Trunks Add Trunk -> Add...pjsip... Trunk Name: PSTN Outbound CallerID: 8495NNNNNNN Username: 00000X Secret: spasswordX SIP Server: voip1.un Contact User: 8495NNNNNNN From Domain: voip1.un From User: 00000X Connectivity -> Outbound Routes Route Name: ToPSTN Trunk Sequence for Matched Routes: PSTN Dial Patterns (match pattern): 8XXXXXXXXXX Connectivity -> Inbound Routes Description: FromPSTN DID Number: 8495NNNNNNN Set Destination: Ext 403 ===== Звонки в "соседний офис" ===== Connectivity -> Trunks Add Trunk -> Add...iax2... Trunk Name: CORP Outbound CallerID: 013401 iax Settings Outgoing Trunk Name: corp_out PEER Details host=corp.un username=corp13 secret=apassword13 type=peer auth=md5 Incoming USER Context: corp USER Details: secret=apassword type=user host=dynamic auth=md5 Connectivity -> Outbound Routes Route Name: ToCORP Trunk Sequence for Matched Routes: CORP Dial Patterns prefix: 000 match pattern: XXX Connectivity -> Inbound Routes Description: FromCORP DID Number: _XXX Set Destination: Ext 401 ===== Интерфейс пользователя ===== http://172.16.1.100+X/ucp/ ===== Использование файлов конфигурации ===== * [[https://asterisk-pbx.ru/wiki/freepbx/custom_context|Во FreePBX предусмотрено использование пользовательских (custom) файлов]] * Admin -> Config Edit # cat /etc/asterisk/extensions_custom.conf exten => 301,1,Answer() exten => 301,n,Playback(hello-world) exten => 301,n,SayDigits(X) exten => 301,n,Hangup() [from101] ; no need, use DAHDI Channel exten => s,1,Dial(DAHDI/1,20) exten => s,n,Hangup()