编写相同Alexa函数的不同方法

时间:2019-07-14 16:40:07

标签: javascript aws-lambda alexa alexa-skills-kit alexa-skill

我一直在学习Codecademy的alexa技能课程,并且lambda函数的语法突然改变了。以下两个lambda函数之间有什么区别,我应该使用哪个?

我已经在Codecademy论坛上提出了要求,但没有回复。

// First way
const LaunchRequestHandler = {
  canHandle(handlerInput) {
    return handlerInput.requestEnvelope.request.type === 'LaunchRequest';
  },
  handle(handlerInput) {
    return handlerInput.responseBuilder
      .speak("Hello, Welcome to Codecademy. What is your name?")
      .reprompt("Welcome. What is your name?")
      .getResponse();
  },
};
...
exports.handler = skillBuilder
  .addRequestHandlers(
    LaunchRequestHandler,
    ...
  )
  .lambda();
// Second way
var handlers = {
  'LaunchRequest': function() {
    this.response
        .speak("Hello, Welcome to Codecademy. What is your name?")
        .listen("Welcome. What is your name?");
    this.emit(':responseReady');
  },
...
}
...
exports.handler = function(event, context, callback){
    var alexa = Alexa.handler(event, context);
    alexa.registerHandlers(handlers);
    alexa.execute();
};

两种版本都能正常运行,但我大多看到的是第一种方式编写的代码,而课程则采用第二种格式。

1 个答案:

答案 0 :(得分:1)

第一个使用alexa-sdk v2编写,而第二个使用alexa-sdk v1编写。它们的工作原理相同,唯一的区别是代码的结构。 v2在选择处理程序的方式上使用了一些不同的方法,并使用canHandle方法来做到这一点。

如果我愿意成为您,那么我会使用v2进行工作并建立自己的技能,因为v2较新,它将支持最新功能,并且在我看来,它比v1更好的结构和灵活性。