我知道某些技能可以捕获口语文字,例如在添加到待办事项列表和购物清单中时,第三方技能也可以做到这一点。使用Molly进行SMS。

那么,他们如何做到这一点?是否有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