JsSIP实施

时间:2017-04-04 08:34:36

标签: jquery websocket webrtc jssip

我在一家电信公司工作。我们想开发一个带有JsSIP库的SIP电话。但我们不能这样做。我们创建一个基本的测试形式,如下所示:

var socket = new JsSIP.WebSocketInterface('*****');
var configuration = {
  sockets  : [ socket ],
  uri      : '*****',
  password : '*****'
};

var ua = new JsSIP.UA(configuration);

ua.start();

// Register callbacks to desired call events
var eventHandlers = {
  'progress': function(e) {
    console.log('call is in progress');
  },
  'failed': function(e) {
    console.log('call failed with cause: '+ e.data.cause);
  },
  'ended': function(e) {
    console.log('call ended with cause: '+ e.data.cause);
  },
  'confirmed': function(e) {
    console.log('call confirmed');
  }
};

var options = {
  'eventHandlers'    : eventHandlers,
  'mediaConstraints' : { 'audio': true, 'video': true }
};

var session = ua.call('680', options);

以上代码正常运作。我们可以在任何地方打电话,但不是来电话用户的声音。我怎样才能做到这一点?我们该怎么办?有没有人有这个项目的示例代码?

4 个答案:

答案 0 :(得分:1)

如果您正在寻找示例代码,请随时查看react-sip(一个有助于将JsSIP嵌入到React应用程序中的软件包)的实现。特别是,即使不使用React,您也可能会发现the source of <SipProvider/> component很有用。

也许,您没有听到用户语音的原因是您的页面上没有HTML5 <audio/> DOM元素,该元素附加到您的JsSIP实例。

以下是您应该添加的内容:

// in the beginning, e.g. before you create an instance of JsSIP.WebSocketInterface
var remoteAudio = window.document.createElement('audio');
window.document.body.appendChild(remoteAudio);
// inside rtcSession.on('accepted', function() {...})
remoteAudio.src = window.URL.createObjectURL(
  rtcSession.connection.getRemoteStreams()[0]
);
remoteAudio.play();
// rtcSession comes from an argument in
// ua.on('newRTCSession', ({ originator, session: rtcSession }) => {});
// when no longer need to make calls (e.g. on user logout)
delete remoteAudio;

答案 1 :(得分:0)

如果呼叫已建立,但没有音频路径,则呼叫者/被呼叫者的SDP端点可能无法相互访问。

呼叫将断开原因&#34; RTP超时&#34;在那种情况下。

以下是一些提示:

  1. 通过运行JsSIP.debug.enable(&#39; JsSIP:*&#39;)来打开JSSIP控制台调试;

  2. 重新加载页面。

  3. 拨打电话并查看浏览器上的控制台日志以获取更多详细信息。

  4. 更多信息:http://jssip.net/documentation/3.0.x/api/debug/

    如果您看到错误的SDP IP地址组出来或进入,则ICE候选项不正确或不正确。

    在这种情况下需要调整STUN和其他配置设置。 http://jssip.net/documentation/0.3.x/api/ua_configuration_parameters/

    另外,请参阅jssip演示页面,查看源代码,以及了解应用其他配置的方式/方式。 https://tryit.jssip.net/

答案 2 :(得分:0)

session.connection.addEventListener('addstream',function(e) {  // Or addtrack
        remoteAudio.srcObject = e.stream;
        remoteAudio.play();

     });

答案 3 :(得分:0)

我一直在与此相同。

我正在尝试在nodejs中运行此代码。在测试环境中使用本地pbx设置

每次我浏览我的端点时,都会给我一个未定义的错误窗口。 我的目标是尝试使用我的100分机号达到1000分机号

请检查以下代码

app.get('/api/sip/outbound' , (req, res) => {

    var socket = new JsSIP.WebSocketInterface('wss://10.110.3.230:7443');

    var configuration = {
      sockets  : [ socket ],
      uri      : 'sip:100@10.110.3.230',
      password : '100'
    };

    var ua = new JsSIP.UA(configuration);

    ua.start();

    // Register callbacks to desired call events
    var eventHandlers = {
      'progress': function(e) {
        console.log('call is in progress');
      },
      'failed': function(e) {
        console.log('call failed with cause: '+ e.data.cause);
      },
      'ended': function(e) {
        console.log('call ended with cause: '+ e.data.cause);
      },
      'confirmed': function(e) {
        console.log('call confirmed');
      }
    };

    var options = {
      'eventHandlers'    : eventHandlers,
      'mediaConstraints' : { 'audio': true, 'video': true }
    };

    var session = ua.call('1000', options);


})

下面的错误

at RTCSession.connect (/home/local-dev/Projects/PBX/mobile_pbx/api/node_modules/jssip/lib-es5/RTCSession.js:269:7)
at UA.call (/home/local-dev/Projects/PBX/mobile_pbx/api/node_modules/jssip/lib-es5/UA.js:241:15)
at /home/local-dev/Projects/PBX/mobile_pbx/api/app.js:50:22
at Layer.handle [as handle_request] (/home/local-dev/Projects/PBX/mobile_pbx/node_modules/express/lib/router/layer.js:95:5)
at next (/home/local-dev/Projects/PBX/mobile_pbx/node_modules/express/lib/router/route.js:137:13)
at Route.dispatch (/home/local-dev/Projects/PBX/mobile_pbx/node_modules/express/lib/router/route.js:112:3)
at Layer.handle [as handle_request] (/home/local-dev/Projects/PBX/mobile_pbx/node_modules/express/lib/router/layer.js:95:5)
at /home/local-dev/Projects/PBX/mobile_pbx/node_modules/express/lib/router/index.js:281:22
at Function.process_params (/home/local-dev/Projects/PBX/mobile_pbx/node_modules/express/lib/router/index.js:335:12)
at next (/home/local-dev/Projects/PBX/mobile_pbx/node_modules/express/lib/router/index.js:275:10)