【问题标题】:What is the simplest way is to deploy an existing AWS Lex and Lambda as an Alexa Skills Kit (ASK)?最简单的方法是将现有的 AWS Lex 和 Lambda 部署为 Alexa Skills Kit (ASK)?
【发布时间】:2022-01-07 14:24:21
【问题描述】:

我目前有一个 Lex 机器人,它需要我的 AWS 账户上的 Lambda 函数。我想把这个现有的机器人变成一个 Alexa Skill,但不能轻易迁移。

到目前为止我做了什么:

  • 发布 Lex Bot 版本并导出为 ASK
  • 将 JSON 文件导入 Alexa 开发者控制台 JSON 编辑器
  • 按照 this 教程让我的 Alexa Skill 和 Lambda 函数相互访问

我已经检查了 CloudWatch Logs,Alexa Skill 似乎可以正确调用我的函数,但是,它无法实现意图。当它到达意图对话的末尾时,Amazon Skill 只会说:

You just triggered [IntentName]

我了解JSON format is different for Alexa and Lex和返回格式如下:

// Alexa return
return handlerInput.responseBuilder
        .speak(speakOutput)
        .reprompt(speakOutput)
        .getResponse();

// AWS Lex return
return {
  sessionAttributes: attributes,
  dialogAction: {
    type: 'Close',
    fulfillmentState: fulfillStatus,
    message: {
      contentType: "PlainText",
      content: messageContent,
    }
  }
};

是否有任何简单的方法可以将我现有的 Lambda 函数转换为使用 Alexa Skill 而无需重写整个内容?

【问题讨论】:

    标签: node.js amazon-web-services aws-lambda alexa-skills-kit amazon-lex


    【解决方案1】:

    我的问题的答案是:不。由于 Lex 和 Alexa 使用不同的 API,因此无法将我现有的 Lex 特定 Lambda 函数与 Alexa 一起使用。

    我发现最接近使用一个 Lambda 的方法是创建一个 middleware to determine what client type is calling the Lambda,然后分别处理 Lex API calls 和 Alexa API calls。此代码来自 AWS QnABot GitHub。

    在我看来,这似乎与单一职责的想法背道而驰。由于无论如何他们都使用不同的代码,因此创建 2 个单独的 Lambda 似乎会更好。请让我知道您对此的看法。

    很遗憾,Lex 代码无法简单地转换为 Alexa。希望 AWS 团队将来为此创建一个简单的解决方案。

    【讨论】:

      猜你喜欢
      • 2018-01-05
      • 1970-01-01
      • 2016-04-01
      • 1970-01-01
      • 2017-02-15
      • 1970-01-01
      • 2016-12-17
      • 2016-07-03
      • 1970-01-01
      相关资源
      最近更新 更多