Configure your VOIP Asterisk server for Odoo - Odoo 12.0

Установка сервера 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.