使用 Node.js 设置 Alexa AppId

激光猫

我在使用服务模拟器测试我的 Alexa 技能时遇到了困难。如果我设置了 appId,该技能将不起作用。这是相关的代码:

'use strict';
const Alexa = require('alexa-sdk');

var APP_ID = "amzn1.ask.skill.[my skill ID]";

exports.handler = function(event, context, callback) {
    var alexa = Alexa.handler(event, context);
    alexa.appId = APP_ID;
    alexa.registerHandlers(handlers);
    alexa.execute();
}

当我在服务模拟器中运行此代码时,我得到响应“无法调用远程端点,或者它返回的响应无效。” 和 CloudWatch 日志中的错误消息:

The applicationIds don't match: applicationId and amzn1.ask.skill.[my skill id]
"errorMessage": "Invalid ApplicationId: amzn1.ask.skill.[my skill id]"

如果我注释掉设置 appId

//alexa.appId = APP_ID

模拟器似乎返回了一个有效的响应,但我在日志中看到了这个警告:

"Warning: Application ID is not set."

这是模拟器发送的Lambda Request:

{
  "session": {
    "sessionId": "SessionId.bb263d3e-2018-4aab-a0df-f945b3a25bf9",
    "application": {
      "applicationId": "amzn1.ask.skill.[my skill ID]"
    },
    "attributes": {},
    "user": {
      "userId": "amzn1.ask.account.[accountID]"
    },
    "new": true
  },
  "request": {
    "type": "LaunchRequest",
    "requestId": "EdwRequestId.d8b56c7f-63ea-48e8-8816-9b7c036d5816",
    "locale": "en-US",
    "timestamp": "2017-07-12T12:06:11Z"
  },
  "version": "1.0"
}

一些在线示例建议 appId 属性应为 APP_ID:

alexa.APP_ID = APP_ID; 

但这似乎不正确。根据 alexa-sdk 源代码(无论如何都在尝试),该属性需要它是我实现的 appId 。

看起来问题与亚马逊模拟器创建的 json lambda 请求更相关。需要说明的是,这是 Amazon Alexa 开发人员门户上的模拟器,而不是 AWS lambda 测试事件接口上的测试函数。

奇怪的是,如果我剪切并粘贴来自 Amazon 模拟器的 lambda 请求并从 AWS 测试界面运行它,它工作正常。

马克

这两天我也遇到了这个问题。我相信这是他们最终的问题。我在亚马逊论坛上看到了这个。

亚马逊在周末更改了一些东西,这会影响 Lambda 从模拟器收到的 JSON 请求并中断验证。这是关于此的两个线程,其中包括允许其工作的变通方法:

https://forums.developer.amazon.com/questions/78391/application-id-verification-issue-with-nodejs-and.html

https://forums.developer.amazon.com/questions/78393/my-alexa-skill-is-not-returning-a-lambda-response.html

到目前为止,亚马逊还没有更新,甚至没有承认这个问题。

--- 小工具频道

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Node JS TCP代理:使用Node JS设置HTTP隧道

来自分类Dev

Node JS TCP代理:使用Node JS设置HTTP隧道

来自分类Dev

如何使用 node.js 8.10 创建一个从我自己的数据库中给出答案的 Alexa 技能

来自分类Dev

如何使用Node.js正确设置Coffeescript

来自分类Dev

使用Node.js设置HTTP标头Cookie

来自分类Dev

无需使用Node.js设置本地服务器?

来自分类Dev

如何使用nvm设置默认的Node.js版本?

来自分类Dev

如何使用Node.js设置Stun服务器

来自分类Dev

使用node.js设置MongoDB数据库连接

来自分类Dev

如何使用 Node.js 为网页元素设置动画?

来自分类Dev

Node.js 无法使用 mongoose 设置默认 UUID

来自分类Dev

Alexa Node JS 如何处理多个事件的取消事件

来自分类Dev

Docker Node JS设置环境

来自分类Dev

如何设置 WebStorm 在右键弹出菜单中使用 Node.js 运行 js 文件

来自分类Dev

无法设置Alexa技能的终点

来自分类Dev

我如何使用Node.js Selenium WebDriver设置elementScrollBehavior功能

来自分类Dev

如何在node.js上使用请求模块设置POST编码?

来自分类Dev

使用node.js进行MongoDB设置:错误:无法连接到[localhost:27017]

来自分类Dev

如何使用Node.js获取数据并将其设置为Firebase?

来自分类Dev

使用Node.js上传时设置YouTube视频标题(googleapi模块v1.0)

来自分类Dev

使用Django和Node.js为Websocket设置Nginx的配置(wss://)

来自分类Dev

在node.js中设置环境变量,然后在终端中使用它?

来自分类Dev

使用Node.js上传时设置YouTube视频标题(googleapi模块v1.0)

来自分类Dev

如何使用Node.js设置从MySQL数据库填充数据的JSON文件的名称?

来自分类Dev

如何使用node.js设置要上传到Google Cloud Storage的文件的Content-Type

来自分类Dev

如何使用Node.js在Azure Blob存储上设置ContentType

来自分类Dev

如何使用Express-Session在Node.js上设置持久性Cookie?

来自分类Dev

如何使用Node.js在React Native中设置代理目标?

来自分类Dev

如何使用Express和Socket.IO设置Node.JS?

Related 相关文章

  1. 1

    Node JS TCP代理:使用Node JS设置HTTP隧道

  2. 2

    Node JS TCP代理:使用Node JS设置HTTP隧道

  3. 3

    如何使用 node.js 8.10 创建一个从我自己的数据库中给出答案的 Alexa 技能

  4. 4

    如何使用Node.js正确设置Coffeescript

  5. 5

    使用Node.js设置HTTP标头Cookie

  6. 6

    无需使用Node.js设置本地服务器?

  7. 7

    如何使用nvm设置默认的Node.js版本?

  8. 8

    如何使用Node.js设置Stun服务器

  9. 9

    使用node.js设置MongoDB数据库连接

  10. 10

    如何使用 Node.js 为网页元素设置动画?

  11. 11

    Node.js 无法使用 mongoose 设置默认 UUID

  12. 12

    Alexa Node JS 如何处理多个事件的取消事件

  13. 13

    Docker Node JS设置环境

  14. 14

    如何设置 WebStorm 在右键弹出菜单中使用 Node.js 运行 js 文件

  15. 15

    无法设置Alexa技能的终点

  16. 16

    我如何使用Node.js Selenium WebDriver设置elementScrollBehavior功能

  17. 17

    如何在node.js上使用请求模块设置POST编码?

  18. 18

    使用node.js进行MongoDB设置:错误:无法连接到[localhost:27017]

  19. 19

    如何使用Node.js获取数据并将其设置为Firebase?

  20. 20

    使用Node.js上传时设置YouTube视频标题(googleapi模块v1.0)

  21. 21

    使用Django和Node.js为Websocket设置Nginx的配置(wss://)

  22. 22

    在node.js中设置环境变量,然后在终端中使用它?

  23. 23

    使用Node.js上传时设置YouTube视频标题(googleapi模块v1.0)

  24. 24

    如何使用Node.js设置从MySQL数据库填充数据的JSON文件的名称?

  25. 25

    如何使用node.js设置要上传到Google Cloud Storage的文件的Content-Type

  26. 26

    如何使用Node.js在Azure Blob存储上设置ContentType

  27. 27

    如何使用Express-Session在Node.js上设置持久性Cookie?

  28. 28

    如何使用Node.js在React Native中设置代理目标?

  29. 29

    如何使用Express和Socket.IO设置Node.JS?

热门标签

归档