我创建了一个简单的 Lambda 函数来调用网页,当我从函数页面对其进行测试时效果很好,但是当尝试创建调用此函数的技能时,我最终得到“无法调用远程端点,或者它返回的响应无效。” 错误。
Lambda 函数
var http = require('http');
exports.handler = function(event, context) {
console.log('start request to ' + event.url)
http.get(event.url, function(res) {
console.log("Got response: " + res.statusCode);
context.succeed();
}).on('error', function(e) {
console.log("Got error: " + e.message);
context.done(null, 'FAILURE');
});
console.log('end request to ' + event.url);
}
测试事件代码如下所示:
{
"url": "http://mywebsite.co.uk"
}
我已经为“Alexa Skills Kit”添加了一个触发器。
此函数的 ARN 显示为:
arn:aws:lambda:us-east-1:052516835015:function:CustomFunction
Alexa Skill(开发者门户)
然后我创建了一个具有简单意图的技能:
{
"intents": [
{
"intent": "CustomFunction"
}
]
}
并创建了一个话语:
CustomFunction execute my custom function
在我的技能的配置部分中,我选择了“AWS Lambda ARN(亚马逊资源名称)”选项并将 ARN 输入到北美的框中。
在 Test -> Service Simulator 部分,我添加了“执行我的自定义函数”作为文本,这将 Lambda 请求更改为显示:
{
"session": {
"sessionId": "SessionId.a3e8aee0-acae-4de5-85df-XXXXXXXXX",
"application": {
"applicationId": "amzn1.ask.skill.XXXXXXXXX"
},
"attributes": {},
"user": {
"userId": "amzn1.ask.account.XXXXXXXXX"
},
"new": true
},
"request": {
"type": "IntentRequest",
"requestId": "EdwRequestId.445267bd-2b4a-45ef-8566-XXXXXXXXX",
"locale": "en-GB",
"timestamp": "2016-11-27T22:54:07Z",
"intent": {
"name": "RunWOL",
"slots": {}
}
},
"version": "1.0"
}
但是当我运行测试时,出现以下错误:
无法调用远程端点,或者它返回的响应无效。
有没有人知道为什么该技能无法连接到该功能?
谢谢