在AWS Lambda函数中获取插槽时出现问题



我正在尝试构建一个简单的Alexa技能。现在,我想访问我的一些槽值。这是我的密码。当我甚至取消注释我在其中定义Alexa的行时,我的技能将不起作用。此外,如果我只取消注释定义var文本的行,我仍然得到"技能反应存在问题";。Const提供相同的输出。我正在使用名为配方的自定义插槽。如何访问lambda函数中的槽?谢谢

const breakfast = {  
"bacon and eggs":["bacon","egg"],
"buttered toast":["bread", "butter"]
};
const lunch = {  
"ham sandwich":["ham","cheese"]
};
const dinner = { "Steak and eggs": ['steak','eggs']};
//const Alexa = require('ask-sdk-core');
exports.handler = (event, context, callback) => {
try {
if (event.request.type === 'LaunchRequest') {
callback(null, buildResponse('Hello from Lambda'));
} else if (event.request.type === 'IntentRequest') {
const intentName = event.request.intent.name;

if (intentName === 'breakfast') {
callback(null, buildResponse(Object.keys(breakfast)+"") );
}
else if (intentName === 'lunch') {
callback(null, buildResponse(Object.keys(lunch)+"") );
}
else if (intentName === 'dinner') {
callback(null, buildResponse(Object.keys(dinner)+"") );
}

else if (intentName ==='requestRecipe'){
//var text = this.event.request.intent.slots.recipe.value;
//const meal = Alexa.getSlotValue(intentName, "meal")

callback(null, buildResponse("Recipe requested") );
}
else {
callback(null, buildResponse("Sorry, i don't understand"));
}
} else if (event.request.type === 'SessionEndedRequest') {
callback(null, buildResponse('Session Ended'));
}
} catch (e) {
context.fail(`Exception: ${e}`);
}
};
function buildResponse(response) {
return {
version: '1.0',
response: {
outputSpeech: {
type: 'PlainText',
text: response,
},
shouldEndSession: false,
},
sessionAttributes: {},
};

}

关于一点上下文:我的lambda具有我的alexa托管技能的端点,而alexa技能具有lambda的端点。当我说const给出相同的输出时,我的意思是,当我使用const时,它不使用var,而是做同样的事情。作为回复,我得到的JSON文件是空括号。

我发现了问题背后的问题。不使用
//var text=这个.event.request.intent.slots.recipe.value;我只是做了var text=event.request.intent.slots.recipe.value;我现在可以使用文本来构建响应或类似的东西了。

最新更新