Twilio: функция Lamba не выполняет программируемый веб-вызов - PullRequest
0 голосов
/ 19 января 2020

Относительно плохо знаком с AWS лямбда, и я пытаюсь интегрировать программируемый голос Twilio в функцию лямбда. Код в функции следующий:

'use strict';

module.exports.hello = async event => {
  console.info("Program Started");  
  const accountSid = 'AAAAAA';
  const authToken = 'BBBBBB';
  const client = require('twilio')(accountSid, authToken);

  client.calls
        .create({
           twiml: '<Response><Say>Ahoy, World!</Say></Response>',
           to: '+1XXXXXXXXXX',
           from: '+1YYYYYYYYY'
         })
        .then(call => console.log(call.sid));

  console.info("Program Ended");
};

accountSid и authToken верны в реализации. Twilio находится внутри слоя, и тест способен найти зависимость. В журнале отображаются «Программа запущена» и «Программа завершена», поэтому код вызывается. Но нет фактического звонка при тестировании. Есть предложения ??

1 Ответ

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

Вы не возвращаете обещание из своей функции, поэтому у лямбды нет возможности определить, завершилось ли ваше выполнение. Последняя строка, которая является консольной, выполняется до того, как client.calls завершит выполнение, поскольку она асинхронная. У вас есть два варианта здесь

  • Либо измените его, чтобы вернуть обещание, подобное этому
'use strict';

module.exports.hello = async event => {
  console.info("Program Started");  
  const accountSid = 'AAAAAA';
  const authToken = 'BBBBBB';
  const client = require('twilio')(accountSid, authToken);

  return client.calls
        .create({
           twiml: '<Response><Say>Ahoy, World!</Say></Response>',
           to: '+1XXXXXXXXXX',
           from: '+1YYYYYYYYY'
         })
        .then(call => console.log(call.sid))
        .then(() => console.info("Program Ended"));

};
  • ИЛИ измените его на использование стиля ожидания
'use strict';

module.exports.hello = async event => {
  console.info("Program Started");  
  const accountSid = 'AAAAAA';
  const authToken = 'BBBBBB';
  const client = require('twilio')(accountSid, authToken);

  const call = await client.calls
        .create({
           twiml: '<Response><Say>Ahoy, World!</Say></Response>',
           to: '+1XXXXXXXXXX',
           from: '+1YYYYYYYYY'
         });
  console.log(call.sid);
  console.info("Program Ended");
};
...