Estoy tratando de iniciar un flujo en Twilio a través de una llamada API en Node, y parece que no puedo hacer que funcione. El flujo está diseñado para realizar una llamada saliente cuando se envía la solicitud de API. He intentado varios ejemplos de código que he visto en línea en vano. Recibo un error como Cannot read property X of undefined (ver más abajo), pero puedo iniciar una llamada telefónica (no un flujo, solo una llamada) a mi teléfono celular a través de una llamada API, así que Sabe que el cliente Twilio está conectado.

Trabajos:

app.post('/call', (req, res) => {
  client.calls
  .create({
     url: 'https://handler.twilio.com/twiml/PNxxxxxxxxxxxxxxxxxxxx',
     to: '+1708xxxxxxx',
     from: '+1312xxxxxxx'
   })
  .then((call, err) => {
      if (err) { console.log(err) }
      res.json({ success: "success" });
    });
  });

No funciona: disparadores Cannot read property 'v1' of undefined

app.post('/flow', (req, res) => {

    client.studio.v1.flows('FWxxxxxxxxxxxxxxxxxxxx')
    .fetch()
    .then(flow => console.log("flow : ", flow));

No funciona: disparadores Cannot read property 'flows' of undefined

app.post('/flow', (req, res) => {
  client.studio.flows('FWxxxxxxxxxxxxxxxxxxxx')
  .executions
  .create({
    to: '+1847xxxxxxx',
    from: '+1312xxxxxxx'
  })
  .then(function(execution) { console.log("sid : ", execution.sid); });
});

No funciona: no hay error, simplemente no pasa nada

app.post('/flow', (req, res) => {

  client.calls
  .create({
    url: 'https://studio.twilio.com/v1/Flows/FWxxxxxxxxxxxxxxxxxxxx/Executions',
    to: '+1847xxxxxxx',
    from: '+1312xxxxxxx'
  })
  .then((call, err) => {
    if (err) { console.log("err : ", err) }
    if (call) { console.log("call : ", call)}
    res.json({ success: "success" });
  });
});
1
Scott 27 dic. 2019 a las 05:33

2 respuestas

La mejor respuesta

Es muy probable que esté utilizando una versión anterior de la biblioteca Node.js de Twilio sin soporte para flujos de Studio. La versión actual es 3.39.1

Puede encontrar la versión que está utilizando si lee "dependencias" en el archivo package.json.

Además, si abre un terminal en la carpeta raíz del proyecto y ejecuta npm outdated, probablemente verá dos colores rojos en esa tabla.


Como arreglar:

Puede haber otras formas de hacer esto, pero para obtener la última versión solo para el paquete de Twilio, abriría un terminal en la carpeta raíz del proyecto y

  • ejecutar npm uninstall twilio --save
  • luego ejecuta npm install twilio --save

Después de eso, verifique nuevamente con npm list --depth=0 y esperemos que obtenga -- twilio@3.39.1 que tiene soporte para flujos de Studio.

1
Alex Baban 27 dic. 2019 a las 06:39

https://www.twilio.com/docs/libraries/node

Instalaría el twilio en tu proyecto.

Desde la consola: esto agrega los paquetes a su package.json y descarga los módulos npm install --save twilio


var accountSid = 'ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'; // Your Account SID from www.twilio.com/console
var authToken = 'your_auth_token';   // Your Auth Token from www.twilio.com/console

var twilio = require('twilio');
var client = new twilio(accountSid, authToken);

client.messages.create({
    body: 'Hello from Node',
    to: '+12345678901',  // Text this number
    from: '+12345678901' // From a valid Twilio number
})
.then((message) => console.log(message.sid));```


when using the twilio node package they also have info on making calls with it
https://www.twilio.com/docs/voice/quickstart/node

// Download the helper library from https://www.twilio.com/docs/node/install
// Your Account Sid and Auth Token from twilio.com/console
// DANGER! This is insecure. See http://twil.io/secure
const accountSid = 'ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
const authToken = 'your_auth_token';
const client = require('twilio')(accountSid, authToken);

client.calls
      .create({
         url: 'http://demo.twilio.com/docs/voice.xml',
         to: '+123456789',
         from: '+987654321'
       })
      .then(call => console.log(call.sid));

0
Robert Moore 27 dic. 2019 a las 02:41