Answers:
自定义技能可以捕获文本并将其发送到您的Skill的API。
如果您不完全了解Alexa Skills的工作原理,则简要总结一下:
首先,您在Amazon注册您的技能,提供意图模式和示例话语。意图架构定义了可以执行的操作,以及用于将自定义数据发送到API 的插槽。样本话语提供了用户如何触发每个意图的示例。
当用户激活您的技能时,Alexa会尝试将他们所说的内容与您的一项技能样本话语相匹配。如果不匹配,它将发送一个HTTPS请求到服务器,要求响应。
您的服务器会提供响应(如果一切顺利),然后Alexa将向触发您技能的用户提供反馈。
该AMAZON.LITERAL
插槽几乎可以接受任何输入。请注意,当前仅在英语(美国)区域中支持该语言,而英语(英国)和德语技能不能使用AMAZON.LITERAL
。
您的意图架构可能如下所示:
{
"intents": [
{
"intent": "SaveTodo",
"slots": [
{
"name": "Todo",
"type": "AMAZON.LITERAL"
}
]
}
]
}
您的样本话语可能是这样的:
SaveTodo remind me to {fetch the shopping|Todo}
SaveTodo remind me to {write my English essay|Todo}
SaveTodo remind me to {buy some dog food tomorrow|Todo}
使用时AMAZON.LITERAL
,您需要提供大量样本发音-每个可能的输入长度至少要包含一个样本,但理想情况下要更多。Amazon文档建议您应该针对可容纳各种输入的插槽的数百个样本作为目标。
看起来确实有些乏味,但是如果您不这样做,您的技能不太可能会很好地识别文本。您可能会根据客户数据生成样本话语(只要事先删除了个人信息!),以便最常见的话语出现在您的样本中-我怀疑Alexa在识别类似于样本的话语时会略有偏向。
但是,亚马逊不鼓励AMAZON.LITERAL
使用插槽,而是希望您使用自定义插槽类型,这需要您列出可能的输入。重要的是要记住:
自定义插槽类型与枚举等效。如果口头语言理解系统可以识别出列表以外的值,则可能仍会返回该值。尽管自定义插槽类型的输入权重针对列表中的值,但它不仅限于列表中的项。使用插槽值时,您的代码仍需要包含验证和错误检查。