Как отправить Twilio-соединение и принять его в другой функции на Twilio Client Javascript SDK? - PullRequest
1 голос
/ 18 января 2020

Я использую быстрый запуск Twilio JS SDK для совершения и приема звонков на моем сайте: https://www.twilio.com/docs/voice/client/javascript/quickstart

https://www.twilio.com/docs/voice/client/javascript/connection

Когда я получаю телефонный звонок, я хочу подключиться к этому входящему звонку, нажав кнопку, поэтому это мой код:

HTML:

<div id="register"></div>

JS:

function capable(tkn){ //tkn is the token.
 var devices;
 devices = new Twilio.Device(tkn, {
  // Set Opus as our preferred codec. Opus generally performs better, requiring less bandwidth and
  // providing better audio quality in restrained network conditions. Opus will be default in 2.0.
  allowIncomingWhileBusy: true,
  codecPreferences: ['opus', 'pcmu'],
  // Use fake DTMF tones client-side. Real tones are still sent to the other end of the call,
  // but the client-side DTMF tones are fake. This prevents the local mic capturing the DTMF tone
  // a second time and sending the tone twice. This will be default in 2.0.
  fakeLocalDTMF: true,
  sounds: {
    incoming: 'https://www.mywebsite.com/audio/ring-ring.mp3'
  }

 });

 devices.on('incoming', function (conn) {
   console.log('Incoming connection from ' + conn.parameters.From);
   var telf = conn.parameters.From;
   var reg = '<div class="reg_item">';
   reg += '<p>Caller: </p>' + telf;
   reg += '<button onclick="answerB('+conn+');" class="btn btn-md btn-success"><i class="fa fa-phone" aria-hidden="true"></i></button>';
   reg += '</div>';

   $("#register").prepend(reg);
 }

}

function answerB(idx){
  console.log(idx);
  idx.accept();
}

Кажется, что это не работает, показывая эту ошибку:

enter image description here

Консоль:

enter image description here

Как я могу это исправить?

Мне нужна ваша помощь.

Спасибо.

1 Ответ

1 голос
/ 18 января 2020

Вместо этого:

console.log('Incoming connection from ' + conn.parameters.From);
var telf = conn.parameters.From;
var reg = '<div class="reg_item">';
reg += '<p>Caller: </p>' + telf;
reg += '<button onclick="answerB(' + conn + ');" class="btn btn-md btn-success"><i class="fa fa-phone" aria-hidden="true"></i></button>';
reg += '</div>';

$("#register").prepend(reg);

изменить на это:

console.log('Incoming connection from ' + conn.parameters.From);
var telf = conn.parameters.From;
var reg = '<div class="reg_item">';
reg += '<p>Caller: </p>' + telf;
reg += '<button id="button-answer" class="btn btn-md btn-success"><i class="fa fa-phone" aria-hidden="true"></i></button>';
reg += '</div>';

$("#register").prepend(reg);
$("#button-answer").on("click", conn, answerB);

и ваша функция answerB должна быть:

function answerB(event) {
    console.log(event.data);
    event.data.accept();
}

Дайте мне знать, если вам удалось заставить ее работать.

...