问题标签 [alexa-skill]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
12010 浏览

amazon-web-services - Amazon Alexa Skills Kit:如何与外部应用程序帐户/用户 ID 关联

Amazon alexa 技能请求中,有一个userId,我试图了解这是什么以及是否有一些参考,因为我想将Amazon Echo用户帐户与我自己的应用程序中的一个帐户链接并这样做我必须有某种静态 userId 才能使用。

示例请求:

0 投票
1 回答
4690 浏览

aws-lambda - Alexa没有找到我的技能

我根据 Alexa Skills Kit 中提供的示例之一将我的 Alexa Skill 创建为 AWS Lambda Node.js 应用程序。我遵循了所有的指示:

  1. 我的 Echo 与我在 AWS 上的开发者账户注册了同一个账户
  2. 我在亚马逊开发者控制台上配置了我的技能
  3. 我将控制台中的应用程序 ID 放入我的应用程序代码中
  4. 我将代码上传到 AWS Lambda 服务(按照说明设置为 N. Virginia)
  5. 我测试了我的服务,它返回了预期的 JSON
  6. 我在开发人员控制台中输入了我的 ARN 作为端点
  7. 在控制台的下一步中,它告诉我通过说“Alexa,问 HelloWorld”来测试 Echo 的技能。

当我这样做时,她回答“与请求的应用程序通信时出现问题”。在 Echo 应用程序中,它说:

意外的通信问题 HelloWorld 请求标识符:amzn1.echo-api.request.e2d17280-592a-474f-a6b1-d1a9d8ff816d 与请求的应用程序通信时出现问题

我可以从我的 AWS Lambda 函数列表中看到没有请求到达该服务。我重新启动了 Echo。我给了它一个小时,以防它只需要时间传播到某个地方,但它仍然给出相同的响应。

所以这是一个相当模糊的死胡同。有没有人遇到过这个?有什么想法可以尝试吗?

0 投票
1 回答
1685 浏览

ios - 是否可以将 Alexa Skills Kit 与 iOS 移动应用程序集成以触发事件?

例如,假设我想在我的 ios 应用程序中启动相机拍照,我可以使用 ASK 和 iphone 麦克风来理解用户语音命令(“启动相机”)来启动相机并触发 ios 中的功能吗?

0 投票
2 回答
801 浏览

java - 与 Alexa 的意外通信问题

我将我的 Alexa 技能创建为 AWS Lambda java 应用程序,并使用了 Alexa Skills Kit 中提供的 HelloWorld 示例。我遵循了亚马逊网站上给出的所有步骤,包括此处给出的所有步骤Alexa not found my Skill。由于亚马逊此时没有完全给出使用 Lambda 和 java 的说明,我按照本教程https://github.com/jjaquinta/EchoProofOfConcepts/tree/master/jo.echo.lambda中给出的步骤,我在亚马逊论坛页面。当我在 Lambda 中运行代码时,它接受它,但仅将其显示为执行结果:

并为 Alexa 启动会话请求获取以下日志输出:

当我尝试使用 echo 的技能时,我遇到了“意外的通信问题”:请求标识符:amzn1.echo-api.request.173c5d6c-8e97-493c-9efd-beb88cffd82f 与请求的应用程序通信时出现问题。

有没有人遇到同样的问题?我想这可能与我的 zip 包装有关,所以有人知道正确的包装方法吗?

这是我用于 HelloWorld 的代码https://docs.google.com/document/d/1DU_-kAOxnhEp_4Lsj6I_LzEN4Di6-4Gmk28OZgc80IA/pub

0 投票
2 回答
2982 浏览

java - Amazon Lambda 上的 Amazon Echo/Alexa 的正确 Java handleRequest() 方法签名?

我正在尝试创建一个用 Java 实现的Amazon Lambda函数以与 Amazon Echo/ Alexa一起使用。我使用 Eclipse Mars 作为 IDE。

这是 my LambdaFunctionHandler,它将接收来自 Alexa 的请求,如下所示:

但是,当尝试使用来自 Alexa 的示例 JSON 输入对此进行测试时,我在 Eclipse 中收到错误:

{"errorMessage":"JSON 解析时出错","errorType":"java.lang.RuntimeException","stackTrace":[],"cause":{"errorMessage":"Lcom/fasterxml/jackson/databind /ObjectMapper;","errorType":"java.lang.NoClassDefFoundError","stackTrace":["java.lang.Class.getDeclaredFields0(Native Method)","java.lang.Class.privateGetDeclaredFields(Class.java:2583 )","java.lang.Class.getDeclaredFields(Class.java:1916)","com.fasterxml.jackson.databind.introspect.AnnotatedClass._findFields(AnnotatedClass.java:689)","com.fasterxml.jackson. databind.introspect.AnnotatedClass.resolveFields(AnnotatedClass.java:470)","com.fasterxml.jackson.databind.introspect.AnnotatedClass.fields(AnnotatedClass.java:282)","com.fasterxml.jackson.databind.introspect.POJOPropertiesCollector._addFields(POJOPropertiesCollector.java:390)","com.fasterxml.jackson.databind.introspect.POJOPropertiesCollector.collect(POJOPropertiesCollector.java:243)", "com.fasterxml.jackson.databind.introspect.BasicClassIntrospector.collectProperties(BasicClassIntrospector.java:197)","com.fasterxml.jackson.databind.introspect.BasicClassIntrospector.forDeserialization(BasicClassIntrospector.java:110)","com.fasterxml .jackson.databind.introspect.BasicClassIntrospector.forDeserialization(BasicClassIntrospector.java:15)","com.fasterxml.jackson.databind.DeserializationConfig.introspect(DeserializationConfig.java:703)","com.fasterxml.jackson.databind.deser .DeserializerCache._createDeserializer(DeserializerCache.java:330)","com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCache2(DeserializerCache.java:265)","com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCacheValueDeserializer(DeserializerCache.java:245)", "com.fasterxml.jackson.databind.deser.DeserializerCache.findValueDeserializer(DeserializerCache.java:143)","com.fasterxml.jackson.databind.DeserializationContext.findRootValueDeserializer(DeserializationContext.java:439)","com.fasterxml.jackson .databind.ObjectReader._prefetchRootDeserializer(ObjectReader.java:1588)","com.fasterxml.jackson.databind.ObjectReader.(ObjectReader.java:185)","com.fasterxml.jackson.databind.ObjectMapper._newReader(ObjectMapper. java:558)","com.fasterxml.jackson.databind.ObjectMapper.reader(ObjectMapper.java:3098)"],"原因":{"errorMessage":"com.fasterxml.jackson.databind.ObjectMapper","errorType":"java.lang.ClassNotFoundException","stackTrace":["java.net.URLClassLoader.findClass(URLClassLoader.java :381)","java.lang.ClassLoader.loadClass(ClassLoader.java:424)","java.lang.ClassLoader.loadClass(ClassLoader.java:357)","java.lang.Class.getDeclaredFields0(Native Method )","java.lang.Class.privateGetDeclaredFields(Class.java:2583)","java.lang.Class.getDeclaredFields(Class.java:1916)","com.fasterxml.jackson.databind.introspect.AnnotatedClass。 _findFields(AnnotatedClass.java:689)","com.fasterxml.jackson.databind.introspect.AnnotatedClass.resolveFields(AnnotatedClass.java:470)","com.fasterxml.jackson.databind.introspect.AnnotatedClass.fields(AnnotatedClass.java:282)","com.fasterxml.jackson.databind.introspect.POJOPropertiesCollector._addFields(POJOPropertiesCollector.java:390)","com.fasterxml.jackson.databind.introspect.POJOPropertiesCollector.collect( POJOPropertiesCollector.java:243)","com.fasterxml.jackson.databind.introspect.BasicClassIntrospector.collectProperties(BasicClassIntrospector.java:197)","com.fasterxml.jackson.databind.introspect.BasicClassIntrospector.forDeserialization(BasicClassIntrospector.java: 110)","com.fasterxml.jackson.databind.introspect.BasicClassIntrospector.forDeserialization(BasicClassIntrospector.java:15)","com.fasterxml.jackson.databind.DeserializationConfig.introspect(DeserializationConfig.java:703)","com .fasterxml.jackson.databind.deser.DeserializerCache。_createDeserializer(DeserializerCache.java:330)","com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCache2(DeserializerCache.java:265)","com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCacheValueDeserializer(DeserializerCache. java:245)","com.fasterxml.jackson.databind.deser.DeserializerCache.findValueDeserializer(DeserializerCache.java:143)","com.fasterxml.jackson.databind.DeserializationContext.findRootValueDeserializer(DeserializationContext.java:439)", "com.fasterxml.jackson.databind.ObjectReader._prefetchRootDeserializer(ObjectReader.java:1588)","com.fasterxml.jackson.databind.ObjectReader.(ObjectReader.java:185)","com.fasterxml.jackson.databind. ObjectMapper._newReader(ObjectMapper.java:558)","com.fasterxml.jackson.databind。ObjectMapper.reader(ObjectMapper.java:3098)"]}}}

这是我的 JSON 输入(取自在线的TestColors 示例):

因此,显然 AmazonSpeechletRequestEnvelope不是handleRequest().

handleRequest()接收来自 Alexa 的请求的正确方法签名是什么?

我找不到适用于 Alexa/Echo 的 Amazon Lambda 的 Java 示例。

0 投票
6 回答
10827 浏览

amazon-web-services - Amazon Echo - 向设备推送消息

我已将我的亚马逊回声设备与关联到我的帐户的亚马逊门户集成。我能够使用 Alexa Skills Kit 创建自己的自定义问题,并使用 AWS Lambda 函数进行处理以生成响应。

我的问题是:是否可以以编程方式将消息“推送”到回显设备?例如,我想让它说话而不用问它问题。我希望它在特定时刻做某事。

如果可能的话,您能否分享任何示例代码来实现这一目标?

0 投票
1 回答
5405 浏览

javascript - 将 Netatmo 气象站连接到 Amazon Echo (Alexa)

[以下已回答问题中的完整教程。欢迎反馈!]

我正在尝试创建一个 AWS Lambda 函数以用于 Amazon Alexa 技能,以从我的 Netatmo 气象站获取天气信息。基本上,我需要通过 http 请求连接到 Netatmo 云。

这是我的代码片段,http请求是针对临时访问令牌完成的,请求没问题,但结果正文是body:{“error”:“invalid_request”}。这里可能是什么问题?

0 投票
2 回答
4436 浏览

alexa - 您将如何设计用于字母和数字代码的插槽?

我希望我的技能能够提到一个 4 到 5 个字符的代码,其中可以包含字母和数字,例如AB05or ABC12。我如何为 Alexa 设计插槽和话语以理解这些并将它们传递给我的技能?

0 投票
3 回答
1292 浏览

node.js - Alexa-skills 本地测试不起作用

我正在尝试在本地主持一项技能。我正在使用 alexa-skills npm 模块和提供的示例代码:https ://www.npmjs.com/package/alexa-skills 。我在 console.logs 中添加以检查代码是否正在运行,当我运行脚本时它会侦听,但是当我连接到它时没有得到控制台日志。

我使用 curl 命令来模拟回声将发送的内容(我的回声还没有出现):

我得到这个回应:

在我看来,这似乎行不通。我没有看到任何尝试从代码中做出响应(当我测试它时,我确实确保 ID 匹配)。为什么这个脚本不生成输出也没有日志输出?

谢谢!

0 投票
4 回答
24752 浏览

json - 从意图中获取 Alexa Slot 值

我正在努力构建 Alexa 技能,但在将我的插槽值从意图对象中取出时遇到了障碍。意图对象 JSON 如下所示:

我的问题是第一个“字符串”值将是什么来识别插槽?文档有这个:

这是否意味着获得槽的关键是我在交互模型中设置的名称?我犹豫不决的唯一原因是因为我们在插槽中已经有一个名称对象,这绝对是插槽的名称 - 所以如果访问特定插槽的方式是通过名称,名称参数将是多余的(您已经知道访问插槽的名称。)

有谁知道我如何访问 Alexa 技能中的各个插槽值?

顺便说一句,我正在使用 NodeJS 来完成这项技能。