zoukankan      html  css  js  c++  java
  • How to install Asterisk 13 with WebRTC support in CentOS

    How to install Asterisk 13 with WebRTC support in CentOS?

    Introduction
    This article is a guide to install Asterisk 13.10.0 with WebRTC Support in CentOS.
    Description
    I have gone through many articles to enable WebRTC support in Asterisk 11 and Asterisk 12 but I faced a alot of issues for WebRTC calling including No Audio, abrupt closing of web sockets etc. But I find Asterisk 13 more stable for WebRTC.

    Methodology
    Following is the step by step guide for installing Asterisk 13 with WebRTC Support.

    Step # 1
    First of install some of the dependencies of the Asterisk and WebRTC:
    Installing dependencies with yum.
    $ sudo yum update
    $ sudo yum groupinstall "Development tools" -y
    $ sudo yum install wget gcc gcc-c++ ncurses-devel libxml2-devel sqlite-devel libuuid-devel openssl-devel
    $ sudo yum install gcc-c++ make gnutls-devel kernel-devel subversion doxygen texinfo curl-devel net-snmp-devel neon-devel
    $ sudo yum install uuid-devel libuuid-devel sqlite-devel sqlite git speex-devel gsm-devel
    Install Secure RTP library from source:
    $ cd /usr/src/
    $ sudo wget http://srtp.sourceforge.net/srtp-1.4.2.tgz
    $ sudo tar zxvf srtp-1.4.2.tgz
    $ cd srtp*
    $ sudo autoconf
    $ sudo make && make install
    $ cp /usr/local/lib/libsrtp.a /lib
    Install jansson library from source:
    $ cd /usr/src
    $ sudo wget http://www.digip.org/jansson/releases/jansson-2.5.tar.gz
    $ sudo tar zxvf jansson-2.5.tar.gz
    $ cd jansson-2.5
    $ sudo ./configure --prefix=/
    $ sudo make && make install
    Install latest PjSIP libraries from source:
    $ cd /usr/src
    $ sudo git clone https://github.com/asterisk/pjproject
    $ cd pjproject
    $ sudo ./configure CFLAGS="-DNDEBUG -DPJ_HAS_IPV6=1" --prefix=/usr --libdir=/usr/lib64 --enable-shared --disable-video --disable-sound --disable-opencore-amr
    $ sudo make dep
    $ sudo make
    $ sudo  make install
    $ sudo ldconfig
    Verifying PjSIP libraries:
    $ sudo ldconfig -p | grep pj
    Step # 2
    Now we are going to install Asterisk 13 from source:
    $ sudo wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-13-current.tar.gz
    $ sudo tar -zxvf asterisk-13-current.tar.gz
    $ cd asterisk-13*
    $ sudo make clean
    $ sudo ./configure --with-crypto --with-ssl --with-srtp=/usr/local/lib --with-jansson=/
    $ sudo contrib/scripts/get_mp3_source.sh
    # Make sure that all required modules and resources i.e. res_pjsip are enabled.
    $ sudo make menuselect
    $ sudo make && make install
    $ sudo make samples
    $ sudo make config
    $ sudo chkconfig asterisk on
    Step # 3
    Now we are going to generate TLS certificates for secure socket connections in asterisk.
    $ sudo mkdir /etc/asterisk/keys
    $ cd /usr/src/asterisk-13*
    $ cd contrib/scripts
    # Add IP Address of Server at X.X.X.X
    $ sudo ./ast_tls_cert -C X.X.X.X -O "My Test Company" -d /etc/asterisk/keys
    Step # 4
    Now we have to configure Asterisk to run with WebRTC support:

    Edit rtp.conf file with following code:
    ;rtp.conf
    [general]
    rtpstart=10000
    rtpend=20000
    icesupport=yes
    stunaddr=stun.l.google.com:19302

    Edit res_stun_monitor.conf file with following code:
    ;res_stun_monitor.conf
    [general]
    stunaddr=stun.l.google.com:19302
    stunrefresh = 30

    Edit http.conf file with following code:
    ;http.conf
    [general]
    enabled=yes
    bindaddr=0.0.0.0
    bindport=8088
    tlsenable=yes
    tlsbindaddr=0.0.0.0:7443
    tlscertfile=/etc/asterisk/keys/asterisk.pem
    tlsprivatekey=/etc/asterisk/keys/asterisk.pem
    Edit sip.conf file with following code:
    ;sip.conf
    [general]
    udpbindaddr = 0.0.0.0:5060
    realm = X.X.X.X ; replace with your Server's Public IP Address
    transport = udp,ws,wss
    externaddr = X.X.X.X ; replace with your Server's Public IP Address
    websocket_enabled = true
    [1000]
    host=dynamic
    secret=12345
    context=from-internal
    type=friend
    encryption=yes
    avpf=yes
    ;force_avp=yes
    icesupport=yes
    directmedia=no
    disallow=all
    dial = SIP/1000
    disallow=all
    allow=ulaw
    allow=alaw
    allow=speex
    allow=gsm
    dtlsenable=yes
    dtlsverify=fingerprint
    dtlscertfile=/etc/asterisk/keys/asterisk.pem
    dtlscafile=/etc/asterisk/keys/ca.crt
    dtlssetup=actpass
    nat=force_rport,comedia
    [2000]
    host=dynamic
    secret=12345
    context=from-internal
    type=friend
    encryption=yes
    avpf=yes
    ;force_avp=yes
    icesupport=yes
    directmedia=no
    disallow=all
    dial = SIP/2000
    disallow=all
    allow=ulaw
    allow=alaw
    allow=speex
    allow=gsm
    dtlsenable=yes
    dtlsverify=fingerprint
    dtlscertfile=/etc/asterisk/keys/asterisk.pem
    dtlscafile=/etc/asterisk/keys/ca.crt
    dtlssetup=actpass
    nat=force_rport,comedia
    Edit extensions.conf file with following code:
    ;extensions.conf
    [from-internal]
    ; For Testing Audio
    exten => 1111,1,Answer()
    same => n,Playback(demo-thanks)
    same => n,Hangup()
    ; For testing SIP to SIP calling
    exten => _X.,1,Dial(SIP/${EXTEN})
    exten => _X.,n,Hangup()
    Step # 5
    So far, we have added all important configurations in Asterisk.
    Now we are going to start Asterisk:
    $ sudo service asterisk start
    Starting asterisk:
    $ sudo netstat -pln | grep asterisk                                                                                                                             
    tcp        0      0 0.0.0.0:2000                0.0.0.0:*                   LISTEN      21012/asterisk                                                                                    
    tcp        0      0 0.0.0.0:7443                0.0.0.0:*                   LISTEN      21012/asterisk                                                                                    
    tcp        0      0 0.0.0.0:8088                0.0.0.0:*                   LISTEN      21012/asterisk                                                                                    
    udp        0      0 0.0.0.0:4569                0.0.0.0:*                               21012/asterisk                                                                                    
    udp        0      0 0.0.0.0:5000                0.0.0.0:*                               21012/asterisk                                                                                    
    udp        0      0 0.0.0.0:2727                0.0.0.0:*                               21012/asterisk                                                                                    
    udp        0      0 0.0.0.0:4520                0.0.0.0:*                               21012/asterisk                                                                                    
    udp        0      0 0.0.0.0:57769               0.0.0.0:*                               21012/asterisk                                                                                    
    udp        0      0 0.0.0.0:5060                0.0.0.0:*                               21012/asterisk                                                                                    
    unix  2      [ ACC ]     STREAM     LISTENING     94199  21012/asterisk      /var/run/asterisk/asterisk.ctl
    $ sudo asterisk -vvvvr                                                                                                                                              
    Asterisk 13.10.0, Copyright (C) 1999 - 2014, Digium, Inc. and others.                                                                                                                     
    Created by Mark Spencer <markster@digium.com>                                                                                                                                             
    Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.                                                                                                        
    This is free software, with components licensed under the GNU General Public                                                                                                              
    License version 2 and other licenses; you are welcome to redistribute it under                                                                                                            
    certain conditions. Type 'core show license' for details.                                                                                                                                 
    =========================================================================                                                                                                                 
    Connected to Asterisk 13.10.0 currently running on Asterisk-13 (pid = 21012)    
    Asterisk-13*CLI> http show status                                                                                                                                                  
    HTTP Server Status:                                                                                                                                                                       
    Prefix:                                                                                                                                                                                   
    Server: Asterisk/13.10.0                                                                                                                                                                  
    Server Enabled and Bound to 0.0.0.0:8088                                                                                                                                                  
                                                                                                                                                                                                
    HTTPS Server Enabled and Bound to 0.0.0.0:7443                                                                                                                                            
                                                                                                                                                                                                
    Enabled URI's:                                                                                                                                                                            
    /httpstatus => Asterisk HTTP General Status                                                                                                                                               
    /phoneprov/... => Asterisk HTTP Phone Provisioning Tool                                                                                                                                   
    /static/... => Asterisk HTTP Static Delivery                                                                                                                                              
    /ari/... => Asterisk RESTful API                                                                                                                                                          
    /ws => Asterisk HTTP WebSocket                                                                                                                                                            
                                                                                                                                                                                                
    Enabled Redirects:                                                                                                                                                                        
      None.                  
                                                                                                        
    Asterisk-13*CLI> sip show peers
    Name/username             Host                                    Dyn Forcerport Comedia    ACL Port     Status      Description                                                          
    1000                      (Unspecified)                            D  Yes        Yes            0        Unmonitored                                                                      
    2000                      (Unspecified)                            D  Yes        Yes            0        Unmonitored                                                                      
    2 sip peers [Monitored: 0 online, 0 offline Unmonitored: 0 online, 2 offline]    

    It shows that Asterisk is running smoothly.
    Step # 6
    Now we are going to configure Web SIP Phone for calling:
    First of all open below link in your browser and add exception for your Server’s IP (replace X.X.X.X with your Server’s IP) in your browser:

    https://X.X.X.X:7443/httpstatus
    After successfully adding exception for your Server’s IP Address, you’ll see below page:


    We are using sipml5 for testing and below are its configurations:
    Open following URL to add your WebRTC and Server’s Information and then press the save button:
    SIPML5 Expert Mode
    Now open below link to add your Extension Information and press login button to register your extension:

    SIPML5 Phone Configurations


    Step # 7
    You can dial 1111 Extension which will Playback demo-thanks sound.
    If you have registered 1000 and 2000 Extensions on two machines then you can dial each other to test SIP to SIP calling.
    If your are concerned about the security of your SIP Server then you can following this Blog to secure your Asterisk Server.
    Email ThisBlogThis!Share to TwitterShare to Facebook

    Copyright
    https://blog.onesconsultants.com/2018/08/how-to-install-asterisk-13-with-webrtc.html

  • 相关阅读:
    VisualSVN 服务不能自动启动的问题
    "There is already an open DataReader associated with this Command which must be closed first"错误
    LINQ 中调用存储过程自动绑定列名
    vs2008中调试iis7.0托管的程序
    SQL SERVER 2005的一个怪问题: 在查询结果面板中编辑失败.
    在VS2003下把一个DataTable Update 到数据库
    帮人解决一个小问题:QQ空间登录时脚本错误造成无法登入
    关于Sys未定义错误
    多层母版页嵌套中, 内层母版页的事件默认不触发
    线程同步
  • 原文地址:https://www.cnblogs.com/dong1/p/14040168.html
Copyright © 2011-2022 走看看