我已经在AWS Lambda(Javascript)中创建了一个Alexa控制台和相应功能的意图,并且它在大多数情况下都按预期工作。但是我似乎无法收集槽值。
exports.handler = function (event, context, callback) {
const alexa = Alexa.handler(event, context, callback);
alexa.APP_ID = APP_ID;
let config = new Map();
let character = this.event.request.intent.slots.character.value;
if (!character)
character = 'default';
let handlers = getHandlers(config);
alexa.registerHandlers(handlers);
alexa.execute();
};
我在Alexa测试中收到的错误大多没有帮助,我一般都觉得调试Alexa非常痛苦。我已经尝试直接从Lambda中测试并传递JSON有效负载,但我不确定这是否会起作用。
有人可以评论this.event.request.intent.slots.character.value;
是否正确吗?我无法在官方AWS页面上看到这一点,但在其他人的例子中看不到。
最后,来自Alexa测试的有效负载包括:
"request": {
"type": "IntentRequest",
"requestId": "amzn1.echo-api.request.43808260-5aaa-4837-9f28-4eaccb7c9b3c",
"timestamp": "2018-05-31T00:49:08Z",
"locale": "en-AU",
"intent": {
"name": "playSeinfeldQuoteIntent",
"confirmationStatus": "NONE",
"slots": {
"character": {
"name": "character",
"confirmationStatus": "NONE"
},
"position": {
"name": "position",
"confirmationStatus": "NONE"
}
}
}
}
我原本预计它会在这里包含插槽的值,但它们不是这样,这可能是问题。
任何建议都会非常有用。
编辑:我发现我正在捕获值,但每个变量的第一个字母都是大写的。我想因为他们是人们的名字Alexa正在资助他们。我没想过。