我已经创建了一个简单的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:拉姆达:US-东-1:052516835015:功能:CustomFunction
Alexa Skill(开发者门户网站)
然后我用简单的意图创建了一项技能:
{
"intents": [
{
"intent": "CustomFunction"
}
]
}
并创建了一个话语:
CustomFunction execute my custom function
在我的技术配置部分,我选择了“AWS Lambda ARN(亚马逊资源名称)”选项,并将ARN输入到北美的框中。
在测试中 - >服务模拟器部分,我添加了“执行我的自定义函数”作为文本,这将更改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"
}
但是当我运行测试时,我收到以下错误:
无法调用远程端点,或者它返回的响应无效。
有没有人对技能无法连接到该功能的原因有任何想法?
由于
答案 0 :(得分:4)
亚马逊Alexa开发者控制台内置的服务模拟器存在已知问题。尝试复制模拟器生成的JSON并将其粘贴到lambda函数的测试事件中。要访问lambda的测试事件,首先要找到蓝色'测试'按钮。在该按钮旁边选择(操作下拉菜单) - > (配置测试事件) - >将提供的JSON粘贴到代码区域中 - > (保存和测试)。 Lambda内置的测试功能比Alexa更可靠。
如果这不能解决问题,lambda的测试事件将返回完整的stackTrace和错误代码。当每个错误都没有被解决时,更容易进行故障排除。远程端点无法被调用,或者它返回的响应无效。"
{
"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"
}
答案 1 :(得分:3)
上传.zip
时,请勿将文件夹压缩为.zip。
相反,请转到该文件夹,选择package.json
,index.js
和node modules
&然后压缩它们,然后上传.zip
。
答案 2 :(得分:0)
此错误消息非常广泛,可能意味着很多不同的问题。我收到此错误,在我的情况下,这是一个超时问题。你正在ping这个网站需要多长时间才能回复?暂停似乎没有正确记录,请参阅我原来的问题:Troubleshooting Amazon's Alexa Skill Kit (ASK) Lambda interaction