WebRTCで動作するようにアスタリスクをインストールして構成する



ネットワークにはトピックに関する多くの情報と指示がありますが、現時点ではそれらはもはや関連性がなく、非常に複雑です。 多くの場合、 webrtc2sipが使用されますが、アセンブルして動作させるのは非常に困難です。 カットの下で、アスタリスクを介してWebRTCを機能させる方法について詳細な手順を書きました。



1.システムの準備(ubuntu 14.04)


更新する

aptitude update && aptitude upgrade -y
      
      







アスタリスクのバージョン12をダウンロードします。

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







アスター付きのパッケージには、すべての依存関係をインストールするスクリプトがあります。最初に、それを使用してみます。

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





私の場合、スクリプトは多くの競合を引き起こし、ubuntu 64があり、スクリプトは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
      
      







このシステムでは、webrtcをサポートするアスタリスクをインストールする準備ができています。



アスタリスクをインストールする




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







メニューでアスタリスクがあるかどうかを確認する必要があります



チャネルドライバー-> chan_pjsipおよびchan_sip

リソースモジュール-> res_srtp、res_crypto、res_http_websocket



すべてが存在する場合は続行し、存在しない場合は依存関係を再度チェックします。



 make && make install && make samples
      
      







証明書を生成します。



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





スクリプトは、証明書のパスワード(4文字以上)を設定するよう要求します。



インストールが完了しました。設定に進みます。



カスタマイズ




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=101badpassword [102](webrtc) defaultusername=102 secret=102badpassword [103](webrtc) defaultusername=103 secret=103badpassword [104](webrtc) defaultusername=104 secret=104badpassword [105](webrtc) defaultusername=105 secret=105badpassword [106](webrtc) defaultusername=106 secret=106badpassword
      
      







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()
      
      







テスト中




テストには、 sipml5.org / call.htmサーバーからHTML5 sipクライアントを使用するか、サーバーにインストールします。



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







現在、サーバーwebrtc.pbxware.ru/sipml5/call.htmで HTML5 web sipクライアントを使用できます

カスタマイズ



表示名:web1

プライベートID *:101

パブリックID *:sip:101@webrtc.pbxware.ru

パスワード:101badpassword

レルム*:webrtc.pbxware.ru





エキスパートモードで

WebSocketサーバーURL [2]:ws://webrtc.pbxware.ru:8088 / ws

ICEサーバー[4]:[{url: 'stun:stun.l.google.com:19302'}]





テスト中




2台のラップトップ間の通話:



Android呼び出し(クローム)







通話履歴

 webrtc*CLI> == Using SIP VIDEO CoS mark 6 == Using SIP RTP CoS mark 5 -- Executing [104@from-internal:1] NoOp("SIP/103-00000020", "webrtc test call") in new stack -- Executing [104@from-internal:2] Dial("SIP/103-00000020", "SIP/104") in new stack == Using SIP VIDEO CoS mark 6 == Using SIP RTP CoS mark 5 -- Called SIP/104 -- SIP/104-00000021 is ringing webrtc*CLI> -- SIP/104-00000021 answered SIP/103-00000020 -- Channel SIP/103-00000020 joined 'simple_bridge' basic-bridge <13742dcb-5019-4fd2-b85e-0e1b70b1ccd7> -- Channel SIP/104-00000021 joined 'simple_bridge' basic-bridge <13742dcb-5019-4fd2-b85e-0e1b70b1ccd7>
      
      







 webrtc*CLI> sip show channels Peer User/ANR Call ID Format Hold Last Message Expiry Peer 91.203.82.152 104 0a9b261a3926a75 (ulaw|vp8) No Tx: ACK 104 91.203.82.152 103 3f8b4b42-600d-8 (ulaw|vp8) No Rx: ACK 103
      
      







テストが実施されました

chrome 37.0.2062.94-音声、ビデオ、DTMFに対応。

android chrome 37.0.2062.117-音声、ビデオ、DTMFが動作します。

Firefox 32.0-実行中の音声、DTMF。 ビデオは一方向にしか機能しません。



PSこれでサーバーが機能します。WebRTCの動作を呼び出して確認できます。



All Articles