WebRTC: Asterisk 13 + Sipml5

WebRTC (Web Real Time Communication (веб-коммуникация в режиме реального времени)) — это открытый стандарт для внедрения возможностей передачи потоковых данных в реальном времени непосредственно в веб-браузере или через другие поддерживающие его приложения по технологии точка-точка. WebRTC поддерживается в Google Chrome, Mozilla Firefox и Opera.

Для осуществления вызовов из браузера используется специальное приложение (SIP-клиент для браузера) - SIPML5. Приложение написано на Javascript и позволяет использовать браузер в качестве VoIP телефона.

Мы будем использовать:

  • Centos 6.6
  • Asterisk 13
  • sipML5

Первым делом обновим нашу систему:

yum update

Установим необходимые пакеты:

yum install gcc-c++ make gnutls-devel kernel-devel libxml2-devel ncurses-devel subversion doxygen texinfo curl-devel net-snmp-devel neon-devel uuid-devel libuuid-devel sqlite-devel sqlite git speex-devel gsm-devel

Если хотите быстро установить все зависимости для Asterisk, то можно перейти в /usr/src/asterisk-13.3.2/contrib/scripts/ и выполнить команды:

./install_prereq install
./install_prereq install-unpackaged

Если хотите все сделать вручную, то переходим в папку /usr/src/ и скачиваем Asterisk, libsrtp,jansson, pjproject.

wget http://srtp.sourceforge.net/srtp-1.4.2.tgz
wget http://www.digip.org/jansson/releases/jansson-2.5.tar.gz
wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-13-current.tar.gz
wget http://www.pjsip.org/release/2.2.1/pjproject-2.2.1.tar.bz2
Устанавливаем libsrtp:

tar zxvf srtp-1.4.2.tgz
cd srtp
autoconf
./configure
make
make install
cp /usr/local/lib/libsrtp.a /libcd ..

Устанавливаем библиотеку pjproject. Для х64 систем папка должна быть «–libdir=/usr/lib64», а для x32 «–libdir=/usr/lib».

cd /usr/src
tar -xjvf pjproject-2.2.1.tar.bz2
cd pjproject-2.2.1
CFLAGS='-DPJ_HAS_IPV6=1' ./configure --prefix=/usr --enable-shared --disable-sound\
--disable-resample --disable-video --disable-opencore-amr --libdir=/usr/lib
make dep
make
make install

Устанавливаем Jansson. Для х64 систем папка должна быть «–libdir=/usr/lib64», а для x32 «–libdir=/usr/lib».

tar zxvf jansson-2.5.tar.gz
cd jansson-2.5
./configure --libdir=/usr/lib
make
make install
cd ..

Устанавливаем Asterisk. Для х64 систем папка должна быть «–libdir=/usr/lib64», а для x32 «–libdir=/usr/lib»

tar –xzvf asterisk-13-current.tar.gz
cd /usr/src/asterisk-13.1.0 && make clean
./configure --libdir=/usr/lib --with-crypto --with-ssl --with-srtp=/usr/lib
contrib/scripts/get_mp3_source.sh
make menuselect
make
make install
make samples
make config
chkconfig asterisk on

Теперь нам нужно сгенерировать сертификаты:

mkdir /etc/asterisk/keys
cd /usr/src/asterisk-13.1.0/contrib/scripts
/ast_tls_cert -C voipnotes.ru -O "Voipnotes" -d /etc/asterisk/keys

В процессе генерации скрипт попросит вас установить пароль на сертификат.

Установка закончена, теперь нам нужно отредактировать конфигурационные (sip.conf, http.conf, rtp.conf, extensions.conf) файлы Asterisk.

Первым делом переходим в /etc/asterisk/sip.conf, и в секции [general] расскоментируем и добавим следующие параметры:

[general]
udpbindaddr=0.0.0.0:5060
realm= например voip.voipnotes.ru
transport=udp,ws

; добавим пару номеров для Web-клиентов

[800]
host=dynamic
secret=YouPassword
context=from-internal
type=friend
encryption=yes
avpf=yes
icesupport=yes
directmedia=no
disallow=all
allow=ulaw
allow=alaw
dtlsenable=yes
dtlsverify=fingerprint
dtlscertfile=/etc/asterisk/keys/asterisk.pem
dtlscafile=/etc/asterisk/keys/ca.crt
dtlssetup=actpass

[801]
host=dynamic
secret=YouPassword
context=from-internal
type=friend
encryption=yes
avpf=yes
icesupport=yes
directmedia=no
disallow=all
allow=ulaw
allow=alaw
dtlsenable=yes
dtlsverify=fingerprint
dtlscertfile=/etc/asterisk/keys/asterisk.pem
dtlscafile=/etc/asterisk/keys/ca.crt
dtlssetup=actpass

Переходим в /etc/asterisk/http.conf и в секции [general] расскоментируем и добавим следующие параметры:

[general]
enabled=yes
bindaddr=0.0.0.0
bindport=8088

Переходим в /etc/asterisk/rtp.conf и в секции [general] расскоментируем и добавим следующие параметры:

[general]
rtpstart=10000
rtpend=20000
icesupport=yes
stunaddr=stun.l.google.com:19302

Переходим в /etc/asterisk/extensions.conf и настраиваем Dialplan:

[from-internal]

exten => 8XX,1,Answer()
same => n,DIAL(SIP/${EXTEN})
same => n,Hangup()

Основную часть работы мы сделали, осталось только установить и настроить sipml5.

Установим sipml5 к себе на сервер:

cd /var/www/html/
svn checkout http://sipml5.googlecode.com/svn/trunk/ sipml5
chown -R asterisk:asterisk /var/www/html/sipml5

Теперь sipml5 установлен на вашем сервере. В браузере переходим по ссылке http://IP-адрес вашего сервера/sipml5/call.htm (в нашем случае https://voip.voipnotes.ru/sipml5/call.htm)

Настраиваем приложение:

Display Name: Отображаемое имя

Private Identity*: Внутренний номер

Public Identity*: sip: внутренний номер @ ip-адрес или доменное имя сервера, где установлен Asterisk

Password: Пароль

Realm*: ip-адрес или доменное имя сервера, где установлен Asterisk

Нажимаем Expert mode и выполняем следующие настройки:

в Expert mode

WebSocket Server URL[2]: ws://webrtc.pbxware.ru:8088/ws

ICE Servers[4]: [{ url: 'stun:stun.l.google.com:19302'}]

Сохраняемся, логинимся, настраиваем второй номер, и теперь можем совершать вызовы между двумя web-клиентами.

Сейчас на сайте

Сейчас на сайте 0 пользователей и 0 гостей.