我目前有一个Lex机器人,需要在我的AWS帐户上的Lambda功能。我想把这个现有的机器人变成一个Alexa技能,但不能轻易地迁移它。
我到目前为止所做的事:
我已经签入了CloudWatch日志,而Alexa技术似乎正确地调用了我的函数,但是,它不能满足目的。当它达到对话的目的时,Amazon技能只会说:
You just triggered [IntentName]据我了解,JSON格式对于Alexa和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技能而不需要重写整个功能呢?
发布于 2021-12-02 17:34:41
我的问题的答案是:不。因为Lex和Alexa使用不同的API,所以没有办法在Alexa中使用我现有的特定于Lex的Lambda函数。
我发现对两者使用一个Lambda最接近的方法是创建一个中间件,以确定调用Lambda的客户端类型。,然后分别处理Lex API调用和Alexa调用。此代码来自AWS QnABot GitHub。
在我看来,这似乎与单一责任的想法背道而驰。因为它们都使用不同的代码,所以创建两个单独的Lambdas似乎更好。请告诉我你对这件事的想法。
不幸的是,Lex代码无法简单地转换到Alexa。希望AWS团队在未来为这个问题创建一个简单的解决方案。
不过,这是专门针对Lex V1的。V2似乎更容易转化为Alexa技能。
https://stackoverflow.com/questions/70176677
复制相似问题