Установка и настройка Asterisk для работы с WebRTC
Зачастую при настройке Asterisk и WebRTC используют webrtc2sip, но он довольно сложно устанавливается, и нужно потратить не мало сил, что бы заставить его работать так как нужно. В данной статье мы подробно рассмотрим как настроить WebRTC через Asterisk.
Подготавливаем ОС
Для установки будем использовать Ubuntu, для начала обновим все пакеты
1 |
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
В сборке есть скрипт, который установит зависимости, которые необходимы, пробуем его запустить
1 |
cd asterisk-13.1.0/contrib/scripts/ ./install_prereq install |
Возникла проблема при установке зависимостей, на моей Ubuntu x64 скрипт пытался ставить i386 пакеты. В таком случае, ставим зависимости руками.
1 |
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
1 |
./install_prereq install-unpackaged |
Мне повезло, установились без проблем, если у вас будут ошибки ставим вручную, таким образом:
1 2 3 4 5 6 7 8 9 10 |
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, выполняем
1 |
cd /usr/src/asterisk-13.1.0/ ./configure && make menuselect |
Обращаем внимание на отмеченные звездочками:
1 2 |
Channel Drivers -> chan_pjsip и chan_sip Resource Modules -> res_srtp, res_crypto и res_http_websocket |
Если все ок, то ставим дальше, иначе возвращаемся к проверке зависимостей
1 |
make && make install && make samples |
Генерим сертификаты:
1 2 3 |
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 вносим такие изменения
1 2 3 4 |
[general] enabled=yes bindaddr=0.0.0.0 bindport=8088 |
rtp.conf
1 2 3 4 5 |
[general] rtpstart=10000 rtpend=20000 icesupport=yes stunaddr=stun.l.google.com:19302 |
sip.conf
1 2 3 4 |
[general] udpbindaddr=0.0.0.0:5060 realm=webrtc.pbxware.ru ; заменить на свой ИП или на доменное имя сервера с астериском. transport=udp,ws |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
[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
1 2 3 4 5 6 7 8 9 10 11 12 |
[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 или поставим его на сервер
1 2 3 |
aptitude install apache2 cd /var/www/html/ svn checkout http://sipml5.googlecode.com/svn/trunk/ sipml5 |
В таком случае веб HTML5 sip клиент будет доступен с нашего сервера webrtc.pbxware.ru/sipml5/call.htm, в настройках введем следующее:
1 2 3 4 5 6 7 8 9 10 |
Display Name: web1 Private Identity*: 101 Public Identity*: sip:101@webrtc.pbxware.ru 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'}] |
Проверяем, позвонив на другой ПК
Далее пробуем звонить на телефон на Android
Информация о звонке из журнала
Если у Вас не получилось настроить, обращайтесь [email protected] — установка, настройка и подержка IP телефонии