jssip中文開(kāi)發(fā)文檔(完整版)

jsSip開(kāi)發(fā)文檔

(官網(wǎng)地址:http://www.jssip.net/

完整案例demo下載地址: http://download.csdn.net/download/qq_39421580/10214712

概觀:

1.JsSIP是一個(gè)簡(jiǎn)單易用的JavaScript庫(kù),它利用SIPWebRTC的最新發(fā)展,在任何網(wǎng)站上提供全功能的SIP端點(diǎn)。

2.通過(guò)JsSIP ,只要幾行代碼,任何網(wǎng)站都可以通過(guò)音頻,視頻等獲得實(shí)時(shí)通信功能。

特征:

1.通過(guò)WebSocket傳輸?shù)?a target="_blank" rel="nofollow"> SIP。

2.音頻/視頻通話,即時(shí)消息和狀態(tài)。

3.輕巧!

4.100%純JavaScript從頭開(kāi)始構(gòu)建。

5.易于使用和功能強(qiáng)大的用戶API。

6.適用于OverSIP,Kamailio和Asterisk服務(wù)器。

入門:

一:1.JsSIP用戶代理是JsSIP的核心元素。它表示與SIP帳戶關(guān)聯(lián)的SIP客戶端。JsSIP用戶代理是在類中定義的。JsSIP.UA

2.可以創(chuàng)建多個(gè)JsSIP用戶代理(這對(duì)于在同一個(gè)Web應(yīng)用程序中運(yùn)行不同的SIP帳戶很有用)。

二:創(chuàng)建一個(gè)jsSIP用戶代理

JsSIP用戶代理需要一個(gè)配置對(duì)象來(lái)進(jìn)行初始化。

    /**

      * 創(chuàng)建websocket連接,連接地址最好是wss,本地測(cè)試可以使用ws,

      * 如果信令服務(wù)使用FreeSWITCH,那么websocket連接地址如下:

      * ws://FreeSWITCH所在服務(wù)器IP:5066 或

      * wss://FreeSWITCH所在服務(wù)器IP:7443

     */

    var socket = new JsSIP.WebSocketInterface('wss://sip.myhost.com');(詳見(jiàn)三API)

    /**

     * User Agent配置參數(shù),sockets表示信令服務(wù)器的連接集合,即可以

     * 注冊(cè)多個(gè)信令服務(wù)器;uri即注冊(cè)用戶的SIP地址,password為連接密

     * 碼;常用的參數(shù)還有register(true/false)表示是否直接注冊(cè);

     * no_answer_timeout無(wú)應(yīng)答超時(shí)時(shí)間等。

     */

    var configuration = {

        // freeswitch服務(wù)器地址

        'outbound_proxy_set': 'ws://sip-ws.example.com',

        'uri': 'sip:alice@example.com',

        'password': 'superpassword'

    };

         // 使用上述配置創(chuàng)建User Agent

     var coolPhone = new JsSIP.UA(configuration);
API說(shuō)明

類 JsSIP

JsSIP主模塊。

類 JsSIP.debug

默認(rèn)情況下,JsSIP不向?yàn)g覽器控制臺(tái)記錄任何內(nèi)容。為了啟用調(diào)試,請(qǐng)?jiān)跒g覽器控制臺(tái)中運(yùn)行以下命令并重新加載頁(yè)面:

JsSIP.debug.enable('JsSIP:*');

請(qǐng)注意,日志記錄設(shè)置將存儲(chǔ)在瀏覽器LocalStorage中。要禁用它,請(qǐng)?jiān)跒g覽器控制臺(tái)中運(yùn)行以下命令并重新加載頁(yè)面:

JsSIP.debug.disable('JsSIP:*');

JsSIP源代碼樹(shù)中的每個(gè)文件都提供了一個(gè)不同的調(diào)試標(biāo)識(shí)符(全部以“JsSIP:”開(kāi)頭),它與文件名及其相對(duì)路徑相匹配。

類 JsSIP.UA

JsSIP SIP用戶代理類。

首先實(shí)例化:

用戶代理關(guān)聯(lián)到SIP用戶帳戶。這個(gè)類需要一些通過(guò)配置對(duì)象提供的初始化配置參數(shù)。檢查完整的UA配置參數(shù)列表。

如果沒(méi)有定義任何強(qiáng)制性參數(shù)或由于格式錯(cuò)誤的參數(shù)值,此類的實(shí)例化將引發(fā)異常。

var socket = new JsSIP.WebSocketInterface('wss://sip.example.com');

var configuration = {

sockets : [ socket ],

uri : 'sip:alice@example.com',

ha1 : '350fe29ce3890bd85d105998b0a95cf7',

realm : 'sip.example.com'

};

var ua = new JsSIP.UA(configuration);

實(shí)例方法

start()

連接到信令服務(wù)器,并恢復(fù)以前的狀態(tài),如果以前停止。重新開(kāi)始時(shí),如果UA配置中的參數(shù)設(shè)置為,則向SIP域注冊(cè)。registertrue

stop()

保存當(dāng)前注冊(cè)狀態(tài),正常注銷并終止活動(dòng)會(huì)話(如果有的話)后斷開(kāi)與信令服務(wù)器的連接。

register()

注冊(cè)UA。

注意:如果register參數(shù)設(shè)置為true在UA配置參數(shù),則UA將自動(dòng)注冊(cè)。

unregister(options=null)

取消注冊(cè)UA。

參數(shù)為options

options對(duì)象中的字段all,可選,Boolean用于注銷同一SIP用戶的所有綁定。默認(rèn)值是false。

var options = {

all: true

};

call(target, options=null)

撥打多媒體電話。

參數(shù)

Target 通話的目的地。String表示目標(biāo)用戶名或完整的SIP URI或JsSIP.URI實(shí)例。

Options 可選Object附加參數(shù)(見(jiàn)下文)。

options對(duì)象中的字段;

mediaConstraints Object有兩個(gè)有效的字段(audio和video)指示會(huì)話是否打算使用音頻和/或視頻以及要使用的約束。默認(rèn)值是audio并且video設(shè)置為true。

mediaStream MediaStream 傳送到另一端。

pcConfig Object代表RTCPeerConnection RTCConfiguration。

rtcConstraints Object 表示RTCPeerconnection約束。

rtcOfferConstraints Object代表RTCPeerconnection的限制createOffer()。

rtcAnswerConstraints Object表示用于RTCPeerconnection約束createAnswer()(將被用于將來(lái)的輸入REINVITE或UPDATE與SDP提供)。

eventHandlers Object事件處理程序的可選項(xiàng)將被注冊(cè)到每個(gè)呼叫事件。為每個(gè)要通知的事件定義事件處理程序。

extraHeaders Array的Strings額外SIP頭的INVITE請(qǐng)求。

Anonymous Boolean指示是否應(yīng)該匿名完成呼叫。默認(rèn)值是false。

sessionTimersExpires Number (以秒為單位)默認(rèn)的會(huì)話定時(shí)器間隔(默認(rèn)值是90,不要設(shè)置一個(gè)較低的值)。

// HTML5的元素,其中將顯示本地和遠(yuǎn)程視頻

var views = {

'selfView': document.getElementById('my-video'),

'remoteView': document.getElementById('peer-video')

};

//對(duì)所需的調(diào)用事件進(jìn)行回調(diào)

var eventHandlers = {

'progress': function(data){ /* Your code here */ },

'failed': function(data){ /* Your code here */ },

'confirmed': function(data){ /* Your code here */ },

'ended': function(data){ /* Your code here */ }

};

var options = {

'eventHandlers': eventHandlers,

'extraHeaders': [ 'X-Foo: foo', 'X-Bar: bar' ],

'mediaConstraints': {'audio': true, 'video': true},

'pcConfig': {

'iceServers': [

  { 'urls': ['stun:a.example.com', 'stun:b.example.com'] },

  { 'urls': 'turn:example.com', 'username': 'foo', 'credential': ' 1234' }

]

}

};

ua.call('sip:bob@example.com', options);

sendMessage(target, body, options=null)

使用SIP MESSAGE方法發(fā)送即時(shí)消息。

參數(shù)

Target 消息的目的地。String表示目標(biāo)用戶名或完整的SIP URI或JsSIP.URI實(shí)例。

Body 消息內(nèi)容。String代表消息的主體。

Options 可選Object附加參數(shù)(見(jiàn)下文)。

options對(duì)象中的字段:

contentType 可選String代表正文的內(nèi)容類型。默認(rèn)text/plain。

eventHandlers Object事件處理程序的可選項(xiàng)將被注冊(cè)到每個(gè)JsSIP.Message事件。為每個(gè)要通知的事件定義事件處理程序。

extraHeaders 可選Array的Strings額外SIP頭為每個(gè)MESSAGE請(qǐng)求。

var text = 'Hello Bob!';

var eventHandlers = {

'succeeded': function(data){ /* Your code here */ },

'failed': function(data){ /* Your code here */ };

};

var options = {

'eventHandlers': eventHandlers

};

ua.sendMessage('sip:bob@example.com', text, options);

terminateSessions(options=null)

終止正在進(jìn)行的呼叫。

參數(shù):

options 可選Object帶有在JsSIP.RTCSession呼叫終止中定義的額外參數(shù)。

isRegistered()

true如果UA被注冊(cè),false則返回; 否則。

isConnected()

返回true運(yùn)輸是否連接,false否則。

Events(data事件)

JsSIP.UA類定義了一系列事件。他們每個(gè)人都允許回調(diào)函數(shù)注冊(cè),以便讓用戶執(zhí)行每個(gè)給定的刺激處理程序。

Connecting:

為每個(gè)傳輸連接嘗試而開(kāi)火。

事件data字段

Socket JsSIP.Socket 實(shí)例正在連接。

Attempts Number 指示傳輸連接嘗試。

Connected:

運(yùn)輸連接建立后觸發(fā)。

事件data字段

Socket JsSIP.Socket 已連接的實(shí)例。

Disconnected:

傳輸連接嘗試(或自動(dòng)重新嘗試)失敗時(shí)觸發(fā)。

事件data字段

Socket JsSIP.Socket 實(shí)例。

Error Boolean 指示套接字是否由于錯(cuò)誤而斷開(kāi)連接

Code 可選Number指示套接字?jǐn)嚅_(kāi)代碼。

Reason 可選String指示插座斷開(kāi)原因。

Registered:

成功注冊(cè)成功

事件data字段

Response JsSIP.IncomingResponse收到的SIP 2XX響應(yīng)的實(shí)例。

unregistered

被解雇注冊(cè)。在以下情況下會(huì)觸發(fā)此事件:

1.作為未注冊(cè)請(qǐng)求的結(jié)果。UA.unregister()。

2.如果被注冊(cè),則定期重新注冊(cè)失敗。

事件data字段

Response JsSIP.IncomingResponse接收到的(未)注冊(cè)SIP請(qǐng)求的SIP響應(yīng)實(shí)例。

Cause null以便對(duì)非注冊(cè) SIP請(qǐng)求作出正確的響應(yīng)。在其他情況下,失敗和最終原因的一個(gè)值。

registrationFailed:

由于注冊(cè)失敗而被解雇。

事件data字段

Response JsSIP.IncomingResponse接收到的SIP否定響應(yīng)的實(shí)例,如果失敗是由這樣的響應(yīng)的接收產(chǎn)生的,否則為空。

Cause 失敗和最終原因的一個(gè)價(jià)值。

registrationExpiring:

1.在注冊(cè)到期之前發(fā)射幾秒鐘。如果應(yīng)用程序沒(méi)有為這個(gè)事件設(shè)置任何監(jiān)聽(tīng)器,JsSIP將像往常一樣重新注冊(cè)。

2.如果應(yīng)用程序訂閱了這個(gè)事件,它負(fù)責(zé)ua.register()在registrationExpiring事件中調(diào)用(否則注冊(cè)將過(guò)期)。

3.此事件使應(yīng)用程序有機(jī)會(huì)在重新注冊(cè)之前執(zhí)行異步操作。對(duì)于那些在REGISTER請(qǐng)求中的自定義SIP頭中使用外部獲得的“令牌”的環(huán)境很有用。

newRTCSession:

為傳入或傳出的會(huì)話/呼叫而開(kāi)火。

data傳入會(huì)話的事件字段

originator '遙遠(yuǎn)' String。新會(huì)話由遠(yuǎn)程對(duì)等生成。

Session JsSIP.RTCSession 會(huì)議的實(shí)例。

Request JsSIP.IncomingRequest收到的INVITE請(qǐng)求的實(shí)例。

data傳出會(huì)話的事件字段

originator '本地' String。新會(huì)話由本地用戶生成。

Session JsSIP.RTCSession 會(huì)議的實(shí)例。

Request JsSIP.OutgoingRequest傳出INVITE請(qǐng)求的實(shí)例。

newMessage(新消息):

為傳入或傳出的MESSAGE請(qǐng)求而開(kāi)火。

data傳入消息的事件字段

originator '遙遠(yuǎn)' String。新消息由遠(yuǎn)程對(duì)等體生成。

Message JsSIP.Message 實(shí)例。

Request JsSIP.IncomingRequest收到的MESSAGE請(qǐng)求的實(shí)例。

data傳出消息的事件字段

originator '本地' String。新消息由本地用戶生成。

Message JsSIP.Message 實(shí)例。

Request JsSIP.OutgoingRequest傳出MESSAGE請(qǐng)求的實(shí)例。

類 JsSIP.Registrator

類JsSIP.Registrator管理UA reigstration程序。

實(shí)例方法:

setExtraHeaders(extraHeaders)

將自定義標(biāo)題追加到每個(gè)注冊(cè) /取消注冊(cè)請(qǐng)求。他們可以在任何時(shí)候被覆蓋。

參數(shù):

extraHeaders Array的Strings額外SIP頭被包含在每一個(gè)注冊(cè)請(qǐng)求。將其設(shè)置null為刪除它們。

ua.registrator.setExtraHeaders([

'X-Foo: bar'

]);

setExtraContactParams(extraContactParams)

將自定義標(biāo)題參數(shù)附加到每個(gè)注冊(cè) /取消注冊(cè)請(qǐng)求的聯(lián)系人標(biāo)題中。他們可以在任何時(shí)候被覆蓋。

參數(shù):

extraContactParams Object用表示頭部參數(shù)名稱和值的鍵表示它們的參數(shù)值。將其設(shè)置null為刪除它們。

例:

ua.registrator.setExtraContactParams([

x-vendor: 'FooBar',

verified: true

]);

// => ;x-vendor=FooBar;x-verified

類 JsSIP.RTCSession

該類JsSIP.RTCSession表示W(wǎng)ebRTC媒體(音頻/視頻)會(huì)話。它可以由本地用戶或遠(yuǎn)程對(duì)等方發(fā)起。

它在內(nèi)部擁有一個(gè)RTCPeerConnection實(shí)例,可以通過(guò)connection屬性訪問(wèn)。

實(shí)例屬性:

Connection 連接;

RTCPeerConnection與此會(huì)話關(guān)聯(lián)的基礎(chǔ)實(shí)例。用它來(lái)建立與WebRTC相關(guān)的事件(如onaddstream,onaddtrack等)。

請(qǐng)注意,對(duì)于撥出電話,撥打電話RTCPeerConnection后設(shè)置ua.call()。但是,對(duì)于來(lái)電呼叫RTCPeerConnection后設(shè)置session.answer()。

Direction 方向,指導(dǎo);

String指示誰(shuí)開(kāi)始了會(huì)話。當(dāng)會(huì)話由遠(yuǎn)程對(duì)等體啟動(dòng)時(shí),可能的值是“傳入”,或者當(dāng)會(huì)話由本地用戶啟動(dòng)時(shí),可能的值是“傳出”。

local_identity

JsSIP.NameAddrHeader指示本地身份的實(shí)例。它對(duì)應(yīng)于方向?yàn)椤巴庀颉睍r(shí)的INVITE From報(bào)頭值,當(dāng)方向?yàn)椤斑M(jìn)入”時(shí)與To頭部值對(duì)應(yīng),

remote_identity

JsSIP.NameAddrHeader指示遠(yuǎn)程身份的實(shí)例。它對(duì)應(yīng)于方向?yàn)椤巴庀颉睍r(shí)的INVITE To標(biāo)頭值,以及方向?yàn)椤巴庀颉睍r(shí)的From標(biāo)頭值,

start_time 開(kāi)始時(shí)間;

Date對(duì)象指示會(huì)話開(kāi)始的時(shí)間。在accepted事件被解雇的那一刻,它的價(jià)值就在于此。

end_time 結(jié)束時(shí)間;

Date對(duì)象指示會(huì)話結(jié)束的時(shí)間。在ended事件被解雇的那一刻,它的價(jià)值就在于此。

data 數(shù)據(jù);

應(yīng)用程序存儲(chǔ)與此會(huì)話關(guān)聯(lián)的自定義信息的對(duì)象。

實(shí)例方法:

isInProgress()

 返回true如果會(huì)話過(guò)程中的狀態(tài)(未建立,而不是結(jié)束)。

isEstablished()

 true會(huì)話建立后返回。

isEnded()

 true會(huì)話結(jié)束時(shí)返回。

isReadyToReOffer()

返回true會(huì)話是否準(zhǔn)備好了SDP重新協(xié)商(hold(),unhold()或renegotiate()方法)。

answer(options)

應(yīng)答傳入的會(huì)話。此方法僅適用于傳入會(huì)話。

參數(shù):options

options對(duì)象中的字段

extraHeaders Array的Strings額外SIP頭為200 OK響應(yīng)。

mediaConstraints Object有兩個(gè)有效的字段(audio和video)指示會(huì)話是否打算使用音頻和/或視頻以及要使用的約束。默認(rèn)值根據(jù)收到的SDP報(bào)價(jià)設(shè)置。

mediaStream MediaStream 傳送到另一端。

pcConfig Object代表RTCPeerConnection RTCConfiguration。

rtcConstraints Object 表示RTCPeerConnection約束。

rtcAnswerConstraints Object代表RTCPeerConnection的約束createAnswer()。

rtcOfferConstraints Object代表RTCPeerConnection的約束createOffer()(用于將來(lái)的傳入的無(wú)需SDP提供的reINVITE )。

sessionTimersExpires Number (以秒為單位)默認(rèn)的會(huì)話定時(shí)器間隔(默認(rèn)值是90,不要設(shè)置一個(gè)較低的值)。

terminate()

1.終止當(dāng)前會(huì)話,無(wú)論其方向或狀態(tài)。

2.根據(jù)會(huì)話的狀態(tài),這個(gè)函數(shù)可能會(huì)發(fā)送一個(gè)CANCEL請(qǐng)求,一個(gè)非2xx的最終響應(yīng),一個(gè)BYE請(qǐng)求,甚至沒(méi)有請(qǐng)求。

3.對(duì)于傳入的會(huì)話,如果用戶沒(méi)有應(yīng)答傳入的INVITE,則該函數(shù)發(fā)送非2xx最終響應(yīng),并帶有可選的指定狀態(tài)碼和原因短語(yǔ)。480 Unavailvable是默認(rèn)回應(yīng)。

4.對(duì)于傳出會(huì)話,如果原始INVITE尚未發(fā)送,則永遠(yuǎn)不會(huì)發(fā)送。如果最初的INVITE沒(méi)有得到最終答復(fù),則行為取決于是否收到臨時(shí)答復(fù)。如果收到臨時(shí)響應(yīng),則會(huì)發(fā)送CANCEL請(qǐng)求。如果沒(méi)有收到臨時(shí)響應(yīng),則按照RFC 3261,該功能不會(huì)發(fā)送CANCEL。如果接收到臨時(shí)響應(yīng),則取消請(qǐng)求將自動(dòng)發(fā)送。

5.對(duì)于傳入和傳出,如果INVITE會(huì)話已經(jīng)被最終響應(yīng)回答,則會(huì)發(fā)送BYE請(qǐng)求。

參數(shù):Options

options對(duì)象中的字段

extraHeaders Array的Strings額外SIP頭的MESSAGE請(qǐng)求。

status_code Number介于300和699之間,代表SIP響應(yīng)碼。

reason_phrase String代表SIP原因詞組。

Body 表示SIP消息體的字符串(如果設(shè)置了此參數(shù),則必須在extraHeader字段中設(shè)置相應(yīng)的Content-Type標(biāo)題字段)。

注意:當(dāng)生成 CANCEL時(shí),status_code可以取值從200到699.status_codeandreason_phrase將按照 RFC3326中的規(guī)定形成一個(gè)Reason頭域。一個(gè)取消不會(huì)采取extraHeaders參數(shù)也沒(méi)有body放慢參數(shù)。

sendDTMF(tone, options=null)

使用SIP INFO方法發(fā)送一個(gè)或多個(gè)DTMF音。

Tone String或Number由一個(gè)或多個(gè)有效的DTMF符號(hào)組成。

Options 可選Object附加參數(shù)。見(jiàn)下文。

options對(duì)象中的字段;

duration 正數(shù)十進(jìn)制Number表示以毫秒表示的音調(diào)持續(xù)時(shí)間。默認(rèn)值是100。

interToneGap 正數(shù)小數(shù)Number表示以毫秒表示的兩個(gè)音調(diào)之間的間隔。默認(rèn)值是500。

extraHeaders 可選Array的Strings額外SIP頭為每個(gè)INFO請(qǐng)求。

 例:

var tones = '1234#';

var extraHeaders = [ 'X-Foo: foo', 'X-Bar: bar' ];

var options = {

 'duration': 160,

 'interToneGap': 1200,

 'extraHeaders': extraHeaders

};

call.sendDTMF(tones, options);

sendInfo(contentType, body=null, options=null)

  發(fā)送一個(gè)SIP INFO消息。

contentType String表示SIP INFO消息的Content-Type頭域值。

Body 可選String代表SIP INFO消息體。

options對(duì)象中的字段

extraHeaders 可選Array的Strings額外SIP頭為每個(gè)INFO請(qǐng)求。

hold(options=null, done=null)

1.通過(guò)發(fā)送Re- INVITE或UPDATE SIP請(qǐng)求使呼叫保持。

2.false如果此時(shí)重新協(xié)商不可能,則返回。

Options 可選Object附加參數(shù)。見(jiàn)下文。

Done Function重新談判成功后可選擇調(diào)用。

options對(duì)象中的字段

useUpdate Boolean發(fā)送更新而不是重新邀請(qǐng)

extraHeaders Array的Strings額外SIP頭的請(qǐng)求。

unhold(options=null, done=null)

1.通過(guò)發(fā)送Re- INVITE或UPDATE SIP請(qǐng)求來(lái)恢復(fù)保持的呼叫。

2.false如果此時(shí)重新協(xié)商不可能,則返回。

Options 可選Object附加參數(shù)。見(jiàn)下文。

Done Function重新談判成功后可選擇調(diào)用。

options對(duì)象中的字段

useUpdate Boolean發(fā)送更新而不是重新邀請(qǐng)

extraHeaders Array的Strings額外SIP頭的請(qǐng)求。

renegotiate()

1.強(qiáng)制進(jìn)行SDP重新協(xié)商。修改附加到底層的本地流RTCPeerConnection(通過(guò)connection屬性)后很有用。

2.false如果此時(shí)重新協(xié)商不可能,則返回。

Options 可選Object附加參數(shù)。見(jiàn)下文。

Done Function重新談判成功后可選擇調(diào)用。

options對(duì)象中的字段

useUpdate Boolean發(fā)送更新而不是重新邀請(qǐng)

extraHeaders Array的Strings額外SIP頭的請(qǐng)求。

rtcOfferConstraints Object代表RTCPeerConnection的約束createOffer()。

isOnHold()

返回一個(gè)Object屬性為“l(fā)ocal”和“remote”的Boolean值以及與每個(gè)屬性關(guān)聯(lián)的值。它表示“本地”和/或“遠(yuǎn)程”對(duì)等體是否處于保持狀態(tài)。

例:

rtcsession.isOnHold();

{

'local': true, // User has put the other peer on hold

'remote': false // Peer hasn't put user on hold

}

mute(options=null)

 1.靜音本地音頻和/或視頻。

Audio Boolean 確定是否必須靜音本地音頻

Video Boolean 確定本地視頻是否必須靜音

unmute(options=null)

 1.取消靜音本地音頻和/或視頻。

        Audio    Boolean 確定本地音頻是否必須取消靜音

Video Boolean 確定本地視頻是否必須取消靜音

isMuted()

  1. 返回一個(gè)Object屬性“音頻”和“視頻”,并Boolean與每個(gè)值關(guān)聯(lián)的值。它代表本地“音頻”和/或“視頻”是否靜音。

        例:
    
        rtcsession.isMuted();
    

{

'audio': true, // Local audio is muted

'video': false // Local audio is not muted

}

refer(target, options=null)

 1.將引用對(duì)象的REFER方法作為引用資源發(fā)送給給定的目標(biāo)。

2.甲R(shí)EFER方法隱含地生成訂閱的參考狀態(tài)。從對(duì)端接收到的NOTIFY請(qǐng)求將以事件形式進(jìn)行處理和呈現(xiàn)JsSIP.RTCSession.ReferSubscriber。

參數(shù):

Target 參考資源。String表示目標(biāo)用戶名或完整的SIP URI或JsSIP.URI實(shí)例。

Options 可選Object附加參數(shù)(見(jiàn)下文)。

options對(duì)象中的字段

extraHeaders 可選Array的Strings額外SIP頭的REFER請(qǐng)求。

eventHandlers 可選Object的事件處理程序?qū)⒈蛔?cè)為JsSIP.RTCSession.ReferSubscriber。

replaces 可選JsSIP.RTCSession實(shí)例該對(duì)話框意味著在參照目標(biāo)處被替換。這是此用戶代理與Refer-To資源指向的實(shí)時(shí)會(huì)話。

resetLocalMedia()

   通過(guò)啟用音頻和視頻軌道來(lái)重置本地MediaStream(除非遠(yuǎn)程對(duì)等體處于保留狀態(tài))。

事件:

JsSIP.RTCSession類定義了一系列事件。他們每個(gè)人都允許回調(diào)函數(shù)注冊(cè),以便讓用戶執(zhí)行每個(gè)給定的刺激函數(shù)。

Peerconnection

1.一旦底層RTCPeerConnection被創(chuàng)建,就會(huì)被觸發(fā)。應(yīng)用程序有機(jī)會(huì)通過(guò)例如添加一個(gè)RTCDataChannel或者設(shè)置相應(yīng)的事件監(jiān)聽(tīng)器來(lái)改變對(duì)等連接。

data傳出會(huì)話中的事件字段

peerconnection 該RTCPeerConnection實(shí)例。

例:

var datachannel;

session.on('peerconnection', function(data) {

datachannel = data.peerconnection.createDataChannel('chat');

});

Connecting

1.在本地媒體流加入RTCSession之后,在ICE采集開(kāi)始之前觸發(fā)初始INVITE請(qǐng)求或“200 OK”響應(yīng)傳輸。

data傳入會(huì)話中的事件字段

request JsSIP.IncomingRequest表示傳入的INVITE SIP消息的實(shí)例。

data傳出會(huì)話中的事件字段

request JsSIP.OutgoingRequest表示傳出INVITE SIP消息的實(shí)例。

Sending

1.在發(fā)送初始INVITE之前觸發(fā)(僅用于撥出電話)。它為應(yīng)用程序提供了一個(gè)調(diào)用SIP INVITE或其SDP的機(jī)會(huì)。

data傳出會(huì)話中的事件字段

request JsSIP.OutgoingRequest表示傳出INVITE SIP消息的實(shí)例。

Progress

1.在接收或生成對(duì)INVITE請(qǐng)求的1XX SIP類別響應(yīng)(> 100)時(shí)觸發(fā)。

2.事件在SDP處理之前被觸發(fā),如果存在的話,可以根據(jù)需要調(diào)整它,甚至刪除對(duì)象中響應(yīng)參數(shù)的主體data。

data傳入會(huì)話中的事件字段

originator '本地' String。

data傳出會(huì)話中的事件字段

originator '遙遠(yuǎn)' String。

Response JsSIP.IncomingResponse接收到的SIP 1XX響應(yīng)的實(shí)例。

Accepted

1.通話被接受時(shí)(2XX收/發(fā))觸發(fā)。

data傳入會(huì)話中的事件字段

originator '本地' String。

data傳出會(huì)話中的事件字段

originator '遙遠(yuǎn)' String。

Response JsSIP.IncomingResponse收到的SIP 2XX響應(yīng)的實(shí)例。

Confirmed

1.通話確認(rèn)(ACK收到/發(fā)送)時(shí)觸發(fā)。

data傳入會(huì)話中的事件字段

originator '本地' String。

data傳出會(huì)話中的事件字段

originator '遙遠(yuǎn)' String。

Response JsSIP.IncomingResponse收到的SIP 2XX響應(yīng)的實(shí)例。

Ended

1.已建立的通話結(jié)束時(shí)觸發(fā)。

事件data字段

Originator '本地'/'遠(yuǎn)程'/'系統(tǒng)' String。呼叫終止來(lái)自哪里?

Message JsSIP.IncomingRequest或JsSIP.IncomingResponse當(dāng)originator值為“遠(yuǎn)程” 時(shí)產(chǎn)生呼叫終止的實(shí)例,null否則。

Cause 失敗和最終原因的一個(gè)價(jià)值。

Failed

1.當(dāng)會(huì)議無(wú)法建立時(shí)被解雇。

事件data字段

Originator '本地'/'遠(yuǎn)程'/'系統(tǒng)' String。通話失敗來(lái)自哪里?

Message JsSIP.IncomingRequest或JsSIP.IncomingResponse當(dāng)originator值為“遠(yuǎn)程” 時(shí)產(chǎn)生呼叫失敗的實(shí)例,null否則。

Cause 失敗和最終原因的一個(gè)價(jià)值。

newDTMF

1.為傳入或傳出的DTMF啟動(dòng)。

data傳入DTMF的事件字段

originator '遙遠(yuǎn)' String。新的DTMF由遠(yuǎn)程對(duì)端生成。

Dtmf JsSIP.RTCSession.DTMF 實(shí)例。

Request JsSIP.IncomingRequest收到的INFO請(qǐng)求的實(shí)例。

data傳出DTMF的事件字段

originator '本地' String。新的DTMF由本地用戶生成。

Dtmf JsSIP.RTCSession.DTMF 實(shí)例。

Request JsSIP.OutgoingRequest傳出INFO請(qǐng)求的實(shí)例。

newInfo

1.為傳入或傳出的SIP INFO消息而啟動(dòng)。

data傳入SIP INFO消息的事件字段。

Originator '遙遠(yuǎn)' String。新的SIP INFO消息由遠(yuǎn)程對(duì)等體生成。

Info JsSIP.RTCSession.Info 實(shí)例。

Request JsSIP.IncomingRequest收到的INFO請(qǐng)求的實(shí)例。

data傳出SIP INFO消息的事件字段。

Originator '本地' String。新的SIP INFO消息。由本地用戶生成。

Info JsSIP.RTCSession.Info 實(shí)例。

Request JsSIP.OutgoingRequest傳出INFO請(qǐng)求的實(shí)例。

Hold 保持;

      1.當(dāng)用戶或同伴把對(duì)方擱置的時(shí)候被解雇。

事件data字段

Originator String如果另一個(gè)對(duì)等方已經(jīng)讓用戶保持“遠(yuǎn)程” 狀態(tài)。String如果用戶已經(jīng)把另一個(gè)對(duì)方掛起,則為“本地” 。

Unhold 取消保持;

 1\. 當(dāng)用戶或?qū)Ψ交謴?fù)對(duì)方的保持狀態(tài)時(shí)觸發(fā)。

事件data字段

Originator String如果其他對(duì)等方已將用戶從保持狀態(tài)恢復(fù),則為“遠(yuǎn)程” 。String如果用戶已經(jīng)恢復(fù)另一個(gè)對(duì)等體,則為“本地” 。

Muted 靜音;

1. 本地媒體靜音時(shí)被解雇

事件data字段

Audio Boolean 確定本地音頻是否靜音。

Video Boolean 確定本地視頻是否被靜音。

Unmuted 取消靜音;

1.在當(dāng)?shù)孛襟w取消解散時(shí)被解雇。

事件data字段

Audio Boolean 確定本地音頻是否靜音。

Video Boolean 確定本地視頻是否被靜音。

Reinvite 重新邀請(qǐng);

1.收到對(duì)話中的reINVITE時(shí)觸發(fā)。

事件data字段

Request JsSIP.IncomingRequest 收到的reINVITE請(qǐng)求的實(shí)例。

Callback 最初undefined。如果用戶在這里設(shè)置了一個(gè)函數(shù),那么一旦reINVITE被處理,它就會(huì)被執(zhí)行。

reject() 拒絕Method,如果再要執(zhí)行INVITE被拒絕。默認(rèn)使用403響應(yīng)碼。

事件data.reject()參數(shù)

Options 可選Object附加參數(shù)(見(jiàn)下文)。

options對(duì)象中的字段

extraHeaders Array的Strings額外SIP頭的MESSAGE請(qǐng)求。

status_code Number介于300和699之間,代表SIP響應(yīng)碼。

reason_phrase String代表SIP原因詞組。

Update 更新;

1.收到對(duì)話中的UPDATE時(shí)觸發(fā)。

事件data字段

Request JsSIP.IncomingRequest收到的更新請(qǐng)求的實(shí)例。

Callback 最初undefined。如果用戶在這里設(shè)置一個(gè)函數(shù),那么一旦UPDATE被處理,它就會(huì)被執(zhí)行。

reject() 拒絕Method,如果再要執(zhí)行INVITE被拒絕。默認(rèn)使用403響應(yīng)碼。

事件data.reject()參數(shù)

Options 可選Object附加參數(shù)(見(jiàn)下文)。

options對(duì)象中的字段

extraHeaders Array的Strings額外SIP頭的MESSAGE請(qǐng)求。

status_code Number介于300和699之間,代表SIP響應(yīng)碼。

reason_phrase String代表SIP原因詞組。

Refer 參考;

1.收到對(duì)話中的REFER時(shí)觸發(fā)。

2.如果授予參考批準(zhǔn),JsSIP.RTCSession則在參考標(biāo)題字段中指示的目標(biāo)生成新的傳出。

3.該NOTIFY機(jī)制被用于通知代理器發(fā)送的REFER中定義的參考的狀態(tài)RFC 3515。

4.NOTE:Refer-To資源可以在傳入屬性中訪問(wèn)。JsSIP.IncomingRequest refer_to JsSIP.URI

事件data字段

Request JsSIP.IncomingRequest收到的REFER請(qǐng)求的實(shí)例。

accept() Method如果接受REFER,同意批準(zhǔn)。這將生成一個(gè)傳出JsSIP.RTCSession到引用到URI標(biāo)識(shí)的資源。

reject() 同意拒絕Method,如果要執(zhí)行REFER被拒絕。

事件data.accept()參數(shù)

newRTCSession(session) 可選的回調(diào)Function代表新的傳出的事件執(zhí)行。如果沒(méi)有定義,則前一個(gè)事件將被發(fā)射。JsSIP.UA newRTCSessionRTCSessionfunction

options 可選Object提供傳出的選項(xiàng)JsSIP.RTCSession。該參數(shù)的語(yǔ)義對(duì)應(yīng)于方法的可選參數(shù)。JsSIP.UA call

事件data.reject()參數(shù) 這個(gè)方法不需要任何參數(shù)。

Replaces 取代;

1.通過(guò)Replaces標(biāo)題字段收到指向這個(gè)INVITE的對(duì)話INVITE時(shí)觸發(fā)。RTCSession

2.批準(zhǔn)后,現(xiàn)在JsSIP.RTCSession終止,當(dāng)新的建立。

事件data字段

Request JsSIP.IncomingRequest收到的INVITE請(qǐng)求的實(shí)例。

accept() Method如果接受邀請(qǐng),同意批準(zhǔn)。一個(gè)傳入JsSIP.RTCSession將被生成。

reject() Method如果INVITE被拒絕,同意拒絕執(zhí)行。

事件data.accept()參數(shù)

newRTCSession(session) 可選的回調(diào)Function代表新來(lái)的事件執(zhí)行。如果沒(méi)有定義,則前一個(gè)事件將被發(fā)射。JsSIP.UA newRTCSessionRTCSessionfunction

事件data.reject()參數(shù) 這個(gè)方法不需要任何參數(shù)。

Sdp

1.在將遠(yuǎn)程SDP傳遞給RTC引擎之前以及在發(fā)送本地SDP之前觸發(fā)。

2.此事件提供了修改傳入和傳出SDP的機(jī)制。

事件data字段

Originator String指示SDP是本地生成的還是遠(yuǎn)程接收的??赡艿闹凳莑ocal或remote分別。

Type String表明SDP是一個(gè)offer還是一個(gè)answer。

Sdp String代表SDP。必須直接對(duì)此參數(shù)進(jìn)行修改。

Getusermediafailed

1.內(nèi)部通話getUserMedia()失敗時(shí)觸發(fā)。它提供了DOMError作為參數(shù)。

peerconnection:createofferfailed

1.內(nèi)部通話createOffer()失敗時(shí)觸發(fā)。它提供了DOMError作為參數(shù)。

peerconnection:createanswerfailed

1.內(nèi)部通話createAnswer()失敗時(shí)觸發(fā)。它提供了DOMError作為參數(shù)。

peerconnection:setlocaldescriptionfailed

1.內(nèi)部通話setLocalDescription()失敗時(shí)觸發(fā)。它提供了DOMError作為參數(shù)。

peerconnection:setremotedescriptionfailed

1.內(nèi)部通話setRemoteDescription()失敗時(shí)觸發(fā)。它提供了DOMError作為參數(shù)。

類 JsSIP.Message

基于SIP 消息的IM。

實(shí)例屬性:

Direction 方向;

String指示誰(shuí)發(fā)送了MESSAGE消息。當(dāng)MESSAGE由遠(yuǎn)程對(duì)等體發(fā)送時(shí),可能的值是“傳入”,或者當(dāng)MESSAGE由本地用戶發(fā)送時(shí),可能的值是“ 傳出” 。

local_identity

JsSIP.NameAddrHeader指示本地身份的實(shí)例。它對(duì)應(yīng)于方向?yàn)椤皞鞒觥睍r(shí)的MESSAGE From頭部值,以及當(dāng)方向?yàn)椤皞魅搿睍r(shí)的To頭部值

remote_identity

JsSIP.NameAddrHeader指示遠(yuǎn)程身份的實(shí)例。當(dāng)方向是“傳出”時(shí)它對(duì)應(yīng)于MESSAGE To標(biāo)題值,當(dāng)方向是“傳入”時(shí)對(duì)應(yīng)于From標(biāo)題值,

實(shí)例方法

send(target, body, options=null)

1.通過(guò)WebSocket連接發(fā)送消息。此方法僅適用于傳出消息。

參數(shù):

Target 消息的目的地。String表示目標(biāo)用戶名或完整的SIP URI。

Body 消息內(nèi)容。String代表消息的主體。

Options 可選Object附加參數(shù)(見(jiàn)下文)。

options對(duì)象中的字段

contentType 可選String代表正文的內(nèi)容類型。默認(rèn)text/plain。

eventHandlers Object事件處理程序的可選項(xiàng)將被注冊(cè)到每個(gè)消息事件。為每個(gè)要通知的事件定義事件處理程序。

extraHeaders Array的Strings額外SIP頭的MESSAGE請(qǐng)求。

例:

var text = 'Hello Bob!';

var eventHandlers = {

'succeeded': function(e){ /* Your code here */ },

'failed': function(e){ /* Your code here */ };

};

var options = {

'eventHandlers': eventHandlers

};

coolPhone.sendMessage('sip:bob@example.com', text, options);

accept(options)

1.積極響應(yīng)傳入的消息。指示發(fā)送者已被傳送到目的地。此方法僅適用于傳入消息。

參數(shù)

Options 可選Object附加參數(shù)(見(jiàn)下文)。

options對(duì)象中的字段

extraHeaders Array的Strings額外SIP頭的MESSAGE請(qǐng)求。

Body 表示SIP消息正文的字符串。

注意:如果設(shè)置了此參數(shù),則必須在'extraHeader'字段中設(shè)置相應(yīng)的'Content-Type'標(biāo)題字段。

reject(options)

1.對(duì)傳入的消息做出負(fù)面的反應(yīng)。指示發(fā)件人尚未傳送到目的地。響應(yīng)代碼和原因決定了拒絕原因。此方法僅適用于傳入消息。

參數(shù)

Options 可選Object附加參數(shù)(見(jiàn)下文)。

options對(duì)象中的字段

extraHeaders Array的Strings額外SIP頭的MESSAGE請(qǐng)求。

status_code Number介于300和699之間,代表SIP響應(yīng)碼。

reason_phrase String代表SIP原因詞組。

Body 表示SIP消息正文的字符串。

注意:如果設(shè)置了此參數(shù),則必須在'extraHeader'字段中設(shè)置相應(yīng)的'Content-Type'標(biāo)題字段。

事件:

JsSIP.Message類定義了一系列事件。他們每個(gè)人都允許回調(diào)函數(shù)注冊(cè),以便讓用戶執(zhí)行每個(gè)給定的刺激處理程序。

succeeded

1.在收到MESSAGE請(qǐng)求的最終肯定響應(yīng)時(shí)觸發(fā)。

事件data字段

Originator '遙遠(yuǎn)' String。遠(yuǎn)程同級(jí)對(duì)SIP MESSAGE作出了積極響應(yīng)。

Response JsSIP.IncomingResponse 收到的2XX響應(yīng)的實(shí)例。

failed

1.如果沒(méi)有收到發(fā)送的MESSAGE消息,則會(huì)觸發(fā)。

事件data字段

Originator '遠(yuǎn)程'/'系統(tǒng)' String。MESSAGE失敗來(lái)自哪里?

Response JsSIP.IncomingResponse生成失敗的實(shí)例的原始值remote,否則為null。

Cause 失敗和最終原因的一個(gè)價(jià)值。

類 JsSIP.OutgoingRequest

    這個(gè)實(shí)例JsSIP.OutgoingRequest持有一個(gè)SIP請(qǐng)求被發(fā)送。

實(shí)例屬性

method

String指示SIP請(qǐng)求方法。

ruri

JsSIP.URI表示請(qǐng)求目標(biāo)URI的實(shí)例。

cseq

Number 代表CSeq號(hào)碼。

call_id

String 表示Call-ID頭字段值。

from

JsSIP.NameAddrHeader 表示From標(biāo)題字段的值。

to

JsSIP.NameAddrHeader 表示To頭字段值。

body

String 代表請(qǐng)求主體。

實(shí)例方法

setHeader(name, value)

用給定的值填充給定的標(biāo)題。

參數(shù)

Name String 指示標(biāo)題名稱。

Value 由a表示標(biāo)頭值(一個(gè)或多個(gè))String或Array的Strings。

getHeader(name)

獲取給定標(biāo)題名稱的第一個(gè)值。返回一個(gè)String頭的值,或者null頭不存在。

參數(shù)

Name String 指示標(biāo)題名稱。

getHeaders(name)

獲取給定名稱的標(biāo)題。返回Array的Strings含有為給定標(biāo)題名稱的所有值。

參數(shù)

Name String 指示標(biāo)題名稱。

hasHeader(name)

驗(yàn)證給定標(biāo)題的存在。true如果標(biāo)題存在false則返回,否則返回

參數(shù)

Name String 指示標(biāo)題名稱。

toString()

返回一個(gè)String生成的SIP請(qǐng)求。

類 JsSIP.IncomingMessage

實(shí)例屬性

method

String指示傳入的SIP消息的方法。

from

JsSIP.NameAddrHeader實(shí)例表示傳入的SIP消息的From頭部值。

to

JsSIP.NameAddrHeader實(shí)例表示傳入SIP消息的To頭值。

body

String表示SIP消息體,null如果沒(méi)有主體存在。

實(shí)例方法

countHeader(name)

計(jì)算給定標(biāo)題名稱的標(biāo)題數(shù)量。返回Number給定名稱的頭文件。

參數(shù)

Name String 指示標(biāo)題名稱。

getHeader(name)

獲取給定標(biāo)題名稱的第一個(gè)值。返回一個(gè)String頭的值,或者null頭不存在。

參數(shù)

Name String 指示標(biāo)題名稱。

getHeaders(name)

獲取給定名稱的標(biāo)題。返回Array的Strings含有為給定標(biāo)題名稱的所有值。

參數(shù)

Name String 指示標(biāo)題名稱。

hasHeader(name)

驗(yàn)證給定標(biāo)題的存在。true如果標(biāo)題存在false則返回,否則返回。

參數(shù)

Name String 指示標(biāo)題名稱。

parseHeader(name, idx)

分析給定位置處的指定標(biāo)題。如果標(biāo)題不存在或解析錯(cuò)誤Object,undefined則返回解析的標(biāo)題(an )。

參數(shù)

Name String 指示標(biāo)題名稱。

Idx 標(biāo)題索引(Number)被解析。默認(rèn)值是0(第一個(gè)標(biāo)題)。

toString()

String用收到的SIP消息返回a 。

類 JsSIP.IncomingRequest

 JsSIP.IncomingRequest持有收到的SIP請(qǐng)求的實(shí)例。

父級(jí) JsSIP.IncomingRequest繼承JsSIP.IncomingMessage。

實(shí)例屬性

ruri

JsSIP.URI表示請(qǐng)求URI的的SIP消息。

類 JsSIP.IncomingResponse

JsSIP.IncomingResponse保存收到的SIP響應(yīng)的實(shí)例。

父級(jí) JsSIP.IncomingResponse繼承JsSIP.IncomingMessage。

實(shí)例屬性

status_code

Number指示SIP響應(yīng)的狀態(tài)碼。

reason_phrase

String指出SIP響應(yīng)的原因詞組。

類 JsSIP.Socket

1.本節(jié)介紹的Socket接口從用于發(fā)送和接收SIP流量的機(jī)制中抽象出JsSIP 。JsSIP內(nèi)部傳輸現(xiàn)在處理這個(gè)接口,因此,它不作為傳輸套接字連接到內(nèi)置的WebSocket。

2.實(shí)現(xiàn)必須遵循這里指定的接口,以使JsSIP與底層傳輸機(jī)制一起工作。

3.JsSIP公開(kāi)了一個(gè)JsSIP.WebSocketInterface為瀏覽器環(huán)境實(shí)現(xiàn)這個(gè)接口的內(nèi)置類。Node.js的實(shí)現(xiàn)也可以通過(guò):jssip-node-websocket。

實(shí)例屬性

via_transport

String 指示Via頭域中用于傳出請(qǐng)求的Via傳輸。

url

String識(shí)別套接字URL。它用于調(diào)試目的。

sip_uri

String指示連接端點(diǎn)SIP URI。用于SIP路由標(biāo)題字段。

實(shí)例方法

connect()

當(dāng)需要發(fā)送和接收數(shù)據(jù)的套接字可用性時(shí),由JsSIP調(diào)用。只要套接字準(zhǔn)備就緒,或套接字無(wú)法連接或不可用,就必須立即調(diào)用

事件處理程序。onconnectondisconnect

disconnect()

現(xiàn)在不再需要套接字時(shí),由JsSIP調(diào)用。

在這個(gè)調(diào)用之后調(diào)用的事件處理程序?qū)⒈缓雎浴?/p>

send(data)

當(dāng)需要發(fā)送給定的數(shù)據(jù)時(shí),由JsSIP調(diào)用。

true數(shù)據(jù)成功發(fā)送時(shí)返回。false除此以外。

參數(shù):

Data String 表示要發(fā)送的數(shù)據(jù)。

事件處理程序

onconnect()

當(dāng)套接字變得可用于發(fā)送和接收數(shù)據(jù)之后,必須connect被調(diào)用,或者主動(dòng)斷開(kāi)發(fā)生。

ondisconnect(error, code, reason)

當(dāng)套接字變得不可用于發(fā)送或接收數(shù)據(jù)時(shí),必須調(diào)用它。

參數(shù)

Error Boolean 指示套接字是否由于錯(cuò)誤而斷開(kāi)連接

Code 可選Number指示套接字?jǐn)嚅_(kāi)代碼。

Reason 可選String指示插座斷開(kāi)原因。

ondata(data)

當(dāng)有完整的SIP消息被JsSIP處理時(shí),必須被調(diào)用。

參數(shù)

Data String或Binary數(shù)據(jù)的表示。

類 JsSIP.WebSocketInterface

1.JsSIP內(nèi)置的JsSIP.Socket瀏覽器環(huán)境界面。

2.如果需要,屬性設(shè)置器允許套接字自定義。

實(shí)例屬性

取一個(gè)String表示W(wǎng)ebSocket服務(wù)器URL的參數(shù)。

屬性設(shè)置器

via_transport(value)

String 指示Via頭域中用于傳出請(qǐng)求的Via傳輸。

例:

var socket = new JsSIP.WebSocketInterface('ws://sip-ws.example.com');

socket.via_transport = "tcp";

configuration.sockets = [ socket ];

var ua = new UA(configuration);

類 JsSIP.URI

1.JsSIP.URI該類的一個(gè)實(shí)例表示一個(gè)SIP URI,并提供一組屬性和方法來(lái)檢索和設(shè)置一個(gè)URI的不同部分。

2.它提供了以完整形式(包括參數(shù)和標(biāo)題)和AoR形式表示URI的方法。

3.URI允許其本身被clonned所以第二URI可以從本身來(lái)形成。

實(shí)例化

1.JsSIP.URI(scheme="sip", user=null, host, port=null, parameters=null, headers=null)

2.如果沒(méi)有host值傳遞,這個(gè)類的實(shí)例化將引發(fā)一個(gè)異常。

Scheme 可選String表示URI方案。默認(rèn)值是issip

User 可選String指示用戶名稱。

Host String代表主人。它可以是IP地址或主機(jī)名。

Parameters 可選Object屬性值以String表單形式表示。對(duì)于空參數(shù),null必須指示一個(gè)值。

Headers 可選Object屬性值由表單String或表單中的ArrayStrings

var parameters = {

param_name: 'param_value',

valueless_param: null

}

var headers = {

header_name: 'header_value',

multi_header: ['multi_header_value1','multi_header_value2']

}

var uri = new JsSIP.URI('sip', 'alice', 'atlanta.com', 5060, parameters, headers)

uri.toAor() // Returns "sip:alice@atlanta.com"

uri.toString()

//Returns"sip:alice@atlanta.com:5060;param_name=param_value;valueless_param?Header-Name=header_value&Multi-Header=multi_header_value1&Multi-Header=multi_header_value2"

實(shí)例屬性

scheme

設(shè)置或獲取一個(gè)String指示URI方案。

uri.scheme = 'sip';

uri.scheme // Returns 'sip'

uri.scheme = 'sIP';

uri.scheme // Returns 'sip'

user

設(shè)置或獲取一個(gè)String指示URI用戶。

uri.user = 'alice';

uri.user // Returns 'alice'

uri.user = 'Alice';

uri.user // Returns 'Alice'

uri.user = 'j@s0n'

uri.toAor() // Returns 'sip:j%40s0n@atlanta.com'

host

設(shè)置或獲取一個(gè)String指示URI主機(jī)。

uri.host = 'atlanta.com';

uri.host // Returns 'atlanta.com'

uri.host = 'AtLATta.cOm';

uri.host // Returns 'atlanta.com'

port

設(shè)置或獲取一個(gè)Number指示URI端口。

uri.port = 5060;

uri.port // Returns 5060

uri.port = '5060';

uri.port // Returns 5060

實(shí)例方法

setParam(key, value=null)

用給定的值創(chuàng)建或替換給定的URI參數(shù)。

參數(shù)

Key String 指示參數(shù)名稱。

Value 可選,String指示參數(shù)值。

uri.setParam('param_name', 'param_value');

getParam(key)

獲取給定URI參數(shù)的值。返回undefined參數(shù)集中不存在的參數(shù)。

參數(shù)

Key String 指示參數(shù)名稱。

uri.getParam('param_name'); // Returns 'param_value'

hasParam(key)

驗(yàn)證給定的URI參數(shù)的存在。返回true參數(shù)是否存在,false否則返回。

參數(shù)

Key String 指示參數(shù)名稱。

uri.hasParam('param_name'); // Returns true

deleteParam(key)

從URI中刪除給定的參數(shù)。

參數(shù)

Key String 指示參數(shù)名稱。

uri.deleteParam('param_name');

clearParams()

刪除所有的URI參數(shù)。

setHeader(key, value)

使用給定值創(chuàng)建或替換給定的URI標(biāo)頭。

參數(shù)

Key String 指示標(biāo)題名稱。

Value String或者Array指示標(biāo)題值。

uri.setHeader('header_name','header_value');

uri.setHeader('header_name',['header_value1','header_value2']);

getHeader(key)

獲取給定的URI標(biāo)頭的值。返回Array給定標(biāo)題名稱的標(biāo)題值/ s,或undefined標(biāo)題集合中不存在標(biāo)題。

參數(shù)

Key String 指示標(biāo)題名稱。

uri.setHeader('header_name',['header_value1','header_value2']);

uri.getHeader('header_name'); // Returns ['header_value1','header_value2']

uri.setHeader('header_name','header_value');

uri.getHeader('header_name'); // Returns ['header_value']

hasHeader(key)

驗(yàn)證給定URI標(biāo)頭的存在。true如果標(biāo)題存在false則返回,否則返回。

參數(shù)

Key String 指示標(biāo)題名稱。

uri.setHeader('header_name','header_value');

uri.hasHeader('header_name'); // Returns true

deleteHeader(key)

從URI中刪除給定的標(biāo)題。

參數(shù)

Key String 指示標(biāo)題名稱。

uri.delteHeader('header_name');

clearHeaders()

刪除所有的URI標(biāo)頭。

uri.clearHeaders();

clone()

返回JsSIP.URI該URI的克隆實(shí)例。

cloned_uri = uri.clone();

cloned_uri === uri // Returns false

toString()

返回一個(gè)String表示URI。

不能轉(zhuǎn)義的字符會(huì)按照RFC 3261的BNF語(yǔ)法中的規(guī)定進(jìn)行轉(zhuǎn)義。

uri.toString();//Returns"sip:alice@atlanta.com:5060?header_name=header_value1&header_name=header_value2"

toAor()

返回一個(gè)String表示URI的AoR 。

不能轉(zhuǎn)義的字符會(huì)按照RFC 3261的BNF語(yǔ)法中的規(guī)定進(jìn)行轉(zhuǎn)義。

uri.toAor(); // Returns "sip:alice@atlanta.com"

uri.user = 'j%40s0n'

uri.toAor(): // Returns "sip:j%40s0n@atlanta.com"

模塊功能

parse(uri)

String根據(jù)SIP URI語(yǔ)法規(guī)則解析給定的內(nèi)容。JsSIP.URI如果解析成功則返回一個(gè)實(shí)例,undefined否則返回。

參數(shù)

Uri String代表一個(gè)SIP URI。

var uri = JsSIP.URI.parse('sip:alice@atlanta.com');

類 JsSIP.NameAddrHeader

JsSIP.NameAddrHeader該類的實(shí)例包含RFC 3261的BNF語(yǔ)法中所述的“name-addr”或“addr-spec”值。

“name-addr”值的格式是“display name < URI >”。

例:

From: "Alice" sip:alice@atlanta.com

“addr-spec”值的格式為“ URI ”。

例:

From: sip:alice@atlanta.com

實(shí)例化

JsSIP.NameAddrHeader(uri, display_name=null, parameters=null)

如果沒(méi)有uri值傳遞,這個(gè)類的實(shí)例化將引發(fā)一個(gè)異常。

參數(shù)

Uri JsSIP.URI 實(shí)例。

display_name 可選String指示顯示名稱。

Parameters 可選Object屬性值以String表單形式表示。對(duì)于空參數(shù),null必須指示一個(gè)值。

var parameters = {

'parameter_1': 'value_1',

'parameter_2': null

}

var header = new JsSIP.NameAddrHeader(uri, 'Mrs. Alice', parameters)

header.toString()//Returns'"Mrs.Alice"sip:alice@atlanta.com;parameter_1=value_1;parameter_2'

實(shí)例屬性

display_name

設(shè)置或獲取一個(gè)String指示標(biāo)題顯示名稱。

header.display_name = 'Mrs. Alice';

uri

Getter為JsSIP.URI這個(gè)“名字地址” 的實(shí)例。

header.display_name = 'Mrs. Alice';

實(shí)例方法

setParam(key, value=null)

用給定的值創(chuàng)建或替換給定的頭部參數(shù)。

參數(shù)

Key String 指示參數(shù)名稱。

Value 可選,String指示參數(shù)值。

header.setParam('param_name', 'param_value');

getParam(key)

獲取給定標(biāo)題參數(shù)的值。返回undefined參數(shù)集中不存在的參數(shù)。

參數(shù)

Key String 指示參數(shù)名稱。

header.setParam('param_name', 'param_value');

header.getParam('param_name'); // Returns 'param_value'

hasParam(key)

驗(yàn)證給定的頭參數(shù)的存在。返回true參數(shù)是否存在,false否則返回。

參數(shù)

Key String 指示參數(shù)名稱。

header.setParam('param_name', 'param_value');

header.hasParam('param_name'); // Returns true

deleteParam(key)

從頭中刪除給定的參數(shù)。

參數(shù)

Key String 指示參數(shù)名稱。

header.deleteParam('param_name');

clearParams()

刪除所有標(biāo)題參數(shù)。

clone()

返回JsSIP.NameAddrHeader標(biāo)頭的克隆實(shí)例。

cloned_header = header.clone();

cloned_header === header // Returns false

toString()

返回一個(gè)String表示標(biāo)題。

不能轉(zhuǎn)義的字符會(huì)按照RFC 3261的BNF語(yǔ)法中的規(guī)定進(jìn)行轉(zhuǎn)義。

header.toString();//Returns'"Mrs.Alice"sip:alice@atlanta.com:5060;param_name=param_value'

模塊功能

parse(nameAddrHeader)

String根據(jù)名稱地址頭文法規(guī)則解析給定的內(nèi)容。JsSIP.NameAddrHeader如果解析成功則返回一個(gè)實(shí)例,undefined否則返回。

參數(shù)

nameAddrHeader String 表示名稱地址標(biāo)題字段值。

var name_addr_hdr=JsSIP.NameAddrHeader.parse('"Mrs.Alice"sip:alice@atlanta.com:5060;param_name=param_value');

jssip-node-websocket

JsSIP.Socket基于websocket模塊的Node.js接口。

在Node.js中運(yùn)行時(shí),該模塊為JsSIP提供了WebSocket支持。從JsSIP代碼中分離這個(gè)模塊的目的是為了防止在瀏覽器環(huán)境中編譯Node.js websocket模塊

UA配置參數(shù)

JsSIP.UA需要具有強(qiáng)制參數(shù)和可選參數(shù)的配置對(duì)象

var socket = new JsSIP.WebSocketInterface(ws://sip-ws.example.com);

var configuration = {

sockets : [ socket ],

uri : 'sip:alice@example.com',

password : 'superpassword'

};

var ua = new JsSIP.UA(configuration);

強(qiáng)制參數(shù)

URI

1.與用戶代理關(guān)聯(lián)的SIP URI(String)。這是您的提供商給您的SIP地址。

uri: "sip:alice@example.com"

sockets

一組

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容