Связаться по:
vkarabedyants Telegram Viber
+7 (499) 350-10-69

Блог о системном администрировании серверов и сайтов

Установка, настройка программного обеспечения Linux, Windows операционных систем

Установка и настройка Asterisk для работы с WebRTC

Зачастую при настройке Asterisk и WebRTC используют webrtc2sip, но он довольно сложно устанавливается, и нужно потратить не мало сил, что бы заставить его работать так как нужно. В данной статье мы подробно рассмотрим как настроить WebRTC через Asterisk.

Подготавливаем ОС

Для установки будем использовать Ubuntu, для начала обновим все пакеты

aptitude update && aptitude upgrade -y

Далее скачиваем Asterisk с официального сайта, в нашем случае это версия 13, но вы можете использовать боле новую

cd /usr/src/ wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-13-current.tar.gz tar -zxvf asterisk-13-current.tar.gz

В сборке есть скрипт, который установит зависимости, которые необходимы, пробуем его запустить

cd asterisk-13.1.0/contrib/scripts/ ./install_prereq install

Возникла проблема при установке зависимостей, на моей Ubuntu x64 скрипт пытался ставить i386 пакеты. В таком случае, ставим зависимости руками.

aptitude install -y libncurses-dev libz-dev libssl-dev libxml2-dev libsqlite3-dev uuid-dev uuid libcurl-dev libspeex-dev libspeexdsp-dev libogg-dev libvorbis-dev libasound2-dev portaudio19-dev libcurl4-openssl-dev libpq-dev unixodbc-dev libsqlite0-dev libmysqlclient15-dev libneon27-dev libgmime-dev libusb-dev liblua5.1-0-dev lua5.1 libopenh323-dev libvpb-dev libgtk2.0-dev libmysqlclient-dev libbluetooth-dev libradiusclient-ng-dev freetds-dev libsnmp-dev libiksemel-dev libcorosync-dev libnewt-dev libpopt-dev libical-dev libspandsp-dev libjack-dev libresample-dev libc-client-dev binutils-dev libsrtp-dev libgsm1-dev libedit-dev doxygen libjansson-dev libldap-dev subversion git libxslt1-dev mc htop iftop

Список пакетов понятен, версии могут отличаться в зависимости от ОС и даты установки.

Попробуем еще раз использовать установочный скрипт для  libsrtp и pjproject — это нужные пакеты для webrtc

./install_prereq install-unpackaged

Мне повезло, установились без проблем, если у вас будут ошибки ставим вручную, таким образом:

cd /usr/src/ 
git clone https://github.com/cisco/libsrtp.git 
cd libsrtp ./configure CFLAGS=-fPIC && make libsrtp.a && make uninstall && make install 
cd .. 
echo "/usr/local/lib" > /etc/ld.so.conf.d/usr_local.conf 
/sbin/ldconfig 
git clone https://github.com/asterisk/pjproject.git 
cd pjproject 
./configure --enable-shared --with-external-speex --with-external-gsm --with-external-srtp --disable-sound --disable-resample && make && make install 
/sbin/ldconfig

Теперь все готово для установки и настройки Asterisk и WebRTC, выполняем

cd /usr/src/asterisk-13.1.0/ ./configure && make menuselect

Обращаем внимание на отмеченные звездочками:

Channel Drivers -> chan_pjsip и chan_sip
Resource Modules -> res_srtp, res_crypto и res_http_websocket

Если все ок, то ставим дальше, иначе возвращаемся к проверке зависимостей

make && make install && make samples

Генерим сертификаты:

mkdir /etc/asterisk/keys 
cd /usr/src/asterisk-13.1.0/contrib/scripts/ 
./ast_tls_cert -C pbx.pbxware.ru -O "ATC Design" -d /etc/asterisk/keys

Скрипт запросит установить пароль, пароль должен быть не меньше 4 символов.

Этап установки завершен, можно теперь настраивать.

Настройка Asterisk и WebRTC

Далее редактируем файл http.conf вносим такие изменения

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

rtp.conf

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

sip.conf

[general]
udpbindaddr=0.0.0.0:5060
realm=webrtc.pbxware.ru ; заменить на свой ИП или на доменное имя сервера с астериском.
transport=udp,ws
[webrtc](!)
host=dynamic
context=from-internal
type=friend
encryption=yes
avpf=yes
force_avp=yes
icesupport=yes
nat=force_rport,comedia
directmedia=no
disallow=all
qualify=yes
videosupport=yes
allow=ulaw,alaw,vp8,h264,h263p,mpeg4
dtlsenable=yes
dtlsverify=no
dtlscertfile=/etc/asterisk/keys/asterisk.pem
dtlscafile=/etc/asterisk/keys/ca.crt
dtlssetup=actpass

[101](webrtc)
defaultusername=101
secret=101password

[102](webrtc)
defaultusername=102
secret=102password

[103](webrtc)
defaultusername=103
secret=103password

[104](webrtc)
defaultusername=104
secret=104password

[105](webrtc)
defaultusername=105
secret=105password

[106](webrtc)
defaultusername=106
secret=106password

extensions.conf

[from-internal]
exten => 999,1,Answer()
same => n,Playback(demo-congrats)
same => n,Hangup()

exten => 888,1,Answer()
same => n,Echo()
same => n,Hangup()

exten => _XXX,1,Noop(webrtc test call)
same => n,DIAL(SIP/${EXTEN})
same => n,Hangup()

Тестируем Asterisk и WebRTC

Для теста используем HTML5 sip client, с сайта sipml5.org/call.htm или поставим его на сервер

aptitude install apache2 
cd /var/www/html/ 
svn checkout http://sipml5.googlecode.com/svn/trunk/ sipml5

В таком случае веб HTML5 sip клиент будет доступен с нашего  сервера webrtc.pbxware.ru/sipml5/call.htm, в настройках введем следующее:

Display Name: web1
Private Identity*: 101
Public Identity*: sip:[email protected]
Password: 101password
Realm*: webrtc.pbxware.ru


в Expert mode
WebSocket Server URL[2]: ws://webrtc.pbxware.ru:8088/ws
ICE Servers[4]: [{ url: 'stun:stun.l.google.com:19302'}]

Проверяем, позвонив на другой ПК

webrtx

Далее пробуем звонить на телефон на Android

Asterisk webrtxwebrtx-2

Информация о звонке из журнала

log-webrtx

log-webrtx-2

Если у Вас не получилось настроить, обращайтесь [email protected] — установка, настройка и подержка IP телефонии

Оставить комментарий

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.