【发布时间】:2017-05-25 10:43:20
【问题描述】:
我正在尝试构建一个 Alexa 技能,它在启动时必须通过 Node JS 请求模块发出发布请求来获取数据。
实际发出请求的代码摘录是有效的,因为我已经自己测试过了。但是,当我尝试将它包含在 AWS Lambda 函数中时,它不会被执行。
由于我是 JS 和 AWS 的初学者,因此调试这对我来说非常困难,而且我什至无法远程解决。它真正感谢任何帮助。
exports.handler = (event, context) => {
try {
// New session
if (event.session.new) {
// New Session
console.log("NEW SESSION");
}
// Launch Request
switch (event.request.type) {
case "LaunchRequest":
var url = "https://api.random.org/json-rpc/1/invoke";
var myRequest = {
"jsonrpc": "2.0",
"method": "generateStrings",
"params": {
"apiKey": "my-api-key",
"n": "1",
"length": "3",
"characters": "abcdefghijklmnopqrstuvwxyz0123456789"
},
"id": 96
}
var pin;
request.post(
url,
{json: myRequest},
function (error, response, body) {
if (!error && response.statusCode == 200) {
pin = body.result.random.data[0];
console.log(pin);
}
else {
console.log(error);
}
}
);
console.log("LAUNCH REQUEST");
var welcome = "Welcome. ";
var pinStatement = "Your 3 letter or number pin is: " + pin
context.succeed(
generateResponse(
buildSpeechletReponse(welcome + pinStatement, true),
{}
)
);
break;
// Intent Request
case "IntentRequest":
console.log("INTENT REQUEST");
break;
// Session Ended Request
case "SessionEndedRequest":
console.log("SESSION ENDED REQUEST");
break;
default:
context.fail(`INVALID REQUEST TYPE: ${event.request.type}`);
}
}
catch (error) {
context.fail(`Exception: ${error}`);
}
}
//Here are the helper functions:
buildSpeechletReponse = (outputText, shouldEndSession) => {
return {
outputSpeech : {
type: "PlainText",
text: outputText
},
shouldEndSession: shouldEndSession
};
}
generateResponse = (sessionAttributes, speechletResponse) => {
return {
version: "1.0",
sessionAttributes: sessionAttributes,
response: speechletResponse
};
}
【问题讨论】:
-
您是这样粘贴代码还是上传带有代码的压缩包?
-
上传了 zip(所以它有 require 模块)。我没有看到错误消息。它只是跳过了 request.post 部分。
标签: javascript node.js amazon-web-services post lambda