那么,他们如何做到这一点?是否有API调用来捕获识别的文本并将其存储在某处?
#1 楼
自定义技能可以捕获文本并将其发送到您的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
时,您需要提供很多样本话语-对于每种可能的输入长度,至少要提供一个样本,但最好是更多。亚马逊文档建议您针对可容纳各种输入的插槽准备数百个样本。看起来有点乏味,但如果不这样做,就不太可能您的技能就能很好地识别文字。您也许可以根据客户数据生成样本话语(只要事先删除了个人信息!),以便最常见的话语出现在您的样本中-我怀疑Alexa在识别类似于样本的话语时会略有偏见。
亚马逊不鼓励使用
AMAZON.LITERAL
插槽,而是希望您使用自定义插槽类型,这需要您列出可能的输入。重要的是要记住:自定义插槽类型不等同于枚举。如果口头语言理解系统可以识别出列表以外的值,则可能仍会返回该值。尽管自定义插槽类型的输入权重针对列表中的值,但它不仅限于列表中的项。使用插槽值时,您的代码仍然需要包括验证和错误检查。
评论
我相信亚马逊会保留字面上的位置,因为许多开发商抗议他们的损失。但是使用文字插槽会阻止您的技能发布,因为亚马逊不希望开发人员能够“监听”用户。但是您仍然可以将其用于私人技能。
–邱汉ham(Graham Chiu)
17年3月11日在20:07
@GrahamChiu:我的印象是,即使在已发布的技能中,仍然允许使用文字插槽(请参阅此博客文章:“基于开发人员的反馈,我们不会删除LITERAL插槽类型,您可以继续提交包含其功能的技能。”) 。不过,我自己还没有尝试过,因此,如果您可以确认其中任何一种方法,那么对将来的访问者可能会有帮助。
–Aurora0001♦
17年3月11日在20:15