PutIntent - Amazon Lex V1

如果您使用的是 Amazon Lex V2,请改为参阅 Amazon Lex V2 指南

 

如果您使用的是 Amazon Lex V1,我们建议您将机器人升级到 Amazon Lex V2。我们不再向 V1 添加新功能,强烈建议使用 V2 以获得全新的机器人。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

PutIntent

创建目的或替换现有目的。

要定义用户和您的机器人之间的互动,您可以使用一个或多个意图。例如,对于订购披萨机器人,您可以创建一个 OrderPizza 意图。

要创建意图或替换现有意图,您必须提供以下信息:

  • 意图名称。例如,OrderPizza

  • 示例言语。例如,“请问我可以点披萨吗。” 和“我想订一个披萨。”

  • 有待收集的信息。您可以为机器人向用户请求的信息指定插槽类型。您可以指定标准插槽类型(例如日期或时间),也可以指定自定义插槽类型(例如披萨的大小和外皮)。

  • 履行意图的方式。您可以提供 Lambda 函数或配置意图以将意图信息返回给客户端应用程序。如果您使用 Lambda 函数,则当所有意图信息都可用时,Amazon Lex 会调用您的 Lambda 函数。如果您将意图配置为仅将意图信息返回给客户端应用程序。

您可以在请求中指定其他可选信息,例如:

  • 要求用户确认意图的确认提示。例如,“我可以为您的披萨下订单了吗?”

  • 意图实现后要发送给用户的结论语句。例如,“我已经为您的披萨下订单了。”

  • 一个后续提示,询问用户是否要进行其他活动。例如,询问“您想和披萨一起订一杯饮品吗?”

如果您指定现有意图名称来更新意图,Amazon Lex 会将意图的 $LATEST 版本中的值替换为请求中的值。Amazon Lex 会删除您在请求中未提供的字段。如果您没有指定必填字段,Amazon Lex 会引发异常。更新意图的 $LATEST 版本时,任何使用意图的 $LATEST 版本的机器人的 status 字段都将设置为 NOT_BUILT

有关更多信息,请参阅 Amazon Lex:工作原理

此操作需要 lex:PutIntent 操作的权限。

请求语法

PUT /intents/name/versions/$LATEST HTTP/1.1 Content-type: application/json { "checksum": "string", "conclusionStatement": { "messages": [ { "content": "string", "contentType": "string", "groupNumber": number } ], "responseCard": "string" }, "confirmationPrompt": { "maxAttempts": number, "messages": [ { "content": "string", "contentType": "string", "groupNumber": number } ], "responseCard": "string" }, "createVersion": boolean, "description": "string", "dialogCodeHook": { "messageVersion": "string", "uri": "string" }, "followUpPrompt": { "prompt": { "maxAttempts": number, "messages": [ { "content": "string", "contentType": "string", "groupNumber": number } ], "responseCard": "string" }, "rejectionStatement": { "messages": [ { "content": "string", "contentType": "string", "groupNumber": number } ], "responseCard": "string" } }, "fulfillmentActivity": { "codeHook": { "messageVersion": "string", "uri": "string" }, "type": "string" }, "inputContexts": [ { "name": "string" } ], "kendraConfiguration": { "kendraIndex": "string", "queryFilterString": "string", "role": "string" }, "outputContexts": [ { "name": "string", "timeToLiveInSeconds": number, "turnsToLive": number } ], "parentIntentSignature": "string", "rejectionStatement": { "messages": [ { "content": "string", "contentType": "string", "groupNumber": number } ], "responseCard": "string" }, "sampleUtterances": [ "string" ], "slots": [ { "defaultValueSpec": { "defaultValueList": [ { "defaultValue": "string" } ] }, "description": "string", "name": "string", "obfuscationSetting": "string", "priority": number, "responseCard": "string", "sampleUtterances": [ "string" ], "slotConstraint": "string", "slotType": "string", "slotTypeVersion": "string", "valueElicitationPrompt": { "maxAttempts": number, "messages": [ { "content": "string", "contentType": "string", "groupNumber": number } ], "responseCard": "string" } } ] }

URI 请求参数

请求使用以下 URI 参数。

name

意图的名称。名称区分大小写。

该名称不能与内置意图名称匹配,否则含有“AMAZON.”的内置意图名称 会被删除。例如,由于存在名为 AMAZON.HelpIntent 的内置意图,因此您无法创建名为的 HelpIntent 的自定义意图。

有关内置目的的列表,请参阅 Alexa Skills Kit 中的标准内置目的

长度限制:长度下限为 1。最大长度为 100。

模式:^([A-Za-z]_?)+$

必需:是

请求体

请求接受采用 JSON 格式的以下数据。

checksum

标识 $LATEST 版本的特定修订版。

创建新意图时,请将 checksum 字段留空。如果指定校验和,则会出现 BadRequestException 异常。

当您想更新意图时,请将 checksum 字段设置为 $LATEST 版本最新修订版的校验和。如果您未指定 checksum 字段,或者校验和与 $LATEST 版本不匹配,则会出现 PreconditionFailedException 异常。

类型:字符串

必需:否

conclusionStatement

您希望 Amazon Lex 在 Lambda 函数成功履行意图后向用户传达的语句。

仅当您在 fulfillmentActivity 中提供 Lambda 函数时,此元素才有意义。如果您将意图返回给客户端应用程序,则无法指定此元素。

注意

followUpPromptconclusionStatement 是互斥的。您只能指定其中一个。

类型:Statement 对象

必需:否

confirmationPrompt

提示用户确认目的。此问题的回答应为 yes 或 no。

Amazon Lex 使用此提示来确保用户确认意图可履行。例如,对于 OrderPizza 意图,您可能需要在下单之前确认订单是正确的。对于其他意图,例如仅回答用户问题的意图,在提供信息之前,您可能无需要求用户进行确认。

注意

您必须同时提供 rejectionStatementconfirmationPrompt,或者两者都不提供。

类型:Prompt 对象

必需:否

createVersion

当设置为 true 时,将创建意图的新编号版本。这与调用 CreateIntentVersion 操作相同。如果不指定 createVersion,则默认值为 false

类型:布尔值

必需:否

description

目的的描述。

类型:字符串

长度约束:最小长度为 0。最大长度为 200。

必需:否

dialogCodeHook

指定为每个用户输入调用的 Lambda 函数。您可以调用此 Lambda 函数对用户交互进行个性化。

例如,假设您的机器人确定用户是 John。您的 Lambda 函数可能会从后端数据库中检索 John 的信息并预先填充一些值。例如,如果您发现 John 对谷蛋白过敏,则可以将相应的意图插槽 GlutenIntolerant 设置为 true。您可能会找到 John 的电话号码并设置相应的会话属性。

类型:CodeHook 对象

必需:否

followUpPrompt

Amazon Lex 将在履行意图后使用此提示来征求其他活动。例如,在履行 OrderPizza 意图后,您可以提示用户订购饮品。

Amazon Lex 采取的操作取决于用户的响应,如下所示:

  • 如果用户说“是”,则会使用为机器人配置的澄清提示进行响应。

  • 如果用户说“是”,然后继续说一句触发意图的言语,则会启动针对该意图的对话。

  • 如果用户说“否”,则会使用为后续提示配置的拒绝语句进行响应。

  • 如果它无法识别出这句话,它会再次重复后续提示。

followUpPrompt 字段和 conclusionStatement 字段是互斥的。您只能指定其中一个。

类型:FollowUpPrompt 对象

必需:否

fulfillmentActivity

必需。描述履行意图的方式。例如,在用户提供披萨订单的所有信息后,fulfillmentActivity 定义机器人如何向当地披萨店下订单。

您可以将 Amazon Lex 配置为将所有意图信息返回给客户端应用程序,或者指示其调用可以处理意图的 Lambda 函数(例如,向披萨店下订单)。

类型:FulfillmentActivity 对象

必需:否

inputContexts

InputContext 对象数组,列出了 Amazon Lex 在与用户的对话中选择意图时必须处于活动状态的上下文。

类型:InputContext 对象数组

数组成员:最少 0 个物品。最多 5 项。

必需:否

kendraConfiguration

使用 AMAZON.KendraSearchIntent 意图以连接至 Amazon Kendra 索引所需的配置信息。有关更多信息,请参阅亚马逊。 KendraSearchIntent

类型:KendraConfiguration 对象

必需:否

outputContexts

OutputContext 对象数组,列出了履行意图时意图激活的上下文。

类型:OutputContext 对象数组

数组成员:最少 0 个物品。最多 10 个物品。

必需:否

parentIntentSignature

内置目的的唯一标识符,此目的建立在它的基础之上。要查找意图的签名,请参阅 Alexa Skills Kit 中的标准内置意图

类型:字符串

必需:否

rejectionStatement

当用户对 confirmationPrompt 中定义的问题回答“否”时,Amazon Lex 将使用此响应进行响应,以确认意图已被取消。

注意

您必须同时提供 rejectionStatementconfirmationPrompt,或者两者都不提供。

类型:Statement 对象

必需:否

sampleUtterances

用户可能用以传递意图的一组言语(字符串)。例如,“我想要 {PizzaSize} 披萨”、“订购 {Quantity} {PizzaSize} 个披萨”。

在每句言语中,插槽名称都用大括号括起来。

类型:字符串数组

数组成员:最少 0 项。最多 1500 项。

长度限制:长度下限为 1。最大长度为 200。

必需:否

slots

意图插槽数组。在运行时,Amazon Lex 使用插槽中定义的提示从用户那里引发所需的插槽值。有关更多信息,请参阅 Amazon Lex:工作原理

类型:Slot 对象数组

数组成员:最少 0 个物品。最多 100 个项目。

必需:否

响应语法

HTTP/1.1 200 Content-type: application/json { "checksum": "string", "conclusionStatement": { "messages": [ { "content": "string", "contentType": "string", "groupNumber": number } ], "responseCard": "string" }, "confirmationPrompt": { "maxAttempts": number, "messages": [ { "content": "string", "contentType": "string", "groupNumber": number } ], "responseCard": "string" }, "createdDate": number, "createVersion": boolean, "description": "string", "dialogCodeHook": { "messageVersion": "string", "uri": "string" }, "followUpPrompt": { "prompt": { "maxAttempts": number, "messages": [ { "content": "string", "contentType": "string", "groupNumber": number } ], "responseCard": "string" }, "rejectionStatement": { "messages": [ { "content": "string", "contentType": "string", "groupNumber": number } ], "responseCard": "string" } }, "fulfillmentActivity": { "codeHook": { "messageVersion": "string", "uri": "string" }, "type": "string" }, "inputContexts": [ { "name": "string" } ], "kendraConfiguration": { "kendraIndex": "string", "queryFilterString": "string", "role": "string" }, "lastUpdatedDate": number, "name": "string", "outputContexts": [ { "name": "string", "timeToLiveInSeconds": number, "turnsToLive": number } ], "parentIntentSignature": "string", "rejectionStatement": { "messages": [ { "content": "string", "contentType": "string", "groupNumber": number } ], "responseCard": "string" }, "sampleUtterances": [ "string" ], "slots": [ { "defaultValueSpec": { "defaultValueList": [ { "defaultValue": "string" } ] }, "description": "string", "name": "string", "obfuscationSetting": "string", "priority": number, "responseCard": "string", "sampleUtterances": [ "string" ], "slotConstraint": "string", "slotType": "string", "slotTypeVersion": "string", "valueElicitationPrompt": { "maxAttempts": number, "messages": [ { "content": "string", "contentType": "string", "groupNumber": number } ], "responseCard": "string" } } ], "version": "string" }

响应元素

如果此操作成功,则该服务将会发送回 HTTP 200 响应。

服务以 JSON 格式返回以下数据。

checksum

创建或更新意图的 $LATEST 版本的校验和。

类型:字符串

conclusionStatement

fulfillmentActivity 意图中指定的 Lambda 函数履行意图后,Amazon Lex 会将此语句传达给用户。

类型:Statement 对象

confirmationPrompt

如果在意图中已定义,则 Amazon Lex 会在履行意图之前提示用户确认意图。

类型:Prompt 对象

createdDate

意图的创建日期。

类型:时间戳

createVersion

True(如果创建了新版本的意图)。如果请求中未指定 createVersion 字段,则在响应中将 createVersion 字段设置为 false。

类型:布尔值

description

目的的描述。

类型:字符串

长度约束:最小长度为 0。最大长度为 200。

dialogCodeHook

如果在意图中已定义,Amazon Lex 会为每个用户输入调用 Lambda 函数。

类型:CodeHook 对象

followUpPrompt

如果已在意图中定义,则 Amazon Lex 会在履行意图后使用此提示来征求其他用户活动。

类型:FollowUpPrompt 对象

fulfillmentActivity

如果已在意图中定义,则在用户提供意图所需的所有信息后,Amazon Lex 会调用 Lambda 函数来履行意图。

类型:FulfillmentActivity 对象

inputContexts

InputContext 对象数组,列出了 Amazon Lex 在与用户的对话中选择意图时必须处于活动状态的上下文。

类型:InputContext 对象数组

数组成员:最少 0 个物品。最多 5 项。

kendraConfiguration

连接至 Amazon Kendra 索引并使用 AMAZON.KendraSearchIntent 意图所需的配置信息(如果有)。

类型:KendraConfiguration 对象

lastUpdatedDate

意图的更新日期。创建资源时,创建日期和上次更新日期相同。

类型:时间戳

name

意图的名称。

类型:字符串

长度约束:最小长度为 1。最大长度为 100。

模式:^([A-Za-z]_?)+$

outputContexts

OutputContext 对象数组,列出了履行意图时意图激活的上下文。

类型:OutputContext 对象数组

数组成员:最少 0 个物品。最多 10 个物品。

parentIntentSignature

内置意图唯一标识符,此意图建立在该意图的基础之上。

类型:字符串

rejectionStatement

当用户对 confirmationPrompt 中定义的问题回答“否”时,Amazon Lex 将使用此语句进行响应,以确认意图已被取消。

类型:Statement 对象

sampleUtterances

为意图配置的一组示例言语。

类型:字符串数组

数组成员:最少 0 项。最多 1500 项。

长度限制:长度下限为 1。最大长度为 200。

slots

为意图配置的一系列意图插槽。

类型:Slot 对象数组

数组成员:最少 0 个物品。最多 100 个项目。

version

意图的版本。对于新意图,版本始终是 $LATEST

类型:字符串

长度限制:长度下限为 1。长度上限为 64。

模式:\$LATEST|[0-9]+

错误

BadRequestException

请求格式不正确。例如,值无效或必填字段未填充。检查字段值,然后重试。

HTTP 状态代码:400

ConflictException

处理请求时出现冲突。请再次尝试您的请求。

HTTP 状态代码:409

InternalFailureException

出现内部 Amazon Lex 错误。请再次尝试您的请求。

HTTP 状态代码:500

LimitExceededException

请求超出了限制。请再次尝试您的请求。

HTTP 状态代码:429

PreconditionFailedException

您尝试更改的资源的校验和与请求中的校验和不匹配。检查资源的校验和并重试。

HTTP 状态代码:412

另请参阅

有关在特定语言的 AWS SDK 中使用此 API 的更多信息,请参阅以下内容: