Alexa技能 - 如何获得声明的完整文本要求alexa

时间:2018-05-07 05:00:14

标签: alexa alexa-skill alexa-voice-service alexa-slot alexa-app

您好我正在创建一个Alexa技能,我编写了几个自定义和默认意图,他们工作正常。

现在我想写一个后备意图,其中我想得到确切的声明要求/发送给Alexa技能,有没有办法我们可以获得已经被要求Alexa技能的整个问题字符串/文本。我知道我们可以获得插槽值和意图信息,但我需要将整个文本语句发送给技能。

由于

4 个答案:

答案 0 :(得分:1)

嗯,我也遇到过同样的问题。在尝试了几种方法之后,我得到了问alexa的完整声明文本。

您必须在Alexa技能上进行以下设置(意图名称,插槽名称和插槽类型,您可以根据需要选择)

设置意图

Setting up Intent

设置自定义广告位类型

Setting up custom slot type

设置了Alexa技能后,您可以调用该技能,对启动请求进行一些响应并说出您想要的任何内容,您可以捕获整个文本,如下所示。

"intent": {
            "name": "sample",
            "confirmationStatus": "NONE",
            "slots": {
                "sentence": {
                    "name": "sentence",
                    "value": "hello, how are you?",
                    "resolutions": {
                        "resolutionsPerAuthority": [
                            {
                                "authority": "xxxxxxx",
                                "status": {
                                    "code": "xxxxxxx"
                                }
                            }
                        ]
                    },
                    "confirmationStatus": "NONE",
                    "source": "USER"
                }
            }
        }

注意*:如果有多个意图,则在这种方法中,您将需要正确处理语音。

答案 1 :(得分:0)

没有办法从最高意图直接获得全部话语。现在,您可以获得的最接近的结果是使用类型为 AMAZON.SearchQuery 的自定义广告位(不是另一个答案中建议的自定义类型),但是您必须在发声中定义一个锚定短语在插槽之前。例如,您将定义这样的发音:

search {query}

其中的查询是类型为 AMAZON.SearchQuery 的广告位。

话语中的锚点搜索是强制性的( SearchQuery 类型的要求),因此只要用户通过说出 search 来开始话语,将被捕获​​,这与您想要实现的目标非常接近。

已经说过,实际上有一种间接的方式来捕获用户所说的利用 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}

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

答案 2 :(得分:-1)

英语美国语言有一个名为AMAZON.LITERAL的插槽类型,可让您捕捉所使用的确切短语或句子(取决于您在话语中的使用方式)。但是,此插槽类型在其他地区不可用。

亚马逊也不建议使用它:

  

虽然您可以提交新的和更新的英语(美国)技能   AMAZON.LITERAL,自定义插槽类型提供更好的准确性   AMAZON.LITERAL在大多数情况下。因此,我们建议您   如果可能,请考虑迁移到自定义插槽类型。注意   除英语之外的任何语言均不支持AMAZON.LITERAL   (US)。

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

答案 3 :(得分:-1)

曾经有一种叫做Amazon.LITERAL的插槽类型,允许在特定区域中使用。但是,现在已弃用(或将其删除)。 但是,可以使用自定义广告位解决此问题。

假设我们正在Alexa上创建食品订购系统。像Zomato或Yelp这样的Alexa技能。让我们为技能赋予调用名 robert

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

  • Alexa命令罗伯特给我送一份鸡肉牛排和土豆泥。
  • Alexa请Robert向我推荐一些我附近的印度餐馆。
  • Alexa,请告诉罗伯特给XYZ餐厅最近的单颗星评分。

列出语句后,将它们存储在csv文件中。 我们继续并点击广告位类型旁边的添加按钮。 给您的自定义广告位类型命名。 Name Your Custom Slot Type 现在,一旦完成此操作,就可以提出可以调用您的技能的结构列表。其中一些已在下面给出。

  • Alexa要求罗伯特...
  • Alexa让罗伯特...
  • Alexa命令罗伯特到...
  • Alexa告诉罗伯特...

三个点(...)代表订单/声明的实际部分。这是您要提取的文本。一个例子是;对于该语句,

  

Alexa请罗伯特给我送一桶鸡块

您将只想提取粗体部分。

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

在新的“自定义意图窗口”下方,页面底部是用于添加意图的插槽的空间。我们添加之前创建的自定义广告位,并将其命名为 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"
            }
        }
    }
}

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

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