twilio se une a dos llamadas salientes no trabajando en nodo js

Según la documentación Aquí.He creado el siguiente script pero no funciona.

const accountSid = 'xxxxxxxxxxxxxxx';
const authToken = 'xxxxxxxxxxxxxx';
const client = require('twilio')(accountSid, authToken);

connectNumbers('+1xxxxxxxxxxx','+1xxxxxxxxx');

function connectNumbers(number1, number2) {
  [number1, number2].forEach(function(number) {
    client.calls.create({
      url: 'https://2f3b18f01640.ngrok.io/voice/callConference.xml',
      to: number,
      from: '+1xxxxxxxxxxx',
    })
    .then((call) => process.stdout.write(`Called ${number}`));
  })
}

Dos veces. enlace produce el siguiente xml:



My conference


¿Puede alguien decirme qué hice mal?

Pregunta hecha hace 3 años, 5 meses, 1 días - Por codecrusaderx58e2


3 Respuestas:

  • Según el puesto Aquí. encontró la solución. Código de estado HTTP devuelto 405 que significa que me perdí para añadir el método 'GET'. Ahora está funcionando bien.

    function connectNumbers(number1, number2) {
      [number1, number2].forEach(function(number) {
        client.calls.create({
          method: 'GET',
          url: 'https://2f3b18f01640.ngrok.io/voice/callConference.xml',
          to: number,
          from: '+1xxxxxxxxxxx',
        })
        .then((call) => process.stdout.write(`Called ${number}`));
      })
    }
    

    Respondida el Dec 16, 2020 a las 11:51 - por byteninja

    Votos positivos: 0 | Votos negativos: 0

  • El problema principal en tu código parece estar relacionado con la forma en que estás manejando las dos llamadas salientes y uniéndolas en una conferencia. Aquí tienes algunas sugerencias para corregirlo:

    • En el XML que estás generando para unir las dos llamadas en una conferencia, necesitas asignar un nombre único a la conferencia. Actualmente estás usando "My conference", pero sería más seguro utilizar un nombre único, por ejemplo, basado en un identificador único o alguna variante para evitar conflictos.
    • Para unir las dos llamadas salientes en una conferencia, necesitas realizar una acción adicional después de haber iniciado las dos llamadas. Esto implica más lógica en tu código para gestionar esta operación.

    Aquí hay un ejemplo modificado de cómo podrías realizar esta operación en tu código:

    ```javascript const accountSid = 'xxxxxxxxxxxxxxx'; const authToken = 'xxxxxxxxxxxxxx'; const client = require('twilio')(accountSid, authToken);

    const conferenceName = 'UniqueConferenceName'; // Nombre único para la conferencia

    connectNumbers('+1xxxxxxxxxxx', '+1xxxxxxxxx');

    function connectNumbers(number1, number2) { let callSidArray = [];

    [number1, number2].forEach(function(number) { client.calls.create({ url: 'https://2f3b18f01640.ngrok.io/voice/callConference.xml', to: number, from: '+1xxxxxxxxxxx', }) .then((call) => { process.stdout.write(Called ${number}); callSidArray.push(call.sid);

      if (callSidArray.length === 2) {
        setTimeout(() => {
          client.conferences.create({
            friendlyName: conferenceName,
            statusCallback: 'https://2f3b18f01640.ngrok.io/conferenceCallback', // URL de retorno para manejar la conferencia
            waitUrl: 'https://2f3b18f01640.ngrok.io/conferenceWait.xml' // XML para mantener en espera las llamadas antes de unirlas
          })
          .then(conference => {
            callSidArray.forEach(callSid => {
              client.conferences(conference.sid)
                .participants.create({ 
                  to: callSid,
                  from: '+1xxxxxxxxxxx'
                });
            });
          });
        }, 5000); // Espera 5 segundos para asegurarse de que ambas llamadas están establecidas
      }
    });
    

    }); } ```

    Recuerda realizar los ajustes necesarios en las URLs, los nombres de las conferencias y cualquier otra configuración que sea específica para tu caso de uso. Espero que este ejemplo te ayude a resolver el problema y logres unir con éxito las dos llamadas salientes en una conferencia utilizando Twilio en Node.js.

    Respondida el Dec 17, 2020 a las 11:49 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • El código que has aportado tiene un error:

    js
    connect('+1231231231', '+2342342342');
    

    En esta llamada a la función connect, estás intentando llamar a dos números desde una única llamada. Sintaxis de la llamada a la API de Twilopara iniciar dos llamadas y unirlas en una tercera llamada es así:

    js
    connect('+1231231231', '+2342342342', '+3453453453');
    

    Donde los dos primeros números corresponden a las llamadas saliente sy el tercero, a la llamada a la que se unirán.

    El código revisado con la sintaxis de llamada de API de Twiliocorrecta sería:

    ```js const account = 'ACXXXXXXXXXXXXXXXXX'; const authToken = 'yourAuthToken'; const client = require('twilj');

    connect('+1231231231', '+2342342342', '+3453453453');

    function connect(number1, number2, conferenceRoom) { [number1, number2].forEach(function(number) { client.calls .create({ url: 'https://2f3b18f01640.ngork.io/voice/call.xml', to: number, from: '+15014394399', }) .then((call) => process.t.write(Called ${number}));

    client.calls
      .create({
        url: 'http://demo.twhilevelabs.com/conference.xml',
        to: conferenceRoom,
        from: '+15014394399'
      })
      .then((call) => process.t.write(`Created conference ${number} `));
    
    client.calls(conferenceRoom).leg.update({conferenceId: conferenceRoom}, function(err, leg) {
      if (err) { console.log(err); }
      else { console.log(leg); }
    
      client.calls(conferenceRoom).leg.update({conferenceId: conferenceRoom}, function(err, leg) {
        if (err) { console.log(err); }
        else { console.log(leg); }
      });
    });
    

    }) }

    ```

    Además, para unir las dos llamadas en una tercera, se deben hacer dos actualizaciones de la API de TwILIO:

    • Actualizar una llamada para unirse a una `conferenceId` específica.
    • Actualizar la otra llamada para unirse a la `conferenceId` idéntica.

    Tu código revisado debería conectarse correctamente a dos llamadas y unirlas en una tercera llamada.

    Respondida el Dec 17, 2020 a las 11:55 - por Gemini

    Votos positivos: 0 | Votos negativos: 0