[嗨,我正在创建Alexa技能,我已经编码了几种自定义和默认意图,它们工作正常。
现在,我想编写一个后备意图,其中我想获得向Alexa技能询问/发送的确切说明,有一种方法可以让我们获得已向Alexa技能询问的整个问题字符串/文本。我知道我们可以获取广告位值和意图信息,但是我需要将整个文本语句发送给技能。
谢谢
无法从顶级意图直接获得全部话语。现在,您所能获得的最接近的结果是使用类型为[[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}
并捕获用户根据提示说的全部内容,例如“从学校接孩子”
AMAZON.LITERAL
,可让您捕获所使用的确切短语或句子(取决于您在发声中的用法)。但是,此广告位类型在其他区域不可用。Amazon也不建议使用它:
尽管您可以通过以下方式提交新的和更新的英语(美国)技能AMAZON.LITERAL,自定义插槽类型比在大多数情况下,AMAZON.LITERAL。因此,我们建议您如果可能,请考虑迁移到自定义插槽类型。注意除英语以外的任何语言均不支持AMAZON.LITERAL(美国)。
参见:https://developer.amazon.com/docs/custom-skills/literal-slot-type-reference.html
Amazon.LITERAL
的插槽类型,允许在特定区域中使用。但是,现在已弃用(或将其删除)。但是,使用自定义插槽可以解决此问题。
假设我们正在Alexa上创建食品订购系统。像Zomato或Yelp这样的Alexa技能。让我们为技能提供调用名称 robert
。因此,我们首先列出将要执行的语句类型。如果您的技能不是特定技能,则可以跳过此步骤。但是,这只能帮助您定义技能可能期望遇到的陈述类型。Slot Types
Alexa问Robert给我送一桶鸡块
现在,Amazon根据意图对语句进行分类。它们具有五个默认的预定义意图,分别用于“欢迎”,“取消”,“帮助”和其他基本功能。我们继续并创建一种习惯性意图,以处理将主要与我们的技能进行交互的主流陈述。
在新的“自定义意图窗口”下,在页面底部是用于添加意图的插槽的空间。我们添加之前创建的自定义插槽,并将其命名为
literal。 (您可以命名任何东西)在我们的例子中,自定义位置literal
是要从用户语句中提取的文本。现在我们继续,用{literal}
替换结构列表中的三个点(...),并将其添加到示例话语列表中。对于声明
JSON将包含这样的部分,用于自定义意图并突出显示自定义广告位文本。Alexa命令罗伯特给我送来一份鸡肉牛排和土豆泥。
"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."