【问题标题】:Alexa Skill ARN - The remote endpoint could not be called, or the response it returned was invalidAlexa Skill ARN - 无法调用远程端点,或者它返回的响应无效
【发布时间】:2017-04-11 15:00:11
【问题描述】:

我创建了一个简单的 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 输入到北美的框中。

在测试 -> 服务模拟器部分,我添加了“执行我的自定义函数”作为文本,这会更改 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"
}

但是当我运行测试时出现以下错误:

无法调用远程端点,或者它返回的响应无效。

有人知道为什么技能无法连接到功能吗?

谢谢

【问题讨论】:

  • 如果您在 cloudwatch 中查看您的 lambda 日志 - 它会被调用吗?

标签: amazon-web-services aws-lambda alexa-skills-kit alexa-skill


【解决方案1】:

Amazon 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"
}

【讨论】:

  • 这对我有用。或者你可以继续尝试,直到你成功!。
  • 技能页面 -> 测试 -> 服务模拟器 -> 文本选项卡 -> 输入话语并点击“询问技能名称”按钮,并在“服务请求”文本区域中生成包含我的链接帐户访问令牌的请求.但是在“服务响应”中,我得到“无法调用远程端点,或者它返回的响应无效。”。然后我从“服务请求”复制 JSON 并切换到 JSON 选项卡并将复制的 JSON 粘贴到“Json 请求”文本区域并点击“询问技能名称”,我在“服务响应”中得到了预期的 JSON。这很奇怪,但我现在可以接受。
【解决方案2】:

​上传.zip时,不要将文件夹压缩成.zip。

相反,进入文件夹,选择package.json、index.js 和node modules,然后压缩它们,然后上传.zip。

【讨论】:

    【解决方案3】:

    此错误消息非常广泛,可能暗示许多不同的问题。我收到了这个错误,就我而言,这是一个超时问题。您 ping 的那个网站需要多长时间才能响应?超时似乎没有正确记录,请在此处查看我的原始问题:Troubleshooting Amazon's Alexa Skill Kit (ASK) Lambda interaction

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多