【问题标题】:How to add slot values dynamically to alexa skill如何将插槽值动态添加到 alexa 技能
【发布时间】:2018-03-31 07:50:48
【问题描述】:

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

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

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

kitchen
bedroom
bathroom
dining area

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

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

【问题讨论】:

    标签: aws-lambda alexa alexa-skills-kit alexa-skill alexa-slot


    【解决方案1】:

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

    首先,让我们弄清楚插槽的工作原理。如thisAlexa 博文所述:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      • 您说得对,不能动态添加新插槽。但 Abdul 似乎在询问获得额外的插槽值,而不是添加新的插槽或插槽类型。所以这部分是可能的,如我的回答中所述。
      • 所以我很困惑,我可以从我的代码中生成槽值吗?
      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-03-19
        • 1970-01-01
        • 2019-03-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多