在 twilio 函数中获取回调函数错误

getting callback function error in twilio functions

我的调试器不断向我发送此函数的回调错误(请参阅下面的 img link)。我还想继续我的工作回到工作室,工作室文档说我需要 "A successful return (HTTP 20X)" 我错过了什么

    exports.handler = function(context, event, callback) {

const client = require('twilio')();
const msg = event.Msg;
client.messages
  .create({
     body: msg,
     from: '+17322222222',
     to: '+13477777777'
   })
  .then(message => console.log(message.sid));
};

Error msg from Debugger

如果我在代码末尾插入 callback(),我会获得成功 return 但消息不会被发送。

exports.handler = function(context, event, callback) {

const client = require('twilio')();
const msg = event.Msg;

client.messages
  .create({
     body: msg,
     from: '+17322222222',
     to: '+13477777777'
   });

  callback();
};

您需要在消息发送成功后执行回调。

这可以使用 promises 或 async/await 语法来完成,如下所示:

exports.handler = function(context, event, callback) {

   let twilioClient = context.getTwilioClient();

   twilioClient.messages
     .create({
       body: 'Hello World',
       to: '+13477777777',
       from: '+17322222222',
     }).then(message =>  {
       console.log(message.sid);
       callback(null, {result: "success"});
     })
    .catch(error => {
       console.log(error);
       callback({result: "error"});
    });
};

exports.handler = async function(context, event, callback) {

    let twilioClient = context.getTwilioClient();

    let sendSMS = () => { 
        try {   
        let result = twilioClient.messages
        .create({
           body: 'Hello World',
           to: '+13477777777',
           from: '+17322222222',
         });
         return result;
        } catch(e) {
          console.log(e);
          callback(e);
        }
    };

    let result = await sendSMS();
    callback(null, result);
};

在回调@markokstate 之前发送多条消息

exports.handler = function(context, event, callback) {

    const twilioClient = context.getTwilioClient();
    numbers = ['+14075551212','+18025551212'];
    body = event.Body || 'The British are Coming!';
    
    Promise.all(
        numbers.map(number => {
            return twilioClient.messages.create({
                to: number,
                from: '+15095551212',
                body: body
            });
        })
    )
  .then(messages => {
    console.log('Messages sent!');
    callback(null, 'Messages sent!');   
  })
  .catch(err => {
      console.error(err);
      callback(null, 'ERROR');
  });
};