标签: alexa-skills-kit

Alexa - 如何接受自由文本作为输入/插槽。除了使用自定义插槽并提供大量列表之外,还有什么方法吗?

如何接受自由文本作为输入/插槽?除了使用自定义插槽并提供大量列表之外,还有什么方法吗?由于不推荐使用文字槽类型,如何向 alexa 提供自由文本/字符串输入?

speech-to-text alexa alexa-skills-kit

7
推荐指数
2
解决办法
6080
查看次数

当我需要 aws-sdk 模块时,AWS Lambda 函数超时

我正在尝试从 Lambda 函数(针对 Alexa 技能)查询 DynamoDB 表,但是当我发送调用 的意图时require('aws-sdk'),该技能似乎挂起并超时。Alexa 测试页面只是说“请求的技能响应出现问题”,我在 CloudWatch 日志中没有看到任何错误。我有能力捕捉任何错误并将它们作为口头回复返回,所以我确定这不是一个未捕捉到的异常。我也试过将 包裹require在一个try/catch块中,但这也不起作用。

这是在收到require测试数据库意图请求时加载的模块:

const AWS = require('aws-sdk');

module.exports = () => {
  return 'Success!';
};
Run Code Online (Sandbox Code Playgroud)

如果我注释掉require('aws-sdk'),该功能会正常工作,Alexa 会回复“成功”。

当我所做的只是需要aws-sdk模块时,为什么我的技能会中断?

我对 AWS 非常陌生,这是我第一次尝试在 Lambda 函数中访问 DynamoDB 表。

Lambda 函数作为 zip 上传,其中包含我的源代码、package.json(包括aws-sdk作为依赖项)和node_modules文件夹。

amazon-web-services node.js aws-lambda alexa-skills-kit

7
推荐指数
1
解决办法
1348
查看次数

如何在没有AWS的私有网络中运行Amazon Echo

我正在尝试将Amazon Echo用于我公司内的实用程序项目.我有一堆内部网站点,我打算从中收集信息并开发自定义技能,让用户查询数据.但是客户端jar(我正在使用java)需要上传到AWS以创建Lambda函数,然后才能使用该自定义技能.这不起作用,因为我的jar需要从这些Intranet系统中使用Web服务.

有没有办法在不使用AWS的情况下在私有网络中运行Echo?我试图在互联网/ stackoverflow上找到任何相关信息,但不能.

amazon-web-services alexa-skills-kit

6
推荐指数
1
解决办法
8497
查看次数

如何在用户使用Alexa技能时获取用户的帐户信息

我们将创建一个允许用户控制Wi-Fi LED的Alexa技能.每次用户使用该技能时,我们希望我们可以在该技能的AWS Lambda函数中使用的SDK的回调中获取用户的帐户信息.

例如,用户登录到他的亚马逊帐户并使用他的Alexa-Enabled设备并说"Alexa,要求打开".然后,我们所做的技能将触发Lambda函数并传递用户的帐户详细信息,以便我们可以在我们的主机中检查该用户是否拥有该设备.

那么,在包含用户帐户信息的Alexa Skill Kit中使用的Java SDK中是否有回调?

谢谢!

alexa aws-lambda alexa-skill alexa-skills-kit

6
推荐指数
1
解决办法
3127
查看次数

Alexa Skill - 如何检索Lambda函数中的槽值

我正在开发一个带有一个Intent的Alexa技能,其中包含一个带有几个可能值的Slot.

我的槽与所定义"name" : "Channel","type" : "LIST_OF_CHANNELS"和值

  1. iqram
  2. 英格丽
  3. 菲尔
  4. 克莱德

如何检索要在Lambda函数中使用的发出的槽值?这是"从话语部分检索插槽的价值"我希望得到回答.非常感谢.

 // retrieve value of slot from utterance     
 var c = intent.slots.Channel.value; 

 // append value to end of URL that references API
 fetchEnseParse("/channel/" + c, function(body) {

 // continuation of this function is below 
Run Code Online (Sandbox Code Playgroud)

alexa aws-lambda alexa-skills-kit

6
推荐指数
2
解决办法
8804
查看次数

如何在Alexa Skill lambda函数中正确指定SSML?

我正在尝试制作一个Alexa技能,其中Alexa说的是用SSML标记的东西.我试图模仿这个回购中的例子,但我总是收到一个lambda响应

{
  ...
  "response": {
    "outputSpeech": {
      "type": "SSML",
      "ssml": "<speak> [object Object] </speak>"
    },
  ...
}
Run Code Online (Sandbox Code Playgroud)

和Alexa字面上说"对象对象".


这是我输入到我的lambda函数(使用node.js):

var speechOutput = {
    type: "SSML",
    ssml: 'This <break time=\"0.3s\" /> is not working',
};

this.emit(':tellWithCard', speechOutput, SKILL_NAME, "ya best not repeat after me.")
Run Code Online (Sandbox Code Playgroud)

像这样设置speechOutput也不起作用:

var speechOutput = {
    type: "SSML",
    ssml: 'This <break time=\"0.3s\" /> is not working',
};
Run Code Online (Sandbox Code Playgroud)


编辑:

index.js

'使用严格';

var Alexa = require('alexa-sdk');

var APP_ID = "MY_ID_HERE";
var SKILL_NAME = "MY_SKILL_NAME";

exports.handler = function(event, context, …
Run Code Online (Sandbox Code Playgroud)

ssml alexa node.js aws-lambda alexa-skills-kit

6
推荐指数
2
解决办法
8093
查看次数

如何在自定义技能中处理用户的"是"/"否"回复?

我正在尝试建立一个alexa自定义技能.我正面临一个问题,即我试图从用户那里得到是/否回答该技能要求用户提出的问题.

Alexa: Would you like to know the rules of the game?
User: <Can respond either Yes or No>
Run Code Online (Sandbox Code Playgroud)

根据用户响应,我想执行一个特定的操作.

这是我的意图架构:

{
    "intents": [
    {
        "intent": "AMAZON.StopIntent"
    },
    {
        "intent": "AMAZON.CancelIntent"
    },
    {
        "intent": "AMAZON.HelpIntent"
    },
    {
        "intent": "StartGame"
    },
    {
        "intent": "GetRules"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

以下是我的示例话语:

StartGame Begin the game
StartGame Start the game

GetRules What are the rules
GetRules Get the rules
GetRules Tell me the rules
GetRules Tell me the rules again
Run Code Online (Sandbox Code Playgroud)

技能问用户的问题如下:

Welcome to the game. …
Run Code Online (Sandbox Code Playgroud)

alexa alexa-skill alexa-skills-kit amazon-echo alexa-slot

6
推荐指数
1
解决办法
6679
查看次数

解析AMAZON.DURATION插槽类型的ISO-8601持续时间值

java.time库是否提供了解析整个ISO-8601持续时间规范的综合方法?

持续时间Alexa Slot Type引用列出了使用AMAZON.DURATION槽类型时要预期的一些示例字符串.所有字符串都在ISO-8601持续时间内,但P2YT3H10无法通过java.time.Period或解析java.time.Duration.

Seq(
 "PT10M",
 "PT5H",
 "P3D",
 "PT45S",
 "P8W",
 "P7Y",
 "PT5H10M",
 "P2YT3H10"
).map { s =>
 s -> Try {
   try {
     Period.parse(s)
   } catch {
     case ex: Throwable => Duration.parse(s)
   }
 }.map(x => x.toString -> x.getClass.getSimpleName)
}
.foreach(println)
Run Code Online (Sandbox Code Playgroud)

结果:

(PT10M,Success((PT10M,Duration)))
(PT5H,Success((PT5H,Duration)))
(P3D,Success((P3D,Period)))
(PT45S,Success((PT45S,Duration)))
(P8W,Success((P56D,Period)))
(P7Y,Success((P7Y,Period)))
(PT5H10M,Success((PT5H10M,Duration)))
(P2YT3H10,Failure(java.time.format.DateTimeParseException: Text cannot be parsed to a Duration))
Run Code Online (Sandbox Code Playgroud)

java duration period java-time alexa-skills-kit

6
推荐指数
2
解决办法
1773
查看次数

Alexa开发人员控制台端点错误

我在Alexa开发人员控制台中看到一种奇怪的行为,其中一种技能具有配置的端点值:

在此处输入图片说明

使用端点的一些旧的现金值(请注意与配置中的上述值的URL差异:https : //87d44b5e.ngrok.io/kai/api/v1/alexa),导致SKILL_ENDPOINT_ERROR

在此处输入图片说明

可以在Alexa外部完全访问已配置的端点(https://87d44b5e.ngrok.io/kai/api/v1/alexa)。

设备日志的异常堆栈中引用的端点值是不同的:https : //simeonleyzerzon5.localhost.run/kai/api/v1/alexa。我不知道它的起源,但这是我几天前一直在使用的旧式端点。由于这些值一天要过期几次,因此需要在Alexa开发人员控制台中对其进行重新配置。似乎它已被Alexa内部缓存。

该技能已启用帐户关联。

我尝试清理浏览器cookie,重新启动浏览器,以隐身模式运行,在Alexa json编辑器中重新保存和重建模型,在其中重新保存端点的正确值,在开发人员控制台上禁用帐户链接,禁用并通过https://alexa.amazon.com重新启用该技能-似乎无济于事。在不同的浏览器中,同样的错误也仍然存在。

通过开发人员控制台的|邀请我与同事分享了一项技能 设置| 用户权限,他能够毫无错误地运行该技能,并且不会遇到错误的缓存行为(他的技能使用了新近更新的端点),而对我而言,这种情况还在继续发生。

  • 似乎Alexa会在每个用户存储某个点的某个技能时的快照,这时会存储端点值(也许还有其他值?),然后将其重用,有人可以解释一下该存储发生的时间以及如何重置该记忆吗?

  • 以上是正确的假设吗?如果是,那么是否进行了记忆以防止在将技能分发给(通过链接)并被多个用户击中时发生并发相关问题的风险?还是打算用于其他用途?

  • 如何解决这一错误行为?

  • 用户和技能之间的关系是什么?为什么几个用户共享的技能状态不一致?如何在使用该技能的所有用户中触发该技能状态的重置和重新同步。是什么使它不同步?

ssh alexa alexa-skill alexa-skills-kit

6
推荐指数
0
解决办法
651
查看次数

了解插槽并在Alexa技能套件中获取其价值

我试图正确理解插槽如何以编程方式工作。在编写任何代码之前,我会通过查看适用于python的alexa sdk 的示例来尝试很好地理解它。

具体来说,我试图理解ColorPicker示例中插槽中的基础知识(我正确理解了hello_world,并通过自己添加一些东西进行了一些编码。工作正常)。

我很难理解如何访问这些插槽值(因为我看到它是通过两种不同的方式完成的)。

def whats_my_color_handler(handler_input):
    """Check if a favorite color has already been recorded in
    session attributes. If yes, provide the color to the user.
    If not, ask for favorite color.
    """
    # type: (HandlerInput) -> Response
    if color_slot_key in handler_input.attributes_manager.session_attributes:
        fav_color = handler_input.attributes_manager.session_attributes[
            color_slot_key]
        speech = "Your favorite color is {}. Goodbye!!".format(fav_color)
        handler_input.response_builder.set_should_end_session(True)
    else:
        speech = "I don't think I know your favorite color. " + help_text
        handler_input.response_builder.ask(help_text)

    handler_input.response_builder.speak(speech) …
Run Code Online (Sandbox Code Playgroud)

python alexa-skills-kit alexa-slot

6
推荐指数
1
解决办法
177
查看次数