jssip中文開發文檔(完整版)

jsSip開發文檔

(官網地址:http://www.jssip.net/html

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

概觀:

1.JsSIP是一個簡單易用的JavaScript庫,它利用SIPWebRTC的最新發展,在任何網站上提供全功能的SIP端點。web

2.經過JsSIP ,只要幾行代碼,任何網站均可以經過音頻,視頻等得到實時通訊功能。api

特徵:

1.經過WebSocket傳輸的 SIP瀏覽器

2.音頻/視頻通話,即時消息和狀態。服務器

3.輕巧!websocket

4.100%純JavaScript從頭開始構建。session

5.易於使用和功能強大的用戶API。less

6.適用於OverSIP,Kamailio和Asterisk服務器。異步

入門:

一:1.JsSIP用戶代理是JsSIP的核心元素。它表示與SIP賬戶關聯的SIP客戶端。JsSIP用戶代理是在類中定義的。JsSIP.UA

2.能夠建立多個JsSIP用戶代理(這對於在同一個Web應用程序中運行不一樣的SIP賬戶頗有用)。

二:建立一個jsSIP用戶代理

JsSIP用戶代理須要一個配置對象來進行初始化。

        /**

          * 建立websocket鏈接,鏈接地址最好是wss,本地測試可使用ws,

          * 若是信令服務使用FreeSWITCH,那麼websocket鏈接地址以下:

          * ws://FreeSWITCH所在服務器IP:5066 或

          * wss://FreeSWITCH所在服務器IP:7443

         */

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

        /**

         * User Agent配置參數,sockets表示信令服務器的鏈接集合,便可以

         * 註冊多個信令服務器;uri即註冊用戶的SIP地址,password爲鏈接密

         * 碼;經常使用的參數還有register(true/false)表示是否直接註冊;

         * no_answer_timeout無應答超時時間等。

         */

        var configuration = {

            // freeswitch服務器地址

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

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

            'password': 'superpassword'

        };

             // 使用上述配置建立User Agent

         var coolPhone = new JsSIP.UA(configuration);

API說明

類 JsSIP

   JsSIP主模塊。

類 JsSIP.debug

默認狀況下,JsSIP不向瀏覽器控制檯記錄任何內容。爲了啓用調試,請在瀏覽器控制檯中運行如下命令並從新加載頁面:

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

請注意,日誌記錄設置將存儲在瀏覽器LocalStorage中。要禁用它,請在瀏覽器控制檯中運行如下命令並從新加載頁面:

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

JsSIP源代碼樹中的每一個文件都提供了一個不一樣的調試標識符(所有以「JsSIP:」開頭),它與文件名及其相對路徑相匹配。

類 JsSIP.UA

JsSIP SIP用戶代理類。

首先實例化:

用戶代理關聯到SIP用戶賬戶。這個類須要一些經過配置對象提供的初始化配置參數。檢查完整的UA配置參數列表。

若是沒有定義任何強制性參數或因爲格式錯誤的參數值,此類的實例化將引起異常。

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

實例方法

start()

鏈接到信令服務器,並恢復之前的狀態,若是之前中止。從新開始時,若是UA配置中的參數設置爲,則向SIP域註冊。registertrue

stop()

保存當前註冊狀態,正常註銷並終止活動會話(若是有的話)後斷開與信令服務器的鏈接。

register()

註冊UA。

注意:若是register參數設置爲true在UA配置參數,則UA將自動註冊。

unregister(options=null)

取消註冊UA。

參數爲options

options對象中的字段all,可選,Boolean用於註銷同一SIP用戶的全部綁定。默認值是false。

var options = {

  all: true

};

 

call(target, options=null)

撥打多媒體電話。

參數

Target              通話的目的地。String表示目標用戶名或完整的SIP URI或JsSIP.URI實例。

Options             可選Object附加參數(見下文)。

options對象中的字段;

mediaConstraints      Object有兩個有效的字段(audio和video)指示會話是否打算使用音頻和/或視頻以及要使用的約束。默認值是audio而且video設置爲true。

mediaStream          MediaStream 傳送到另外一端。

pcConfig              Object表明RTCPeerConnection RTCConfiguration。

rtcConstraints          Object 表示RTCPeerconnection約束。

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

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

eventHandlers          Object事件處理程序的可選項將被註冊到每一個呼叫事件。爲每一個要通知的事件定義事件處理程序。

extraHeaders            Array的Strings額外SIP頭的INVITE請求。

Anonymous             Boolean指示是否應該匿名完成呼叫。默認值是false。

sessionTimersExpires      Number (以秒爲單位)默認的會話定時器間隔(默認值是90,不要設置一個較低的值)。

// HTML5的元素,其中將顯示本地和遠程視頻

var views = {

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

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

};

 

//對所需的調用事件進行回調

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方法發送即時消息。

參數

Target    消息的目的地。String表示目標用戶名或完整的SIP URI或JsSIP.URI實例。

Body     消息內容。String表明消息的主體。

Options   可選Object附加參數(見下文)。

options對象中的字段:

contentType    可選String表明正文的內容類型。默認text/plain。

eventHandlers   Object事件處理程序的可選項將被註冊到每一個JsSIP.Message事件。爲每一個要通知的事件定義事件處理程序。

extraHeaders     可選Array的Strings額外SIP頭爲每一個MESSAGE請求。

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)

終止正在進行的呼叫。

參數:

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

isRegistered() 

true若是UA被註冊,false則返回; 不然。

isConnected()

返回true運輸是否鏈接,false不然。

 

Events(data事件)

JsSIP.UA類定義了一系列事件。他們每一個人都容許回調函數註冊,以便讓用戶執行每一個給定的刺激處理程序。

Connecting:

爲每一個傳輸鏈接嘗試而開火。

事件data字段

Socket            JsSIP.Socket 實例正在鏈接。

Attempts          Number 指示傳輸鏈接嘗試。

 

Connected:

運輸鏈接創建後觸發。

事件data字段

Socket            JsSIP.Socket 已鏈接的實例。

 

Disconnected:

傳輸鏈接嘗試(或自動從新嘗試)失敗時觸發。

事件data字段

Socket             JsSIP.Socket 實例。

Error              Boolean 指示套接字是否因爲錯誤而斷開鏈接

Code              可選Number指示套接字斷開代碼。

Reason             可選String指示插座斷開緣由。

 

Registered:

成功註冊成功

事件data字段

Response            JsSIP.IncomingResponse收到的SIP 2XX響應的實例。

 

unregistered

被解僱註冊。在如下狀況下會觸發此事件:

1.做爲未註冊請求的結果。UA.unregister()。

2.若是被註冊,則按期從新註冊失敗。

事件data字段

Response      JsSIP.IncomingResponse接收到的(未)註冊SIP請求的SIP響應實例。

Cause         null以便對非註冊 SIP請求做出正確的響應。在其餘狀況下,失敗和最終緣由的一個值。

 

registrationFailed:

因爲註冊失敗而被解僱。

事件data字段

Response      JsSIP.IncomingResponse接收到的SIP否認響應的實例,若是失敗是由這樣的響應的接收產生的,不然爲空。

Cause         失敗和最終緣由的一個價值。

 

registrationExpiring:

1.在註冊到期以前發射幾秒鐘。若是應用程序沒有爲這個事件設置任何監聽器,JsSIP將像往常同樣從新註冊。

2.若是應用程序訂閱了這個事件,它負責ua.register()在registrationExpiring事件中調用(不然註冊將過時)。

3.此事件使應用程序有機會在從新註冊以前執行異步操做。對於那些在REGISTER請求中的自定義SIP頭中使用外部得到的「令牌」的環境頗有用。

 

newRTCSession:

爲傳入或傳出的會話/呼叫而開火。

data傳入會話的事件字段

originator       '遙遠' String。新會話由遠程對等生成。

Session         JsSIP.RTCSession 會議的實例。

Request        JsSIP.IncomingRequest收到的INVITE請求的實例。

data傳出會話的事件字段

originator      '本地' String。新會話由本地用戶生成。

Session         JsSIP.RTCSession 會議的實例。

Request        JsSIP.OutgoingRequest傳出INVITE請求的實例。

 

newMessage(新消息):

爲傳入或傳出的MESSAGE請求而開火。

data傳入消息的事件字段

originator       '遙遠' String。新消息由遠程對等體生成。

Message        JsSIP.Message 實例。

Request         JsSIP.IncomingRequest收到的MESSAGE請求的實例。

data傳出消息的事件字段

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

Message         JsSIP.Message 實例。

Request          JsSIP.OutgoingRequest傳出MESSAGE請求的實例。

 

類 JsSIP.Registrator

類JsSIP.Registrator管理UA reigstration程序。

實例方法:

setExtraHeaders(extraHeaders)

將自定義標題追加到每一個註冊 /取消註冊請求。他們能夠在任什麼時候候被覆蓋。

參數:

extraHeaders    Array的Strings額外SIP頭被包含在每個註冊請求。將其設置null爲刪除它們。

ua.registrator.setExtraHeaders([

  'X-Foo: bar'

]);

setExtraContactParams(extraContactParams)

將自定義標題參數附加到每一個註冊 /取消註冊請求的聯繫人標題中。他們能夠在任什麼時候候被覆蓋。

參數:

extraContactParams      Object用表示頭部參數名稱和值的鍵表示它們的參數值。將其設置null爲刪除它們。

例:

ua.registrator.setExtraContactParams([

  x-vendor: 'FooBar',

  verified: true

]);

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

 

類 JsSIP.RTCSession

   該類JsSIP.RTCSession表示WebRTC媒體(音頻/視頻)會話。它能夠由本地用戶或遠程對等方發起。

它在內部擁有一個RTCPeerConnection實例,能夠經過connection屬性訪問。

   實例屬性:

Connection 鏈接;

RTCPeerConnection與此會話關聯的基礎實例。用它來創建與WebRTC相關的事件(如onaddstream,onaddtrack等)。

請注意,對於撥出電話,撥打電話RTCPeerConnection後設置ua.call()。可是,對於來電呼叫RTCPeerConnection後設置session.answer()。

Direction 方向,指導;

String指示誰開始了會話。當會話由遠程對等體啓動時,可能的值是「傳入」,或者當會話由本地用戶啓動時,可能的值是「傳出」。

local_identity

JsSIP.NameAddrHeader指示本地身份的實例。它對應於方向爲「外向」時的INVITE From報頭值,當方向爲「進入」時與To頭部值對應,

remote_identity

    JsSIP.NameAddrHeader指示遠程身份的實例。它對應於方向爲「外向」時的INVITE To標頭值,以及方向爲「外向」時的From標頭值,

start_time 開始時間;

    Date對象指示會話開始的時間。在accepted事件被解僱的那一刻,它的價值就在於此。

end_time  結束時間;

Date對象指示會話結束的時間。在ended事件被解僱的那一刻,它的價值就在於此。

data  數據;

應用程序存儲與此會話關聯的自定義信息的對象。

實例方法:

isInProgress()

     返回true若是會話過程當中的狀態(未創建,而不是結束)。

isEstablished()

     true會話創建後返回。

isEnded()

     true會話結束時返回。

isReadyToReOffer()

返回true會話是否準備好了SDP從新協商(hold(),unhold()或renegotiate()方法)。

answer(options)

應答傳入的會話。此方法僅適用於傳入會話。

參數:options

options對象中的字段

extraHeaders           Array的Strings額外SIP頭爲200 OK響應。

mediaConstraints        Object有兩個有效的字段(audio和video)指示會話是否打算使用音頻和/或視頻以及要使用的約束。默認值根據收到的SDP報價設置。

mediaStream           MediaStream 傳送到另外一端。

pcConfig               Object表明RTCPeerConnection RTCConfiguration。

rtcConstraints           Object 表示RTCPeerConnection約束。

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

rtcOfferConstraints     Object表明RTCPeerConnection的約束createOffer()(用於未來的傳入的無需SDP提供的reINVITE )。

sessionTimersExpires    Number (以秒爲單位)默認的會話定時器間隔(默認值是90,不要設置一個較低的值)。

terminate()

1.終止當前會話,不管其方向或狀態。

2.根據會話的狀態,這個函數可能會發送一個CANCEL請求,一個非2xx的最終響應,一個BYE請求,甚至沒有請求。

3.對於傳入的會話,若是用戶沒有應答傳入的INVITE,則該函數發送非2xx最終響應,並帶有可選的指定狀態碼和緣由短語。480 Unavailvable是默認迴應。

4.對於傳出會話,若是原始INVITE還沒有發送,則永遠不會發送。若是最初的INVITE沒有獲得最終答覆,則行爲取決因而否收到臨時答覆。若是收到臨時響應,則會發送CANCEL請求。若是沒有收到臨時響應,則按照RFC 3261,該功能不會發送CANCEL。若是接收到臨時響應,則取消請求將自動發送。

5.對於傳入和傳出,若是INVITE會話已經被最終響應回答,則會發送BYE請求。

參數:Options

options對象中的字段

extraHeaders     Array的Strings額外SIP頭的MESSAGE請求。

status_code      Number介於300和699之間,表明SIP響應碼。

reason_phrase    String表明SIP緣由詞組。

Body            表示SIP消息體的字符串(若是設置了此參數,則必須在extraHeader字段中設置相應的Content-Type標題字段)。

注意:當生成 CANCEL時,status_code能夠取值從200到699.status_codeandreason_phrase將按照 RFC3326中的規定造成一個Reason頭域。一個取消不會採起extraHeaders參數也沒有body放慢參數。

 

sendDTMF(tone, options=null)

使用SIP INFO方法發送一個或多個DTMF音。

Tone       String或Number由一個或多個有效的DTMF符號組成。

Options     可選Object附加參數。見下文。

options對象中的字段;

duration     正數十進制Number表示以毫秒錶示的音調持續時間。默認值是100。

interToneGap  正數小數Number表示以毫秒錶示的兩個音調之間的間隔。默認值是500。

extraHeaders   可選Array的Strings額外SIP頭爲每一個INFO請求。

     例:

   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)

      發送一個SIP INFO消息。

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

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

options對象中的字段

extraHeaders     可選Array的Strings額外SIP頭爲每一個INFO請求。

     

hold(options=null, done=null)

1.經過發送Re- INVITE或UPDATE SIP請求使呼叫保持。

2.false若是此時從新協商不可能,則返回。

Options     可選Object附加參數。見下文。

Done       Function從新談判成功後可選擇調用。

options對象中的字段

useUpdate      Boolean發送更新而不是從新邀請

extraHeaders    Array的Strings額外SIP頭的請求。

unhold(options=null, done=null)

1.經過發送Re- INVITE或UPDATE SIP請求來恢復保持的呼叫。

2.false若是此時從新協商不可能,則返回。

Options      可選Object附加參數。見下文。

Done        Function從新談判成功後可選擇調用。

options對象中的字段

useUpdate     Boolean發送更新而不是從新邀請

extraHeaders   Array的Strings額外SIP頭的請求。

 

renegotiate()

1.強制進行SDP從新協商。修改附加到底層的本地流RTCPeerConnection(經過connection屬性)後頗有用。

2.false若是此時從新協商不可能,則返回。

Options    可選Object附加參數。見下文。

Done      Function從新談判成功後可選擇調用。

options對象中的字段

useUpdate          Boolean發送更新而不是從新邀請

extraHeaders        Array的Strings額外SIP頭的請求。

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

isOnHold()

返回一個Object屬性爲「local」和「remote」的Boolean值以及與每一個屬性關聯的值。它表示「本地」和/或「遠程」對等體是否處於保持狀態。

例:

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. 返回一個Object屬性「音頻」和「視頻」,並Boolean與每一個值關聯的值。它表明本地「音頻」和/或「視頻」是否靜音。

            例:

            rtcsession.isMuted();

{

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

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

}

 

refer(target, options=null)

     1.將引用對象的REFER方法做爲引用資源發送給給定的目標。

2.甲REFER方法隱含地生成訂閱的參考狀態。從對端接收到的NOTIFY請求將以事件形式進行處理和呈現JsSIP.RTCSession.ReferSubscriber。

參數:

Target    參考資源。String表示目標用戶名或完整的SIP URI或JsSIP.URI實例。

Options   可選Object附加參數(見下文)。

options對象中的字段

extraHeaders     可選Array的Strings額外SIP頭的REFER請求。

eventHandlers  可選Object的事件處理程序將被註冊爲JsSIP.RTCSession.ReferSubscriber。

replaces         可選JsSIP.RTCSession實例該對話框意味着在參照目標處被替換。這是此用戶代理與Refer-To資源指向的實時會話。

 

resetLocalMedia()

       經過啓用音頻和視頻軌道來重置本地MediaStream(除非遠程對等體處於保留狀態)。

事件:

JsSIP.RTCSession類定義了一系列事件。他們每一個人都容許回調函數註冊,以便讓用戶執行每一個給定的刺激函數。

Peerconnection

1.一旦底層RTCPeerConnection被建立,就會被觸發。應用程序有機會經過例如添加一個RTCDataChannel或者設置相應的事件監聽器來改變對等鏈接。

data傳出會話中的事件字段

peerconnection    該RTCPeerConnection實例。

例:

var datachannel;

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

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

});

 

Connecting

1.在本地媒體流加入RTCSession以後,在ICE採集開始以前觸發初始INVITE請求或「200 OK」響應傳輸。

data傳入會話中的事件字段

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

data傳出會話中的事件字段

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

Sending

1.在發送初始INVITE以前觸發(僅用於撥出電話)。它爲應用程序提供了一個調用SIP INVITE或其SDP的機會。

data傳出會話中的事件字段

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

 

Progress

1.在接收或生成對INVITE請求的1XX SIP類別響應(> 100)時觸發。

2.事件在SDP處理以前被觸發,若是存在的話,能夠根據須要調整它,甚至刪除對象中響應參數的主體data。

data傳入會話中的事件字段

originator   '本地' String。

data傳出會話中的事件字段

originator    '遙遠' String。

Response    JsSIP.IncomingResponse接收到的SIP 1XX響應的實例。

Accepted

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

data傳入會話中的事件字段

originator    '本地' String。

data傳出會話中的事件字段

originator    '遙遠' String。

Response    JsSIP.IncomingResponse收到的SIP 2XX響應的實例。

 

Confirmed

1.通話確認(ACK收到/發送)時觸發。

data傳入會話中的事件字段

originator    '本地' String。

data傳出會話中的事件字段

originator    '遙遠' String。

Response    JsSIP.IncomingResponse收到的SIP 2XX響應的實例。

 

Ended

1.已創建的通話結束時觸發。

事件data字段

Originator   '本地'/'遠程'/'系統' String。呼叫終止來自哪裏?

Message    JsSIP.IncomingRequest或JsSIP.IncomingResponse當originator值爲「遠程」 時產生呼叫終止的實例,null不然。

Cause      失敗和最終緣由的一個價值。

 

Failed

1.當會議沒法創建時被解僱。

事件data字段

Originator    '本地'/'遠程'/'系統' String。通話失敗來自哪裏?

Message     JsSIP.IncomingRequest或JsSIP.IncomingResponse當originator值爲「遠程」 時產生呼叫失敗的實例,null不然。

Cause       失敗和最終緣由的一個價值。

 

newDTMF

1.爲傳入或傳出的DTMF啓動。

data傳入DTMF的事件字段

originator    '遙遠' String。新的DTMF由遠程對端生成。

Dtmf        JsSIP.RTCSession.DTMF 實例。

Request      JsSIP.IncomingRequest收到的INFO請求的實例。

data傳出DTMF的事件字段

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

Dtmf        JsSIP.RTCSession.DTMF 實例。

Request      JsSIP.OutgoingRequest傳出INFO請求的實例。

 

newInfo

1.爲傳入或傳出的SIP INFO消息而啓動。

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

Originator    '遙遠' String。新的SIP INFO消息由遠程對等體生成。

Info         JsSIP.RTCSession.Info 實例。

Request      JsSIP.IncomingRequest收到的INFO請求的實例。

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

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

Info         JsSIP.RTCSession.Info 實例。

Request      JsSIP.OutgoingRequest傳出INFO請求的實例。

 

Hold  保持;

          1.當用戶或同伴把對方擱置的時候被解僱。

事件data字段

Originator    String若是另外一個對等方已經讓用戶保持「遠程」 狀態。String若是用戶已經把另外一個對方掛起,則爲「本地」 。

Unhold  取消保持;

     1. 當用戶或對方恢復對方的保持狀態時觸發。

事件data字段

Originator   String若是其餘對等方已將用戶從保持狀態恢復,則爲「遠程」 。String若是用戶已經恢復另外一個對等體,則爲「本地」 。

 

Muted  靜音;

 1. 本地媒體靜音時被解僱

事件data字段

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

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

Unmuted  取消靜音;

1.在當地媒體取消解散時被解僱。

事件data字段

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

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

 

Reinvite  從新邀請;

1.收到對話中的reINVITE時觸發。

事件data字段

Request    JsSIP.IncomingRequest 收到的reINVITE請求的實例。

Callback    最初undefined。若是用戶在這裏設置了一個函數,那麼一旦reINVITE被處理,它就會被執行。

reject()    拒絕Method,若是再要執行INVITE被拒絕。默認使用403響應碼。

事件data.reject()參數

Options    可選Object附加參數(見下文)。

options對象中的字段

extraHeaders    Array的Strings額外SIP頭的MESSAGE請求。

status_code     Number介於300和699之間,表明SIP響應碼。

reason_phrase   String表明SIP緣由詞組。

 

Update  更新;

   1.收到對話中的UPDATE時觸發。

事件data字段

Request    JsSIP.IncomingRequest收到的更新請求的實例。

Callback    最初undefined。若是用戶在這裏設置一個函數,那麼一旦UPDATE被處理,它就會被執行。

reject()    拒絕Method,若是再要執行INVITE被拒絕。默認使用403響應碼。

事件data.reject()參數

Options    可選Object附加參數(見下文)。

options對象中的字段

extraHeaders    Array的Strings額外SIP頭的MESSAGE請求。

status_code     Number介於300和699之間,表明SIP響應碼。

reason_phrase   String表明SIP緣由詞組。

 

Refer  參考;

1.收到對話中的REFER時觸發。

2.若是授予參考批准,JsSIP.RTCSession則在參考標題字段中指示的目標生成新的傳出。

3.該NOTIFY機制被用於通知代理器發送的REFER中定義的參考的狀態RFC 3515。

4.NOTE:Refer-To資源能夠在傳入屬性中訪問。JsSIP.IncomingRequest refer_to JsSIP.URI

事件data字段

Request    JsSIP.IncomingRequest收到的REFER請求的實例。

accept()    Method若是接受REFER,贊成批准。這將生成一個傳出JsSIP.RTCSession到引用到URI標識的資源。

reject()     贊成拒絕Method,若是要執行REFER被拒絕。

事件data.accept()參數

newRTCSession(session)    可選的回調Function表明新的傳出的事件執行。若是沒有定義,則前一個事件將被髮射。JsSIP.UA newRTCSessionRTCSessionfunction

options             可選Object提供傳出的選項JsSIP.RTCSession。該參數的語義對應於方法的可選參數。JsSIP.UA call

事件data.reject()參數   這個方法不須要任何參數。

 

Replaces  取代;

1.經過Replaces標題字段收到指向這個INVITE的對話INVITE時觸發。RTCSession

2.批准後,如今JsSIP.RTCSession終止,當新的創建。

事件data字段

Request    JsSIP.IncomingRequest收到的INVITE請求的實例。

accept()   Method若是接受邀請,贊成批准。一個傳入JsSIP.RTCSession將被生成。

reject()    Method若是INVITE被拒絕,贊成拒絕執行。

事件data.accept()參數

newRTCSession(session)    可選的回調Function表明新來的事件執行。若是沒有定義,則前一個事件將被髮射。JsSIP.UA newRTCSessionRTCSessionfunction

事件data.reject()參數    這個方法不須要任何參數。

 

Sdp

1.在將遠程SDP傳遞給RTC引擎以前以及在發送本地SDP以前觸發。

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

 

事件data字段

Originator    String指示SDP是本地生成的仍是遠程接收的。可能的值是local或remote分別。

Type        String代表SDP是一個offer仍是一個answer。

Sdp         String表明SDP。必須直接對此參數進行修改。

 

Getusermediafailed

1.內部通話getUserMedia()失敗時觸發。它提供了DOMError做爲參數。

peerconnection:createofferfailed

1.內部通話createOffer()失敗時觸發。它提供了DOMError做爲參數。

peerconnection:createanswerfailed

    1.內部通話createAnswer()失敗時觸發。它提供了DOMError做爲參數。

peerconnection:setlocaldescriptionfailed

    1.內部通話setLocalDescription()失敗時觸發。它提供了DOMError做爲參數。

peerconnection:setremotedescriptionfailed

    1.內部通話setRemoteDescription()失敗時觸發。它提供了DOMError做爲參數。

  

類 JsSIP.Message

基於SIP 消息的IM。

實例屬性:

Direction 方向;

String指示誰發送了MESSAGE消息。當MESSAGE由遠程對等體發送時,可能的值是「傳入」,或者當MESSAGE由本地用戶發送時,可能的值是「 傳出」 。

local_identity

JsSIP.NameAddrHeader指示本地身份的實例。它對應於方向爲「傳出」時的MESSAGE From頭部值,以及當方向爲「傳入」時的To頭部值

 

remote_identity

JsSIP.NameAddrHeader指示遠程身份的實例。當方向是「傳出」時它對應於MESSAGE To標題值,當方向是「傳入」時對應於From標題值,

 

實例方法

send(target, body, options=null)

1.經過WebSocket鏈接發送消息。此方法僅適用於傳出消息。

參數:

Target    消息的目的地。String表示目標用戶名或完整的SIP URI。

Body     消息內容。String表明消息的主體。

Options   可選Object附加參數(見下文)。

options對象中的字段

contentType     可選String表明正文的內容類型。默認text/plain。

eventHandlers    Object事件處理程序的可選項將被註冊到每一個消息事件。爲每一個要通知的事件定義事件處理程序。

extraHeaders    Array的Strings額外SIP頭的MESSAGE請求。

例:

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.積極響應傳入的消息。指示發送者已被傳送到目的地。此方法僅適用於傳入消息。

參數

Options       可選Object附加參數(見下文)。

options對象中的字段

extraHeaders    Array的Strings額外SIP頭的MESSAGE請求。

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

注意:若是設置了此參數,則必須在'extraHeader'字段中設置相應的'Content-Type'標題字段。

 

reject(options)

1.對傳入的消息作出負面的反應。指示發件人還沒有傳送到目的地。響應代碼和緣由決定了拒絕緣由。此方法僅適用於傳入消息。

參數

Options        可選Object附加參數(見下文)。

options對象中的字段

extraHeaders    Array的Strings額外SIP頭的MESSAGE請求。

status_code     Number介於300和699之間,表明SIP響應碼。

reason_phrase    String表明SIP緣由詞組。

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

注意:若是設置了此參數,則必須在'extraHeader'字段中設置相應的'Content-Type'標題字段。

事件:

JsSIP.Message類定義了一系列事件。他們每一個人都容許回調函數註冊,以便讓用戶執行每一個給定的刺激處理程序。

succeeded

1.在收到MESSAGE請求的最終確定響應時觸發。

 

事件data字段

Originator    '遙遠' String。遠程同級對SIP MESSAGE做出了積極響應。

Response    JsSIP.IncomingResponse 收到的2XX響應的實例。

 

failed

1.若是沒有收到發送的MESSAGE消息,則會觸發。

事件data字段

Originator    '遠程'/'系統' String。MESSAGE失敗來自哪裏?

Response    JsSIP.IncomingResponse生成失敗的實例的原始值remote,不然爲null。

Cause    失敗和最終緣由的一個價值。

 

類 JsSIP.OutgoingRequest

        這個實例JsSIP.OutgoingRequest持有一個SIP請求被髮送。

實例屬性

method

String指示SIP請求方法。

ruri

JsSIP.URI表示請求目標URI的實例。

cseq

Number 表明CSeq號碼。

call_id

String 表示Call-ID頭字段值。

from

JsSIP.NameAddrHeader 表示From標題字段的值。

to

JsSIP.NameAddrHeader 表示To頭字段值。

body

String 表明請求主體。

 

實例方法

setHeader(name, value)

用給定的值填充給定的標題。

 

參數

Name    String 指示標題名稱。

Value    由a表示標頭值(一個或多個)String或Array的Strings。

getHeader(name)

獲取給定標題名稱的第一個值。返回一個String頭的值,或者null頭不存在。

參數

Name    String 指示標題名稱。

getHeaders(name)

獲取給定名稱的標題。返回Array的Strings含有爲給定標題名稱的全部值。

參數

Name    String 指示標題名稱。

hasHeader(name)

驗證給定標題的存在。true若是標題存在false則返回,不然返回

參數

Name    String 指示標題名稱。

toString()

返回一個String生成的SIP請求。

 

類 JsSIP.IncomingMessage

實例屬性

method

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

from

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

to

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

body

String表示SIP消息體,null若是沒有主體存在。

 

實例方法

countHeader(name)

計算給定標題名稱的標題數量。返回Number給定名稱的頭文件。

參數

Name    String 指示標題名稱。

getHeader(name)

獲取給定標題名稱的第一個值。返回一個String頭的值,或者null頭不存在。

參數

Name    String 指示標題名稱。

getHeaders(name)

獲取給定名稱的標題。返回Array的Strings含有爲給定標題名稱的全部值。

參數

Name    String 指示標題名稱。

hasHeader(name)

驗證給定標題的存在。true若是標題存在false則返回,不然返回。

參數

Name    String 指示標題名稱。

parseHeader(name, idx)

分析給定位置處的指定標題。若是標題不存在或解析錯誤Object,undefined則返回解析的標題(an )。

參數

Name    String 指示標題名稱。

Idx    標題索引(Number)被解析。默認值是0(第一個標題)。

 

toString()

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

類 JsSIP.IncomingRequest

     JsSIP.IncomingRequest持有收到的SIP請求的實例。

父級  JsSIP.IncomingRequest繼承JsSIP.IncomingMessage。

實例屬性

ruri

JsSIP.URI表示請求URI的的SIP消息。

 

類 JsSIP.IncomingResponse

JsSIP.IncomingResponse保存收到的SIP響應的實例。

父級   JsSIP.IncomingResponse繼承JsSIP.IncomingMessage。

實例屬性

status_code

Number指示SIP響應的狀態碼。

reason_phrase

String指出SIP響應的緣由詞組。

 

類 JsSIP.Socket

1.本節介紹的Socket接口從用於發送和接收SIP流量的機制中抽象出JsSIP 。JsSIP內部傳輸如今處理這個接口,所以,它不做爲傳輸套接字鏈接到內置的WebSocket。

2.實現必須遵循這裏指定的接口,以使JsSIP與底層傳輸機制一塊兒工做。

3.JsSIP公開了一個JsSIP.WebSocketInterface爲瀏覽器環境實現這個接口的內置類。Node.js的實現也能夠經過:jssip-node-websocket。

實例屬性

via_transport

String 指示Via頭域中用於傳出請求的Via傳輸。

url

String識別套接字URL。它用於調試目的。

sip_uri

String指示鏈接端點SIP URI。用於SIP路由標題字段。

實例方法

connect()

當須要發送和接收數據的套接字可用性時,由JsSIP調用。只要套接字準備就緒,或套接字沒法鏈接或不可用,就必須當即調用

事件處理程序。onconnectondisconnect

disconnect()

如今再也不須要套接字時,由JsSIP調用。

在這個調用以後調用的事件處理程序將被忽略。

send(data)

當須要發送給定的數據時,由JsSIP調用。

true數據成功發送時返回。false除此之外。

參數:

Data    String 表示要發送的數據。

事件處理程序

onconnect()

當套接字變得可用於發送和接收數據以後,必須connect被調用,或者主動斷開發生。

ondisconnect(error, code, reason)

當套接字變得不可用於發送或接收數據時,必須調用它。

參數

Error   Boolean 指示套接字是否因爲錯誤而斷開鏈接

Code    可選Number指示套接字斷開代碼。

Reason   可選String指示插座斷開緣由。

ondata(data)

當有完整的SIP消息被JsSIP處理時,必須被調用。

參數

Data    String或Binary數據的表示。

 

類 JsSIP.WebSocketInterface

1.JsSIP內置的JsSIP.Socket瀏覽器環境界面。

2.若是須要,屬性設置器容許套接字自定義。

實例屬性

取一個String表示WebSocket服務器URL的參數。

屬性設置器

via_transport(value)

String 指示Via頭域中用於傳出請求的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該類的一個實例表示一個SIP URI,並提供一組屬性和方法來檢索和設置一個URI的不一樣部分。

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

3.URI容許其自己被clonned因此第二URI能夠從自己來造成。

實例化

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

2.若是沒有host值傳遞,這個類的實例化將引起一個異常。

 

Scheme     可選String表示URI方案。默認值是issip

User        可選String指示用戶名稱。

Host        String表明主人。它能夠是IP地址或主機名。

Parameters   可選Object屬性值以String表單形式表示。對於空參數,null必須指示一個值。

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"

實例屬性

scheme

設置或獲取一個String指示URI方案。

uri.scheme = 'sip';

uri.scheme // Returns 'sip'

uri.scheme = 'sIP';

uri.scheme // Returns 'sip'

user

設置或獲取一個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

設置或獲取一個String指示URI主機。

uri.host = 'atlanta.com';

uri.host // Returns 'atlanta.com'

uri.host = 'AtLATta.cOm';

uri.host // Returns 'atlanta.com'

port

設置或獲取一個Number指示URI端口。

uri.port = 5060;

uri.port // Returns 5060

uri.port = '5060';

uri.port // Returns 5060

實例方法

setParam(key, value=null)

用給定的值建立或替換給定的URI參數。

參數

Key    String 指示參數名稱。

Value   可選,String指示參數值。

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

getParam(key)

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

參數

Key   String 指示參數名稱。

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

hasParam(key)

驗證給定的URI參數的存在。返回true參數是否存在,false不然返回。

參數

Key    String 指示參數名稱。

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

deleteParam(key)

從URI中刪除給定的參數。

參數

Key    String 指示參數名稱。

uri.deleteParam('param_name');

clearParams()

刪除全部的URI參數。

setHeader(key, value)

使用給定值建立或替換給定的URI標頭。

參數

Key    String 指示標題名稱。

Value   String或者Array指示標題值。

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

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

getHeader(key)

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

參數

Key    String 指示標題名稱。

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)

驗證給定URI標頭的存在。true若是標題存在false則返回,不然返回。

參數

Key   String 指示標題名稱。

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

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

deleteHeader(key)

從URI中刪除給定的標題。

參數

Key    String 指示標題名稱。

uri.delteHeader('header_name');

clearHeaders()

刪除全部的URI標頭。

uri.clearHeaders();

clone()

返回JsSIP.URI該URI的克隆實例。

cloned_uri = uri.clone();

cloned_uri === uri // Returns false

toString()

返回一個String表示URI。

不能轉義的字符會按照RFC 3261的BNF語法中的規定進行轉義。

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

toAor()

返回一個String表示URI的AoR 。

不能轉義的字符會按照RFC 3261的BNF語法中的規定進行轉義。

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

uri.user = 'j%40s0n'

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

模塊功能

parse(uri)

String根據SIP URI語法規則解析給定的內容。JsSIP.URI若是解析成功則返回一個實例,undefined不然返回。

參數

Uri   String表明一個SIP URI。

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

 

類 JsSIP.NameAddrHeader

JsSIP.NameAddrHeader該類的實例包含RFC 3261的BNF語法中所述的「name-addr」或「addr-spec」值。

「name-addr」值的格式是「display name < URI >」。

例:

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

「addr-spec」值的格式爲「 URI 」。

例:

From: sip:alice@atlanta.com

實例化

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

若是沒有uri值傳遞,這個類的實例化將引起一個異常。

參數

Uri            JsSIP.URI 實例。

display_name   可選String指示顯示名稱。

Parameters     可選Object屬性值以String表單形式表示。對於空參數,null必須指示一個值。

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'

實例屬性

display_name

設置或獲取一個String指示標題顯示名稱。

header.display_name = 'Mrs. Alice';

uri

Getter爲JsSIP.URI這個「名字地址」 的實例。

header.display_name = 'Mrs. Alice';

實例方法

setParam(key, value=null)

用給定的值建立或替換給定的頭部參數。

參數

Key    String 指示參數名稱。

Value   可選,String指示參數值。

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

getParam(key)

獲取給定標題參數的值。返回undefined參數集中不存在的參數。

參數

Key    String 指示參數名稱。

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

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

hasParam(key)

驗證給定的頭參數的存在。返回true參數是否存在,false不然返回。

參數

Key    String 指示參數名稱。

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

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

deleteParam(key)

從頭中刪除給定的參數。

參數

Key    String 指示參數名稱。

header.deleteParam('param_name');

clearParams()

刪除全部標題參數。

clone()

返回JsSIP.NameAddrHeader標頭的克隆實例。

cloned_header = header.clone();

cloned_header === header // Returns false

toString()

返回一個String表示標題。

不能轉義的字符會按照RFC 3261的BNF語法中的規定進行轉義。

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

模塊功能

parse(nameAddrHeader)

String根據名稱地址頭文法規則解析給定的內容。JsSIP.NameAddrHeader若是解析成功則返回一個實例,undefined不然返回。

參數

nameAddrHeader    String 表示名稱地址標題字段值。

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中運行時,該模塊爲JsSIP提供了WebSocket支持。從JsSIP代碼中分離這個模塊的目的是爲了防止在瀏覽器環境中編譯Node.js websocket模塊

UA配置參數

JsSIP.UA須要具備強制參數和可選參數的配置對象

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

強制參數

URI

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

uri: "sip:alice@example.com"

sockets

   一組

相關文章
相關標籤/搜索