日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

WebRTC教程 - 使用SIPML5

發布時間:2023/12/14 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WebRTC教程 - 使用SIPML5 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文地址:https://wiki.asterisk.org/wiki/display/AST/WebRTC+tutorial+using+SIPML5


教程概述

本教程演示了Asterisk中基本的WebRTC支持和功能。Asterisk將配置為支持遠程WebRTC客戶端sipml5客戶端,用于在Firefox Web瀏覽器中撥打/從Asterisk撥打電話。

對于本教程,假設您以root用戶身份登錄??。還假定您正在運行的版本至少為13.15.0或14.4.0,并具有最新版本的Firefox,例如54.0。

?

檢查星號依賴關系

要將sipml5客戶端連接到Asterisk,Asterisk必須已經構建,支持??res_crypto,??res_http_websocketres_pjsip_transport_websocket?資源模塊。為了可選地在Asterisk和sipml5客戶端之間啟用高質量的呼叫,需要Asterisk的??Opus編解碼器模塊。如果Opus沒有安裝到星號,低質量的呼叫仍然是可能的。要檢查這些可以執行的模塊的存在:

#ls -w 1 / usr / lib / asterisk / modules / {* crypto *,* websocket *,* opus *}

你應該看到類似的東西:

/usr/lib/asterisk/modules/codec_opus.so /usr/lib/asterisk/modules/res_crypto.so /usr/lib/asterisk/modules/res_format_attr_opus.so /usr/lib/asterisk/modules/res_http_websocket.so / usr /lib/asterisk/modules/res_pjsip_transport_websocket.so

如果沒有找到這些模塊,請返回到您選擇的Asterisk配置。?

接下來,為了確保這些模塊由Asterisk加載,您可以執行以下操作:

# asterisk -rx "module show like crypto" # asterisk -rx "module show like websocket" # asterisk -rx "module show like opus"

你應該看到類似的東西:

# asterisk -rx "module show like crypto" Module Description Use Count Status Support Level res_crypto.so Cryptographic Digital Signatures 1 Running core 1 modules loaded# asterisk -rx "module show like websocket" Module Description Use Count Status Support Level res_http_websocket.so HTTP WebSocket Support 3 Running extended res_pjsip_transport_websocket.so PJSIP WebSocket Transport Support 0 Running core 2 modules loaded# asterisk -rx "module show like opus" Module Description Use Count Status Support Level codec_opus.so OPUS Coder/Decoder 0 Running extended res_format_attr_opus.so Opus Format Attribute Module 1 Running core 3 modules loaded

如果未加載模塊,請檢查??/etc/asterisk/modules.conf配置文件,以確保它們未被顯式禁用。

圖標

Opus編解碼器模塊可以使用Asterisk的menuselect工具直接安裝,可以在Codec Translators類別的External部分找到。或者,您可以在此使用該實用程序,或直接瀏覽到下載服務器。

?

創建證書

現代瀏覽器需要使用TLS和??DTLS-SRTP進行WebRTC信令和媒體加密。要使星號使用TLS和DTLS-SRTP,需要加載證書。在本教程中,我們將創建一個自簽名的證書頒發機構和服務器證書。有些瀏覽器需要使用公開簽名的證書。獲得公開簽署的證書不屬于本教程的范圍。

Asterisk??在其??contrib / scripts源目錄中提供了一個實用程序腳本??ast_tls_cert。我們將使用它來創建一個自我簽發的證書頒發機構和Asterisk的服務器證書,由我們的新授權機構簽署。

首先,讓我們為我們的證書找個地方:

#mkdir / etc / asterisk / keys

接下來,調用腳本:

# ./ast_tls_cert -C pbx.example.com -O "My Super Company" -d /etc/asterisk/keys
  • “-C”選項用于定義我們的主機 - DNS名稱或我們的IP地址。
  • “-O”選項定義了我們的組織名稱。
  • “-d”選項是鍵的輸出目錄。
  • 您將被要求為/etc/asterisk/keys/ca.key輸入一個密碼短語,放入您以后記住的內容。
  • 這將創建/etc/asterisk/keys/ca.crt文件。
  • 系統將要求您再次輸入密碼,然后將創建/etc/asterisk/keys/asterisk.key文件。
  • 將自動生成/etc/asterisk/keys/asterisk.crt文件。
  • 系統會要求您第三次輸入密碼,并且將會創建與/etc/asterisk/keys/asterisk.pem(asterisk.key和asterisk.crt文件)的組合。
  • 然后,您可以檢查您的??/ etc / asterisk / keys目錄,以驗證新文件是否已創建,因此:

    #ls -w 1 / etc / asterisk / keys

    你應該看到:

    asterisk.crt asterisk.csr asterisk.key asterisk.pem ca.cfg ca.crt ca.key tmp.cfg

    ?

    配置Asterisk的內置HTTP守護進程

    sipml5客戶端使用Websocket作為其傳輸方法。為了與Websocket客戶端進行通信,Asterisk使用其內置的HTTP守護進程。配置??/etc/asterisk/http.conf如下:

    [general] enabled = yes bindaddr = 0.0.0.0 bindport = 8088 tlsenable = yes tlsbindaddr = 0.0.0.0:8089 tlscertfile = / etc / asterisk / keys / asterisk.pem

    在這里,我們啟用了HTTP守護程序,并設置了HTTP守護進程的基本操作所需的綁定地址和端口。我們還啟用了TLS支持,并設置了TLS綁定地址和端口以及服務器密鑰(我們在上一步中所做的)。

    要驗證Web服務器是否運行,請執行以下操作:

    #netstat -an | grep 8089

    你應該看到:

    tcp 0 0 0.0.0.0:8089 0.0.0.0:* LISTEN

    配置PJSIP

    接下來,我們需要配置PJSIP。sipml5客戶端使用Websocket作為傳輸,并連接到Asterisk的HTTP守護程序,但它使用SIP協議。Asterisk用于SIP通信的默認通道驅動程序是PJSIP。有關Asterisk中PJSIP的更多信息,請參閱??配置res_pjsip頁面。 ?

    PJSIP WSS運輸

    像Asterisk的HTTP守護程序(需要配置為監聽Websocket傳輸),PJSIP需要配置Websocket傳輸。在這種情況下,我們將使用“Secure Websocket”傳輸標識符wss為Websocket配置PJSIP傳輸??。您的??/etc/asterisk/pjsip.conf中,您應該添加:

    [transport-wss] type = transport protocol = wss bind = 0.0.0.0

    PJSIP AoR和Auth

    接下來,我們需要在PJSIP中配置一個實體來接受基于瀏覽器的sipml5客戶端的注冊。為此,我們將在/etc/asterisk/pjsip.conf配置文件中創建三個PJSIP對象:aorauth端點。

    你的??aor和你的??auth應該看起來像:

    [199] type = aor max_contacts = 1 remove_existing = yes [199] type = auth auth_type = userpass username = 199 password = 199; 這是一不安全的密碼

    在這里,我們確定,與我們注冊的事情將在內部被稱為“199”,它將使用??199??和??199??作為其用戶名和密碼注冊憑證。請注意,這不是安全的,如果您遵循這些說明,您應該選擇更好的密碼。

    PJSIP端點

    接下來,我們需要創建一個??端點對象,該對象將引用此??aor和??auth,并提供特定于WebRTC客戶端的配置參數。/etc/asterisk/pjsip.conf中的端點??應該如下所示:

    [199] type = endpoint aors = 199 auth = 199 use_avpf = yes media_encryption = dtls dtls_ca_file = / etc / asterisk / keys / ca.crt dtls_cert_file = / etc / asterisk / keys / asterisk.pem dtls_verify = fingerprint dtls_setup = actpass ice_support = yes media_use_received_transport = yes rtcp_mux = yes context = default disallow = all allow = opus allow = ulaw

    有關這些設置參數的說明可以在??Asterisk 13 Configuration_res_pjsip頁面上找到。簡述:

    • 聲明一個引用我們以前制作的aor和auth的端點。 ?
    • 通知Asterisk預期AVPF配置文件(安全RTP)
    • 設置媒體加密的DTLS方法。
    • 指定用于與此端點進行TLS協商的證書文件以及我們的驗證和設置方法。
    • 啟用ICE支持
    • 將星號傳送到我們收到的相同的運輸中。
    • 啟用將RTP和RTCP事件復用到同一套接字上。
    • 將接收到的呼叫發送到名為“默認”?的Asterisk??Dialplan上下文中
    • 然后首先禁用所有的設備,然后選擇性地啟用Opus(假定您已經安裝了本星期開始提到的Asterisk的Opus編解碼器),然后G.711 u-law。

    ?

    配置chan_sip

    如果您仍然使用Asterisk的舊SIP通道驅動程序chan_sip代替現代PJSIP通道驅動程序,則可以使用以下內容來配置??sip.conf

    ?sip.conf示例設置 [general] udpbindaddr = 0.0.0.0:5060 realm = 123.123.123.123;替換為您的星號服務器公共IP地址或主機 transport= udp,ws,wss [199] host = dynamic secret = 199; 這是一個不安全的密碼context = default type = friend encryption = yes avpf = yes force_avp = yes icesupport = yes directmedia = no disallow = all allow = opus allow = ulaw dtlsenable = yes dtlsverify = fingerprint dtlscertfile = / etc / asterisk / keys / asterisk.pem dtlscafile = /etc/asterisk/keys/ca.crtdtlssetup = actpass rtcp_mux = yes

    ?

    配置星號撥號計劃

    我們將制作一個簡單的撥號計劃,以從sipml5客戶端接收測試呼叫。

    [default] exten => 200,1,Answer() same => n,Playback(demo-congrats) same => n,Hangup()

    這將指示星號接聽“200”的呼叫,播放名為“演示合同”的文件(包含在Asterisk的核心聲音文件包中),并掛斷電話。

    防火墻配置

    防火墻配置不在本教程的范圍之內,不過這里是我簡單的FireWall服務的輸出,可以顯示您可能需要打開的內容:

    To Action From -- ------ ---- 5060 ALLOW IN Anywhere 8089/tcp ALLOW IN Anywhere 10000:20000/udp ALLOW IN Anywhere

    您可能希望將服務重新配置為非標準端口,或者縮小可能的源地址以實現其他安全性。

    5060:這是SIP通信的標準端口
    8089:這是與Asterisk內置HTTP服務器一起使用的Secure Websockets的標準端口
    10000:20000:這是rtp.conf中配置的音頻流的端口范圍。

    重新啟動星號

    接下來,我們將執行Asterisk的正常重新啟動,在Asterisk停止之前允許進行中的呼叫完成,以便它可以接收我們對其配置所做的更改。從Linux控制臺執行:

    # asterisk -rx "core restart when convenient"

    你會看到:

    # asterisk -rx "core restart when convenient" Waiting for inactivity to perform restart

    ?

    瀏覽器和WSS

    當使用WSS作為傳輸時,默認情況下,Chrome和Firefox將不允許您使用WSS連接到具有自簽名證書的服務器。相反,您必須在Asterisk中安裝公開簽名的證書?;蛘?#xff0c;您必須將我們之前制作的自簽名證書導入到瀏覽器的鑰匙串中,這個不在此維基范圍之內。 ?

    或者,對于Firefox和Chrome,您可以打開單獨的瀏覽器選項卡,并將其指向Asterisk的HTTP端口和WS路徑,例如http:// [ip of asterisk server]:8089 / ws,您可以手動確認安全性例外。


    配置SIPML5

    ?

    圖標

    SIPML5是測試星號的有用客戶端。許多真實世界的用戶可以探索其他可能包括滾動您自己的客戶端的選項。

    首先,返回并閱讀上一節,并確保您已經在Firefox中打開了一個新標簽頁,并訪問了http:// [ip of asterisk server]:8089 / ws,并確認了安全性異常。我們在這里進行測試和開發,而不是部署到實際生產中,所以這是“好的”。

    接下來,使用Firefox,請訪問??https://sipml5.org??- 您將被重定向到??https://www.doubango.org/sipml5/

    一旦在那里,點擊“享受我們的現場演示”鏈接直接到sipml5客戶端。

    在注冊框中,使用類似于以下的配置:

    在這里,我們輸入以下內容:

    • 顯示名稱是一個自由格式的字符串
    • 私人身份是我們的PJSIP auth對象的用戶名
    • 公共身份的格式如下:?
      • sip:(我們的PJSIP aor對象的名稱)@(星號系統的IP地址)
    • 密碼是我們的PJSIP認證對象的密碼
    • 領域是“asterisk.org”

    接下來,點擊“專家模式?”?表單按鈕。它將打開一個新的瀏覽器標簽。在專家設置框中,使用類似于以下的配置:

    在這里,我們進行了以下更改:

    • 選中“禁用視頻”框
    • 使用以下格式填寫在WebSocket服務器URL中:
      • wss://(星號的ip地址):8089 / ws
    • 檢查“禁用3GPP早期IMS”框

    單擊“保存”,并使用“注冊”框返回到另一個演示選項卡。

    接下來,點擊“登錄”,你應該看到這樣連接:

    您應該在Asterisk CLI上看到相應的連接。您可以通過執行以下操作登錄Asterisk CLI:

    #asterisk -vvvr

    ?

    然后,您可以LogOut并登錄,看到如下:

    == WebSocket connection from '10.27.74.22:54984' for protocol 'sip' accepted using version '13'-- Added contact 'sips:199@10.27.74.22:54984;transport=ws;rtcweb-breaker=no' to AOR '199' with expiration of 200 seconds == Contact 199/sips:199@10.27.74.22:54984;transport=ws;rtcweb-breaker=no has been created == Endpoint 199 is now Reachable

    進行測試呼叫

    在sipml5呼叫控制箱輸入??200。然后按通話按鈕。你會看到一個下拉列表:

    選擇“音頻”繼續。一旦這樣做,Firefox將顯示一個彈出窗口要求使用麥克風的權限:

    點擊“允許”。

    接下來,呼叫控制框將指示呼叫正在進行:

    最后,當呼叫連接時,您將看到??呼叫:

    您會聽到“恭喜您已成功安裝和執行Asterisk開源PBX ...”

    您剛剛通過WebRTC使用Asterisk進行了首次呼叫!


    總結

    以上是生活随笔為你收集整理的WebRTC教程 - 使用SIPML5的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。