【问题标题】:Different ways of writing the same alexa function编写相同的alexa函数的不同方式
【发布时间】:2019-11-23 12:55:56
【问题描述】:

我一直在学习 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();
};

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

【问题讨论】:

  • you 的 lambda 函数是什么意思?
  • 您在 amazon aws 中创建 lambda 函数时出现的代码编辑器中编写的代码。 Alexa技能的后端。我糊涂了吗?
  • 啊。你的意思是aws。我以为你指的是 JavaScript 语言意义上的 lambda。
  • 改了标题

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


【解决方案1】:

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

如果我是你,我会使用 v2 工作并培养我的技能,因为它更新,支持最新功能,并且在我看来比 v1 结构更好、更灵活。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-13
    • 1970-01-01
    • 2020-03-16
    • 2019-04-02
    • 1970-01-01
    • 1970-01-01
    • 2013-12-09
    相关资源
    最近更新 更多