【发布时间】:2018-02-20 10:08:17
【问题描述】:
我正在尝试使用 Alexa 创建一项技能,以使用扫描或查询功能(或两者)从我的 DynamoDB 表中读取数据。
我表中的列是日期、时间和电影名称。
我是新手,但我已经设法将我的 Lambda 函数链接到 Alexa。我还创建了一个单独的 Lambda 函数,它会在我配置测试事件时从我的表中调用数据,因此当我输入特定日期时,它会调用相应的电影和时间。但是现在我想在 Alexa 中实现它,但不确定如何。
这是我当前的代码
console.log('Loading function');
var AWSregion = 'us-east-1'; // us-east-1
var AWS = require('aws-sdk');
var dclient = new AWS.DynamoDB.DocumentClient();
var getItems = (event, context, callback)=>{
dclient.get(event.params,(error,data)=>{
if(error){
callback(null,"error occurerd");
}
else{
callback(null,data);
}
});
};
exports.handler = getItems;
我必须在 Alexa 中启动该技能的代码是
exports.handler = (event, context, callback) => {
try {
var request = event.request;
if (request.type === "LaunchRequest") {
context.succeed(buildResponse({
speechText: "Welcome to H.S.S.M.I skill, what would you like to find",
repromptText: "I repeat, Welcome to my skill, what would you like to find",
endSession: false
}));
}
else if (request.type === "SessionEndedRequest") {
options.endSession = true;
context.succeed();
}
else {
context.fail("Unknown Intent type");
}
} catch (e) {
}
};
function buildResponse(options) {
var response = {
version: "1.0",
response: {
outputSpeech: {
"type": "SSML",
"ssml": `<speak><prosody rate="slow">${options.speechText}</prosody></speak>`
},
shouldEndSession: options.endSession
}
};
if (options.repromptText) {
response.response.reprompt = {
outputSpeech: {
"type": "SSML",
"ssml": `<speak><prosody rate="slow">${options.repromptText}</prosody></speak>`
}
};
}
return response;
}
只要我能回忆起数据,我不介意将我的表从 DynamoDB 更改为其他表。
【问题讨论】:
标签: amazon-web-services aws-lambda amazon-dynamodb alexa alexa-skills-kit