Configure your VOIP Asterisk server for Odoo - Odoo 11.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 конфигурация должна быть выполнена в настройках пользователя.

Расширение SIP Login/Browser's Extension - это номер, который вы предварительно настроили в файле sip.conf. В нашем примере 1060. Пароль SIP - пароль, который вы выбрали в файле sip.conf. Расширение телефона вашего офиса не является обязательным, но оно используется, если вы хотите перевести свой вызов с Odoo на внешний телефон, также настроенный в файле sip.conf.

Конфигурация также должна быть выполнена в настройках продажи под заголовком "PBX Configuration". Вам нужно указать IP-адрес, указанный вами в файле http.conf, а WebSocket должен быть: ws://127.0.0.1:8088/ws. Часть "127.0.0.1" должна быть такой же, как ранее определенный IP-адрес, а "8088" - это порт, который вы определили в файле http.conf.