在 AWS Lambda 函数中获取插槽的问题
Posted
技术标签:
【中文标题】在 AWS Lambda 函数中获取插槽的问题【英文标题】:Problems getting slot in AWS Lambda function 【发布时间】:2021-06-14 07:36:13 【问题描述】:我正在尝试构建一个简单的 Alexa Skill。现在,我想访问我的一些槽值。这是我的代码。当我取消注释我定义 Alexa 的行时,我的技能将不起作用。另外,如果我只取消注释定义 var text 的行,我仍然会得到“技能响应有问题”。 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: ,
;
【问题讨论】:
【参考方案1】:对于一些上下文:我的 lambda 具有我的 alexa 托管技能的端点,而 alexa 技能具有 lambda 的端点。当我说 const 给出相同的输出时,我的意思是当我使用 const 时,它不是使用 var,而是做同样的事情。我作为回复得到的 JSON 文件是空括号。
我发现了问题背后的问题。而不是使用 //var text = this.event.request.intent.slots.recipe.value; 我只是做了 var text = event.request.intent.slots.recipe.value;我现在可以使用文本来构建响应或类似的东西。
【讨论】:
以上是关于在 AWS Lambda 函数中获取插槽的问题的主要内容,如果未能解决你的问题,请参考以下文章
AWS Lambda、API 网关和 Cognito:如何在 lambda 函数中获取身份对象?
如何通过在 AWS CLI 中使用其 ARN 来获取 lambda 函数?