让Alexa听数字

时间:2018-09-16 09:12:27

标签: node.js amazon alexa alexa-skill alexa-app

我想让Alexa听特殊的数字-单词,例如:

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

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

img


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

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

    < / li>

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

任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:1)

如果您知道您的输入可以有多少个数字,我将创建语音,例如:<Grid> <ListView ItemsSource="{Binding Friends}" DisplayMemberPath="DisplayMember"> </ListView> </Grid> DataContext = _viewModel;{input}。当然,只有在您知道数字序列最多包含三个数字的情况下,这才起作用。

要将数字更改为单词,您必须使用某种程序包或自己编写以对其进行转换,因为alexa没有任何此类功能。

我还有一个建议。如果您知道,该用户只能说1-9个数字。数量不多,您可以使用这些值创建自定义广告位。在这种情况下,Alexa会将单词返回到您的代码中,您可以阻止某些您不想获取的数字,例如十一。Custom slot

答案 1 :(得分:1)

与以前一样,您必须使用AMAZON.Number插槽类型。

  

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

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

1)不在您的广告位值中的单词和短语会被传递给您,

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

在后端验证插槽值始终是一个好主意。如果您不支持这些数字,请使用适当的错误消息(例如

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

这样,您将使用户知道他们必须使用其他号码。如果输入数字,则可以输入任何数字。因此请进行验证并提供指导。

  

如何在我的node.js服务器上捕获单词,就像捕获“一个”   两个三”,而不是自动结果“ 123” =   “一百二十三”?

如果使用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>分别拼写每个数字。

答案 2 :(得分:0)

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