Для осуществления вызовов из браузера используется специальное приложение (SIP-клиент для браузера) - SIPML5. Приложение написано на Javascript и позволяет использовать браузер в качестве VoIP телефона.
Мы будем использовать:
Первым делом обновим нашу систему:
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Устанавливаем libsrtp:
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
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-клиентами.