Twilio WebRTC客户端:首次调用后出现错误“与Twilio的ICE协商失败”

时间:2018-10-31 10:49:36

标签: twilio webrtc

我正在端口443上运行的ubuntu(16.04.5)中运行节点服务器(v10.12.0)。我在Twilio中创建了一个Twiml应用程序,以将传入的呼叫路由到我的webrtc客户端。 我的JS文件:

$(document).ready(function() {
  $.post("/token/generate", function(data) {
    Twilio.Device.setup(data.token);
  });
});

/* Callback for when Twilio Client initiates a new connection */
Twilio.Device.connect(function (connection) {
  //In call...
});

/* Callback for when Twilio Client receives a new incoming call */
Twilio.Device.incoming(function(connection) {
  connection.accept(function() {
    //In call...
  });
  answerButton.click(function() {
    connection.accept();
  });
});

/* End a call */
function hangUp() {
  Twilio.Device.disconnectAll();
}

当我第一次加载页面时,我可以无任何错误地接听来电。但是当我再次致电而不重新加载页面时,出现错误:

  

错误:与Twilio的ICE协商失败。通话将终止。

当我接听第二个电话时,chrome控制台显示此错误:

  

未捕获的TypeError:无法读取null的属性“ sdp”       在g.getSDP(twilio.min.js:103)       在twilio.min.js:95

我已经研究过twilio的doc,并且验证了防火墙没有问题。

因此,我添加了代码以在断开呼叫后重新加载页面。

Twilio.Device.disconnect(function(connection) {
  // Reloading page to avoid ICE error.
  location.reload();
});

我想知道是否有人除了重新加载页面外还知道其他解决方案?

1 个答案:

答案 0 :(得分:0)

我正在使用twilio客户端api版本1.3。我将其更改为1.4(media.twiliocdn.com/sdk/js/client/v1.4/twilio.min.js)。现在它似乎正在工作。