2

我是 Alexa 开发的新手。我已经使用 AWS lambda 函数和 Node.js 代码成功创建了一个 Alexa 技能。这是我的意图模式。

{
  "intents": [
    {
      "slots": [
        {
          "name": "locationName",
          "type": "LOCATION_LIST"
        }
      ],
      "intent": "locationIntent"
    }
  ]
}

我还使用了具有以下值的自定义插槽类型“LOCATION_LIST”。

kitchen
bedroom
bathroom
dining area

它工作正常。但我需要从我自己的服务中动态添加更多位置值。可能吗?

根据我的系统架构,我们无法预定义位置名称。那我该怎么办?

4

3 回答 3

4

是的,有可能完成您的要求。

首先,让我们弄清楚插槽是如何工作的。如这篇Alexa 博客文章中所述:

“当您创建自定义插槽类型时,要理解的一个关键概念是,这是 Alexa 的 NLP(自然语言处理)的训练数据。您提供的值不是限制用户可以说的严格枚举或数组。这有两个含义 1) 不在您的槽值中的单词和短语将被传递给您,2) 如果所说的内容未知,您的代码需要执行您需要的任何验证。”

这意味着您可以在插槽中接收未在 SLOT 定义中特别列出的单词。所以你只需要在 SLOT 列表中提供足够的单词示例来帮助 Alexa NLP 引擎。

我建议您尝试当前的实现,并尝试替换一个不同的位置,看看 Alexa 是否可以识别并返回它。尝试将槽值写入日志并查看。你可能会感到惊喜。

于 2017-10-21T13:04:43.970 回答
1

不,您不能动态添加插槽。也许是一个非常简短的答案,但事实就是如此。

亚马逊也没有默认插槽来满足您的要求。如果是城市等其他位置,则可以使用“AMAZON.City”等内置插槽。这里唯一可能的方法是在您的自定义插槽中添加尽可能多的位置。您的自定义槽中最多可以有 50,000 个槽值(交互模型中使用的所有自定义槽的总和)。

https://developer.amazon.com/docs/custom-skills/custom-interaction-model-reference.html#custom-slot-type-values

于 2017-10-19T10:29:49.847 回答
1

虽然@Vijayanath 在撰写本文时是对的,但现在的答案是:是的,这是可能的。这是最近才添加的一项新功能(似乎是在 2019 年 3 月左右)。您可以在此博客文章中了解它。并在此处找到开发人员文档。这总结得很好:

新的动态实体功能通过在运行时调整您的交互模型来帮助您个性化 Alexa 技能体验,而无需编辑、构建或重新认证。现在,您的技能可以通过从代码、数据库或 RESTful API 调用中的数据结构更新现有槽值来处理客户、上下文和会话更改。

于 2019-04-22T12:28:47.117 回答