【问题标题】:Twilio: Lamba Function not making Programable Web callTwilio:Lambda 函数不进行可编程网络调用
【发布时间】:2020-01-19 20:31:05
【问题描述】:

AWS Lambda 相对较新,我正在尝试将 Twilio 可编程语音集成到 Lambda 函数中。 Function中的代码如下:

'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 位于 Layer 内部,测试能够找到依赖项。日志记录显示“程序已启动”和“程序已结束”,因此正在调用代码。但是测试时没有实际调用。有什么建议吗??

【问题讨论】:

    标签: node.js amazon-web-services aws-lambda twilio


    【解决方案1】:

    您没有从您的函数返回承诺,因此 lambda 无法识别您的执行是否已完成。最后一行是控制台,在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");
    };
    

    【讨论】:

    • 完美——成功了!使用了上面的选项 1。认为问题在于我缺乏 JS/Node 知识。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-19
    • 2013-02-17
    • 2015-03-16
    • 1970-01-01
    • 2021-11-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多