Alexa技能-如何获取询问alexa的陈述的全文

问题描述 投票:4回答:3

[嗨,我正在创建Alexa技能,我已经编码了几种自定义和默认意图,它们工作正常。

现在,我想编写一个后备意图,其中我想获得向Alexa技能询问/发送的确切说明,有一种方法可以让我们获得已向Alexa技能询问的整个问题字符串/文本。我知道我们可以获取广告位值和意图信息,但是我需要将整个文本语句发送给技能。

谢谢

alexa alexa-skill alexa-voice-service alexa-slot alexa-app
3个回答
0
投票

无法从顶级意图直接获得全部话语。现在,您所能获得的最接近的结果是使用类型为[[AMAZON.SearchQuery的自定义广告位(不是另一个答案中建议的自定义类型),但是您必须在发声之前在广告位之前定义一个锚定短语。例如,您可以定义类似以下的发音:

search {query}
其中查询是

AMAZON.SearchQuery

类型的广告位。语音中的锚点搜索是强制性的(

SearchQuery

类型的要求),因此只要用户通过说search来启动语音,随后的所有内容都会被捕获达到您想要的目标。已经说过,实际上存在一种间接方式来近似捕获用户所说的全部话语(由NLU过滤),利用

AMAZON.SearchQuery

,但仅作为使用Dialog Management进行的对话的一部分。如果您正在使用此类对话框,其中Alexa自动使用已定义的提示来请求广告位信息,则可以定义一种话语,即AMAZON.SearchQuery类型的单个孤立广告位,不带锚点。示例:Alexa: Ok, I will create a reminder for you. Please tell me the text of the reminder User: Pick of the kids from school Alexa: Ok. I will remind you to Pick up the kids from school
[在上面的示例中,Alexa检测到用户想要发送提醒,但是没有设置提醒文本,因此引出了广告位。当您(作为开发人员)定义Alexa需要询问的提示时,您还要定义可能的响应。在这种情况下,您可以将响应话语定义为:

{query}

并捕获用户根据提示说的全部内容,例如“从学校接孩子”

-1
投票
[美国英语]的插槽类型为AMAZON.LITERAL,可让您捕获所使用的确切短语或句子(取决于您在发声中的用法)。但是,此广告位类型在其他区域不可用。

Amazon也不建议使用它:

尽管您可以通过以下方式提交新的和更新的英语(美国)技能AMAZON.LITERAL,自定义插槽类型比在大多数情况下,AMAZON.LITERAL。因此,我们建议您如果可能,请考虑迁移到自定义插槽类型。注意除英语以外的任何语言均不支持AMAZON.LITERAL(美国)。

参见:https://developer.amazon.com/docs/custom-skills/literal-slot-type-reference.html


-1
投票
曾经曾经有一个称为Amazon.LITERAL的插槽类型,允许在特定区域中使用。但是,现在已弃用(或将其删除)。但是,使用

自定义插槽可以解决此问题。

假设我们正在Alexa上创建食品订购系统。像Zomato或Yelp这样的Alexa技能。让我们为技能提供

调用名称 robert

因此,我们首先列出将要执行的语句类型。如果您的技能不是特定技能,则可以跳过此步骤。但是,这只能帮助您定义技能可能期望遇到的陈述类型。

    [Alexa命令罗伯特给我送来一份鸡肉牛排和土豆泥。
  • Alexa请罗伯特推荐我附近一些不错的印度餐厅。
  • [Alexa,请告诉罗伯特给XYZ餐厅最近的单颗星评分。
  • 在列出语句后,我们将它们存储在一个csv文件中。我们继续并单击

    Slot Types

  • 旁边的Add按钮。为您的自定义广告位类型命名。Name Your Custom Slot Type现在,一旦完成此操作,就可以提出可以调用您的技能的结构列表。其中一些已在下面给出。
      Alexa要求罗伯特...
    • Alexa让罗伯特...
    • Alexa命令罗伯特到...
    • Alexa告诉罗伯特...
  • 三个点(...)表示订单/声明的实际部分。这是您要提取的文本。一个例子是;对于声明,

    Alexa问Robert

    给我送一桶鸡块

  • 您可能只想提取粗体部分。

    现在,Amazon根据意图对语句进行分类。它们具有五个默认的预定义意图,分别用于“欢迎”,“取消”,“帮助”和其他基本功能。我们继续并创建一种习惯性意图,以处理将主要与我们的技能进行交互的主流陈述。Create Custom Intent

    在新的“自定义意图窗口”下,在页面底部是用于添加意图的插槽的空间。我们添加之前创建的自定义插槽,并将其命名为

    literal。 (您可以命名任何东西)在我们的例子中,自定义位置literal

    是要从用户语句中提取的文本。现在我们继续,用{literal}替换结构列表中的三个点(...),并将其添加到示例话语列表中。Add Custom Slot and Sample Utterances to the Custom Intent

    对于声明

    Alexa命令罗伯特给我送来一份鸡肉牛排和土豆泥。

    JSON将包含这样的部分,用于自定义意图并突出显示自定义广告位文本。

    "request": { "type": "IntentRequest", "requestId": "", "timestamp": "2019-01-01T19:37:17Z", "locale": "en-IN", "intent": { "name": "InteractionIntent", "confirmationStatus": "NONE", "slots": { "literal": { "name": "literal", "value": "to send me a chicken steak with mashed potatoes.", "resolutions": { "resolutionsPerAuthority": [ { "authority": "", "status": { "code": "" } } ] }, "confirmationStatus": "NONE", "source": "USER" } } } }

    在自定义意图下的slot小节下,我们有一个文字槽,其值为我们提供了用户语音的文本。 

    "slots": { "literal": { "name": "literal", "value": "to send me a chicken steak with mashed potatoes."

    © www.soinside.com 2019 - 2024. All rights reserved.