Клиент Twilio webrtc: Ошибка «Ошибка согласования ICE с Twilio» после первого вызова - PullRequest
0 голосов
/ 31 октября 2018

Я использую сервер узлов (v10.12.0) в Ubuntu (16.04.5), работающий на порту 443. Я создал приложение Twiml в Twilio для маршрутизации входящих вызовов на мой клиент 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();
}

Когда я загружаю страницу в первый раз, я могу принять входящий звонок без каких-либо ошибок. Но при повторном звонке без перезагрузки страницы появляется ошибка:

ОШИБКА: не удалось согласовать ICE с Twilio. Вызов прервется.

Когда я отвечаю на второй вызов, консоль Chrome отображает эту ошибку:

Uncaught TypeError: Невозможно прочитать свойство 'sdp' из null в g.getSDP (twilio.min.js: 103) at twilio.min.js: 95

Я уже изучил этот документ от twilio и убедился, что с брандмауэром проблем нет.

Поэтому я добавил код для перезагрузки страницы после отключения вызова.

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

Интересно, кто-нибудь знает какое-либо решение, кроме перезагрузки страницы?

1 Ответ

0 голосов
/ 01 ноября 2018

Я использовал Twilio Client API версии 1.3. Я изменил его на 1.4 (media.twiliocdn.com/sdk/js/client/v1.4/twilio.min.js). Теперь, похоже, работает.

...