【问题标题】:Lambda function not working upon Alexa Skill invocationLambda 函数不适用于 Alexa Skill 调用
【发布时间】:2017-02-16 16:43:56
【问题描述】:

我刚刚创建了我的第一个(自定义)静止图像。我通过上传包含我的 index.js 和所有必需代码的 zip 文件在 Lambda 中设置了该功能,包括 node_modules 和我的孩子的基本 Alexa 技能(根据教程)。我确保我压缩了文件和子文件夹,而不是文件夹本身(我可以看到这是导致类似错误的常见原因),但是当我使用示例话语在网络工具中创建技能和测试时,我得到:

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

我不确定如何调试它,因为 CloudWatch 中没有任何记录。

我可以在 Lambda 请求中看到我的槽值已成功转换/解析,并且意图名称正确。

在 AWS Lambda 中,我可以使用 LaunchRequest 和另一个命名意图成功调用该函数。但是,从开发人员控制台中,我什么也得不到。 我尝试将 JSON 从 lambda 测试(有效)复制到开发人员门户,但我得到了同样的错误。这是我在开发门户中放入的 JSON 示例(适用于 Lambda)

{
  "session": {
    "new": true,
    "sessionId": "session1234",
    "attributes": {},
    "user": {
      "userId": null
    },
    "application": {
      "applicationId": "amzn1.echo-sdk-ams.app.149e75a3-9a64-4224-8bcq-30666e8fd464"
    }
  },
  "version": "1.0",
  "request": {
    "type": "LaunchRequest",
    "requestId": "request5678"
  }
}

【问题讨论】:

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


    【解决方案1】:

    解决此问题的第一步可能是将您的 lambda 与您的技能配置分开测试。

    在 AWS 控制台中查看 lambda 函数时,请注意顶部的“测试”按钮,在它旁边有一个下拉菜单,其中包含配置测试事件的选项。如果您选择该选项,您会发现有针对 Alexa 的预设测试事件。选择“alexa start session”,然后选择“save and test”按钮。

    这将为您提供有关 lambda 执行的更详细的反馈。

    如果您的 lambda 在这里工作正常,那么问题可能在于您的技能配置,所以我会回顾您用来配置技能的任何教程和文档,并确保您做得对。

    当你写到 lambda 请求看起来不错时,我假设你在谈论服务模拟器,所以这是一个好的开始,但配置选项卡上可能仍然存在问题。

    【讨论】:

    • 谢谢,非常有用。我已经按照上面的操作,可以看到它抱怨语法错误,但输出并没有告诉我在哪里。我已经通过 JS 语法验证器运行了我的代码,它说它很好......
    • 嗯,这就是进步——现在我们知道问题出在哪里了。这有点离题了,但我认为您需要一种方法来验证您的代码在将其上传到 lambda 之前是否有效。有很多解决方案,但我一直在使用“node-lambda”模块,它对我来说效果很好。
    【解决方案2】:

    我们为本地技能开发和测试构建了一个工具。

    BST Tools

    来自 Alexa 的请求和响应将直接发送到您的本地服务器,这样您就可以快速编码和调试,而无需进行任何部署。我发现这对我们自己的开发非常有用。

    如果您有任何问题,请告诉我。

    它是开源的:https://github.com/bespoken/bst

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-03
      • 1970-01-01
      • 2019-01-16
      • 2019-11-09
      相关资源
      最近更新 更多