0

我想让 Alexa 监听特殊数字 -例如:

  • 一二三,
  • 一二,
  • 五、六、
  • 八,九,十,
  • 十一

所以我用插槽类型的 AMAZON.NUMBER 创建了这个意图:

图像


  1. 如果输入词在特定列表中,我可以让 Alexa 触发这个意图吗?(如果输入是“一二三”或“五六”而不是如果输入例如“九十一”则不触发意图)

  2. 如何在我的 node.js 服务器上捕获单词,例如捕获“一二三”而不是自动结果“123”=“onehundredtwentythree”?


skill.intent("numeric_input", function(request, response) {
  let inputID = request.slot("input").toLowerCase();
  response.shouldEndSession(false)
  console.log(inputID); // is "123"
})

任何帮助将非常感激。

4

3 回答 3

1

如果您知道您的输入可以有多少个数字,我会创建话语,例如:{input}, {input}{input}, {input}{input}{input}。当然,这只有在您知道数字序列最多三个数字时才有效。

要将数字转换为单词,您必须使用某种包或自己编写来转换它们,因为 alexa 没有任何此类功能。

我还有一个建议。如果您知道,该用户只能说出 1-9 个数字。这不是很多,您可以使用这些值创建自定义插槽。在这种情况下,alexa 会将单词返回到您的代码中,并且您可以阻止某些您不想得到的数字,例如十一。自定义插槽

于 2018-09-16T13:43:28.840 回答
1

正如您所做的那样,您必须使用AMAZON.Number插槽类型。

如果输入词在特定列表中,我可以让 Alexa 触发这个意图吗?

当您创建自定义槽类型时,需要理解的一个关键概念是这是 Alexa 的 NLP(自然语言处理)的训练数据。您提供的值不是限制用户可以说的严格枚举或数组。这有两个含义

1)不在您的槽值中的单词和短语将传递给您,

2)如果所说的内容未知,您的代码需要执行您需要的任何验证。

在后端验证槽值总是一个好主意。如果这些数字是您不支持的,请以适当的错误消息回复,例如

"Sorry I can proceed wiht Nine eleven, please give the correct number"

这样,您将让您的用户知道他们必须使用不同的号码。如果有数字输入,任何数字都可以进来。所以验证和指导。

如何捕获我的 node.js 服务器上的单词,例如捕获“一二三”而不是自动结果“123”=“onehundredtwentythree”?

如果您使用AMAZON.Number插槽类型,则值将以123.

"numberSlot": {
    "name": "numberSlot",
    "value": "123",
    "confirmationStatus": "NONE"
}

您可以根据需要轻松验证123或将其转换为任何形式。

自动结果“123”=“一百二十三”?

我真的不明白这一点。123不会自动转换为onehundredtwentythree. 如果您指的是演讲,或者 Alexa 说话的方式123,那么情况就不同了。在您输出 SSML 中使用<say-as interpret-as="digits">123</say-as>分别拼写每个数字。

于 2018-09-17T05:16:37.793 回答
0

1.创建自定义插槽
2.转到创建的自定义插槽的批量编辑并在字母中插入数字。您可以从此链接获得帮助。 字母中的数字(过滤您不想要的数字)
3.使用自定义插槽创建自定义意图

于 2018-10-11T13:27:47.977 回答