最简单的方法是将现有的 AWS Lex 和 Lambda 部署为 Alexa Skills Kit (ASK)?
What is the simplest way is to deploy an existing AWS Lex and Lambda as an Alexa Skills Kit (ASK)?
我目前有一个 Lex 机器人,它需要在我的 AWS 账户上使用 Lambda 函数。我想将这个现有的机器人变成 Alexa Skill,但无法轻松迁移它。
到目前为止我做了什么:
- 发布一个版本的 Lex Bot 并导出为 ASK
- 将 JSON 文件导入 Alexa Developer Console JSON 编辑器
- 按照 this 教程让我的 Alexa Skill 和 Lambda 函数相互访问
我检查了 CloudWatch Logs,Alexa Skill 似乎正确地调用了我的函数,但是,它无法实现意图。当它到达意图对话的末尾时,Amazon Skill 只会说:
You just triggered [IntentName]
我理解JSON format is different for Alexa and Lex和return格式如下:
// 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 而无需重写整个函数?
我的问题的答案是:没有。无法将我现有的特定于 Lex 的 Lambda 函数与 Alexa 一起使用,因为 Lex 和 Alexa 使用不同的 API。
我发现最接近于对两者使用一个 Lambda 的方法是分别创建一个 middleware to determine what client type is calling the Lambda, then, handle the Lex API calls and the Alexa API calls。此代码来自 AWS QnABot GitHub.
在我看来,这似乎违背了单一职责的理念。由于无论如何他们都使用不同的代码,因此创建 2 个单独的 Lambda 似乎会更好。请让我知道您对此的看法。
不幸的是,Lex 代码无法简单地转换为 Alexa。希望 AWS 团队在未来为此创建一个简单的解决方案。
我目前有一个 Lex 机器人,它需要在我的 AWS 账户上使用 Lambda 函数。我想将这个现有的机器人变成 Alexa Skill,但无法轻松迁移它。
到目前为止我做了什么:
- 发布一个版本的 Lex Bot 并导出为 ASK
- 将 JSON 文件导入 Alexa Developer Console JSON 编辑器
- 按照 this 教程让我的 Alexa Skill 和 Lambda 函数相互访问
我检查了 CloudWatch Logs,Alexa Skill 似乎正确地调用了我的函数,但是,它无法实现意图。当它到达意图对话的末尾时,Amazon Skill 只会说:
You just triggered [IntentName]
我理解JSON format is different for Alexa and Lex和return格式如下:
// 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 而无需重写整个函数?
我的问题的答案是:没有。无法将我现有的特定于 Lex 的 Lambda 函数与 Alexa 一起使用,因为 Lex 和 Alexa 使用不同的 API。
我发现最接近于对两者使用一个 Lambda 的方法是分别创建一个 middleware to determine what client type is calling the Lambda, then, handle the Lex API calls and the Alexa API calls。此代码来自 AWS QnABot GitHub.
在我看来,这似乎违背了单一职责的理念。由于无论如何他们都使用不同的代码,因此创建 2 个单独的 Lambda 似乎会更好。请让我知道您对此的看法。
不幸的是,Lex 代码无法简单地转换为 Alexa。希望 AWS 团队在未来为此创建一个简单的解决方案。