Зачастую при настройке Asterisk и WebRTC используют webrtc2sip, но он довольно сложно устанавливается, и нужно потратить не мало сил, что бы заставить его работать так как нужно. В данной статье мы подробно рассмотрим как настроить WebRTC через Asterisk.n
Подготавливаем ОС
Для установки будем использовать Ubuntu, для начала обновим все пакетыn
aptitude update && aptitude upgrade -y
Далее скачиваем Asterisk с официального сайта, в нашем случае это версия 13, но вы можете использовать боле новуюnncd /usr/src/ wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-13-current.tar.gz tar -zxvf asterisk-13-current.tar.gznnВ сборке есть скрипт, который установит зависимости, которые необходимы, пробуем его запуститьn
cd asterisk-13.1.0/contrib/scripts/ ./install_prereq install
Возникла проблема при установке зависимостей, на моей Ubuntu x64 скрипт пытался ставить i386 пакеты. В таком случае, ставим зависимости руками.n
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
Список пакетов понятен, версии могут отличаться в зависимости от ОС и даты установки.nnПопробуем еще раз использовать установочный скрипт для libsrtp и pjproject — это нужные пакеты для webrtcn
./install_prereq install-unpackaged
Мне повезло, установились без проблем, если у вас будут ошибки ставим вручную, таким образом:n
cd /usr/src/ ngit clone https://github.com/cisco/libsrtp.git ncd libsrtp ./configure CFLAGS=-fPIC && make libsrtp.a && make uninstall && make install ncd .. necho "/usr/local/lib" > /etc/ld.so.conf.d/usr_local.conf n/sbin/ldconfig ngit clone https://github.com/asterisk/pjproject.git ncd pjproject n./configure --enable-shared --with-external-speex --with-external-gsm --with-external-srtp --disable-sound --disable-resample && make && make install n/sbin/ldconfig
Теперь все готово для установки и настройки Asterisk и WebRTC, выполняемn
cd /usr/src/asterisk-13.1.0/ ./configure && make menuselect
Обращаем внимание на отмеченные звездочками:n
Channel Drivers -> chan_pjsip и chan_sipnResource Modules -> res_srtp, res_crypto и res_http_websocket
Если все ок, то ставим дальше, иначе возвращаемся к проверке зависимостейn
make && make install && make samples
Генерим сертификаты:n
mkdir /etc/asterisk/keys ncd /usr/src/asterisk-13.1.0/contrib/scripts/ n./ast_tls_cert -C pbx.pbxware.ru -O "ATC Design" -d /etc/asterisk/keys
Скрипт запросит установить пароль, пароль должен быть не меньше 4 символов.nnЭтап установки завершен, можно теперь настраивать.n
Настройка Asterisk и WebRTC
Далее редактируем файл http.conf вносим такие измененияn
[general] nenabled=yes nbindaddr=0.0.0.0 nbindport=8088
rtp.confn
[general]nrtpstart=10000nrtpend=20000nicesupport=yesnstunaddr=stun.l.google.com:19302
sip.confn
[general]nudpbindaddr=0.0.0.0:5060nrealm=webrtc.pbxware.ru ; заменить на свой ИП или на доменное имя сервера с астериском.ntransport=udp,ws
[webrtc](!)nhost=dynamicncontext=from-internalntype=friendnencryption=yesnavpf=yesnforce_avp=yesnicesupport=yesnnat=force_rport,comediandirectmedia=nondisallow=allnqualify=yesnvideosupport=yesnallow=ulaw,alaw,vp8,h264,h263p,mpeg4ndtlsenable=yesndtlsverify=nondtlscertfile=/etc/asterisk/keys/asterisk.pemndtlscafile=/etc/asterisk/keys/ca.crtndtlssetup=actpassnn[101](webrtc)ndefaultusername=101nsecret=101passwordnn[102](webrtc)ndefaultusername=102nsecret=102passwordnn[103](webrtc)ndefaultusername=103nsecret=103passwordnn[104](webrtc)ndefaultusername=104nsecret=104passwordnn[105](webrtc)ndefaultusername=105nsecret=105passwordnn[106](webrtc)ndefaultusername=106nsecret=106password
extensions.confn
[from-internal]nexten => 999,1,Answer()nsame => n,Playback(demo-congrats)nsame => n,Hangup()nnexten => 888,1,Answer()nsame => n,Echo()nsame => n,Hangup()nnexten => _XXX,1,Noop(webrtc test call)nsame => n,DIAL(SIP/${EXTEN})nsame => n,Hangup()n
Тестируем Asterisk и WebRTC
Для теста используем HTML5 sip client, с сайта sipml5.org/call.htm или поставим его на серверn
aptitude install apache2 ncd /var/www/html/ nsvn checkout http://sipml5.googlecode.com/svn/trunk/ sipml5
В таком случае веб HTML5 sip клиент будет доступен с нашего сервера webrtc.pbxware.ru/sipml5/call.htm, в настройках введем следующее:n
Display Name: web1nPrivate Identity*: 101nPublic Identity*: sip:[email protected]: 101passwordnRealm*: webrtc.pbxware.runnnв Expert modenWebSocket Server URL[2]: ws://webrtc.pbxware.ru:8088/wsnICE Servers[4]: [{ url: 'stun:stun.l.google.com:19302'}]n
Проверяем, позвонив на другой ПКn
n
Далее пробуем звонить на телефон на Android
n
n
Информация о звонке из журнала
n
n
nn
Если у Вас не получилось настроить, обращайтесь [email protected] — установка, настройка и подержка IP телефонии