2

我在一家电信公司工作。我们想开发一个带有 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

4 回答 4

1

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

在这种情况下,呼叫将断开连接,原因是“RTP 超时”。

以下是一些提示:

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

  2. 重新加载页面。

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

更多信息: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/

于 2017-04-04T19:35:46.040 回答
1

如果您正在寻找示例代码,请随时查看react-sip(帮助将 JsSIP 嵌入 React 应用程序的包)的实现。特别是,即使不使用 React ,您也可能会发现组件的来源很有用。<SipProvider/>

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

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

// 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;
于 2017-08-19T18:11:10.843 回答
1

我一直在做同样的事情。

我正在尝试在 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)
于 2020-04-27T08:09:37.630 回答
0
session.connection.addEventListener('addstream',function(e) {  // Or addtrack
        remoteAudio.srcObject = e.stream;
        remoteAudio.play();

     });
于 2020-02-07T22:26:18.180 回答