让 Alexa 听数字
Posted
技术标签:
【中文标题】让 Alexa 听数字【英文标题】:Make Alexa listen to numbers 【发布时间】:2019-02-20 11:41:22 【问题描述】:我想让 Alexa 监听特殊的数字 - 单词,例如:
一二三, 一二, 五,六, 八、九、十、 十一所以我用插槽类型的 AMAZON.NUMBER 创建了这个意图:
如果输入词在特定列表中,我能否让 Alexa 仅触发此意图? (如果输入是“一二三”或“五六”,则只触发意图,而不是如果输入例如“九十一”)
如何在我的 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"
)
任何帮助将不胜感激。
【问题讨论】:
【参考方案1】:如果您知道您的输入可以包含多少个数字,我会创建话语,例如:input
、inputinput
、inputinputinput
。当然,这只有在您知道数字序列最长为三个数字时才有效。
要将数字转换为单词,您必须使用某种包或自己编写来转换它们,因为 alexa 没有任何此类功能。
我还有一个建议。如果您知道,该用户只能说出 1-9 个数字。这不是很多,您可以使用这些值创建自定义插槽。在这种情况下,alexa 会将单词返回到您的代码中,并且您可以阻止某些您不想获得的数字,例如 f.e.十一.
【讨论】:
【参考方案2】:正如您所做的那样,您必须使用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>
分别拼写每个数字。
【讨论】:
我想告诉 Alexa 不同的数字。像 eg “一二八”,我不想得到结果“128”,因为如果输入是“十一”,结果将是“111”,可以解释为“一一”一”、“十一一”、“一十一”、“一百一十一” 在我的情况下,数字很长(ID),如 596630、485200 等。我该如何处理它,因为用户不可能说出像onehundredtwentythree
这样的数字。【参考方案3】:
1.创建自定义槽 2. 批量编辑创建的自定义插槽并在字母中插入数字。您可以从此链接获得帮助。 Numbers in letters(过滤你不想要的号码) 3.使用自定义槽创建自定义意图
【讨论】:
以上是关于让 Alexa 听数字的主要内容,如果未能解决你的问题,请参考以下文章
听~英语数字经济之父TED演讲:区块链将如何彻底改变我们的经济?(附视频&演讲稿)