Установка сервера Asterisk
Зависимости
Перед установкой Asterisk вам необходимо установить следующие зависимости:
- wget
- gcc
- g++
- ncurses-devel
- libxml2-devel
- sqlite-devel
- libsrtp-devel
- libuuid-devel
- openssl-devel
- pkg-config
Чтобы установить libsrtp, выполните следующие действия:
cd /usr/local/src/
wget http://srtp.sourceforge.net/srtp-1.4.2.tgz
tar zxvf srtp-1.4.2.tgz
cd /usr/local/src/srtp
./configure CFLAGS=-fPIC --prefix=/usr/local/lib
make && make install
Вам также необходимо установить PJSIP, вы можете загрузить его здесь. Как только архив с исходниками будет разархивирован:
Перейдите в каталог с исходниками pjproject:
# cd pjproject
запустите:
# ./configure --prefix=/usr --enable-shared --disable-sound --disable-resample --disable-video --disable-opencore-amr CFLAGS='-O2 -DNDEBUG'
Соберите и установите pjproject:
# make dep
# make
# make install
- Update shared library links:
# ldconfig
Убедитесь, что pjproject установлен:
# ldconfig -p | grep pj
Результат должен быть:
libpjsua.so (libc6,x86-64) => /usr/lib/libpjsua.so
libpjsip.so (libc6,x86-64) => /usr/lib/libpjsip.so
libpjsip-ua.so (libc6,x86-64) => /usr/lib/libpjsip-ua.so
libpjsip-simple.so (libc6,x86-64) => /usr/lib/libpjsip-simple.so
libpjnath.so (libc6,x86-64) => /usr/lib/libpjnath.so
libpjmedia.so (libc6,x86-64) => /usr/lib/libpjmedia.so
libpjmedia-videodev.so (libc6,x86-64) => /usr/lib/libpjmedia-videodev.so
libpjmedia-codec.so (libc6,x86-64) => /usr/lib/libpjmedia-codec.so
libpjmedia-audiodev.so (libc6,x86-64) => /usr/lib/libpjmedia-audiodev.so
libpjlib-util.so (libc6,x86-64) => /usr/lib/libpjlib-util.so
libpj.so (libc6,x86-64) => /usr/lib/libpj.so
Asterisk
Чтобы установить Asterisk 13.7.0, вы можете напрямую загрузить источник здесь.
Разархивируйте Asterisk:
tar zxvf asterisk*
Войдите в каталог Asterisk:
cd ./asterisk*
Запустите сценарий настройки Asterisk:
./configure --with-pjproject --with-ssl --with-srtp
Запустите инструмент menuselect Asterisk:
make menuselect
В menuselect перейдите к параметру ресурсов и убедитесь, что параметр res_srtp включен. Если рядом с res_srtp есть 3x, это значит, что есть проблема с библиотекой srtp, и вы должны переустановить ее. Сохраните конфигурацию (нажмите x). Вы также должны видеть звезды перед линиями res_pjsip.
Скомпилируйте и установите Asterisk:
make && make install
Если вам нужны примеры конфигураций, вы можете запустить [UNKNOWN NODE title_reference] для установки образцов конфигураций. Если вам нужно установить сценарий запуска Asterisk, вы можете запустить 'make config'.
Сертификаты DTLS
После установки сертификатов DTLS.
mkdir /etc/asterisk/keys
Войдите в каталог сценариев Asterisk:
cd /asterisk*/contrib/scripts
Создайте сертификаты DTLS (замените pbx.mycompany.com на ваш IP-адрес или имя DNS, замените My Super Company на название вашей компании):
./ast_tls_cert -C pbx.mycompany.com -O "My Super Company" -d /etc/asterisk/keys
Настройка сервера Asterisk
Для WebRTC многие необходимые настройки ДОЛЖНЫ быть в настройках одноранговых узлов. Глобальные настройки не очень хорошо хранить в peer settings. По умолчанию файлы конфигурации Asterisk находятся в /etc/asterisk/. Начните с редактирования http.conf и убедитесь, что следующие строки раскомментированы:
;http.conf
[general]
enabled=yes
bindaddr=127.0.0.1 ; Replace this with your IP address
bindport=8088 ; Replace this with the port you want to listen on
Затем отредактируйте файл sip.conf. Для одноранговой сети WebRTC необходимо включить шифрование, avpf и icesupport. В большинстве случаев directmedia следует отключить. Также под клиентом WebRTC транспорт должен быть указан как «ws», чтобы разрешать соединения с веб-сайтами. Все эти строки конфигурации должны находиться под самим peer; Установка этих конфигурационных строк глобально может не работать:
;sip.conf
[general]
realm=127.0.0.1 ; Replace this with your IP address
udpbindaddr=127.0.0.1 ; Replace this with your IP address
transport=udp
[1060] ; This will be WebRTC client
type=friend
username=1060 ; The Auth user for SIP.js
host=dynamic ; Allows any host to register
secret=password ; The SIP Password for SIP.js
encryption=yes ; Tell Asterisk to use encryption for this peer
avpf=yes ; Tell Asterisk to use AVPF for this peer
icesupport=yes ; Tell Asterisk to use ICE for this peer
context=default ; Tell Asterisk which context to use when this peer is dialing
directmedia=no ; Asterisk will relay media for this peer
transport=udp,ws ; Asterisk will allow this peer to register on UDP or WebSockets
force_avp=yes ; Force Asterisk to use avp. Introduced in Asterisk 11.11
dtlsenable=yes ; Tell Asterisk to enable DTLS for this peer
dtlsverify=no ; Tell Asterisk to not verify your DTLS certs
dtlscertfile=/etc/asterisk/keys/asterisk.pem ; Tell Asterisk where your DTLS cert file is
dtlsprivatekey=/etc/asterisk/keys/asterisk.pem ; Tell Asterisk where your DTLS private key is
dtlssetup=actpass ; Tell Asterisk to use actpass SDP parameter when setting up DTLS
В файлах sip.conf и rtp.conf вам также необходимо добавить или раскомментировать строки:
icesupport = true
stunaddr = stun.l.google.com:19302
Наконец, настройте extensions.conf:
;extensions.conf
[default]
exten => 1060,1,Dial(SIP/1060) ; Dialing 1060 will call the SIP client registered to 1060
Настройка Odoo VOIP
В Odoo конфигурация должна быть выполнена в настройках пользователя.
- The SIP Login/Browser's Extension is the number you configured previously in the sip.conf file (in our example: 1060).
- The SIP Password is the secret you chose in the sip.conf file.
- The extension of your office's phone is not a required field but it is used if you want to transfer your call from Odoo to an external phone also configured in the sip.conf file.
The configuration should also be done in the General Settings under the "Integrations" section.
- The PBX Server IP should be the same as the IP you define in the http.conf file.
- The WebSocket should be: ws://localhost:XXXX/ws where "localhost" needs to be the same as the IP defined previously and "XXXX" needs to be the port defined in the http.conf file.