

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

# Amazon Lex V2 AWS Lambda 函数中的常见结构
<a name="lambda-common-structures"></a>

在 Lambda 响应中，有许多结构会反复出现。本节提供了有关这些常见结构的详细信息。

## 意图
<a name="lambda-intent"></a>

```
"intent": {
    "confirmationState": "Confirmed | Denied | None",
    "name": string,
    "slots": {
        // see 槽值 for details about the structure
    },
    "state": "Failed | Fulfilled | FulfillmentInProgress | InProgress | ReadyForFulfillment | Waiting",
    "kendraResponse": {
        // Only present when intent is KendraSearchIntent. For details, see
// https://docs.aws.amazon.com/kendra/latest/dg/API_Query.html#API_Query_ResponseSyntax       }
}
```

`intent` 字段映射到包含以下字段的对象：

### confirmationState
<a name="lambda-intent-confirmationstate"></a>

表示用户是否已确认意图的槽位，以及此意图是否已准备履行。以下是可能的值：

`Confirmed`：用户确认槽位值正确。

`Denied`：用户表示槽位值不正确。

`None`：用户尚未进入确认阶段。

### name
<a name="lambda-intent-name"></a>

意图的名称。

### slots
<a name="lambda-intent-slots"></a>

有关履行意图所需的槽位的信息。有关结构的详细信息，请参阅[槽值](#lambda-slot)。

### 状态
<a name="lambda-intent-state"></a>

表示意图的履行状态。以下是可能的值：

`Failed`：机器人未能履行意图。

`Fulfilled`：机器人已完成意图的履行。

`FulfillmentInProgress`：机器人正在履行意图。

`InProgress`：机器人正在引发履行意图所需的槽位值。

`ReadyForFulfillment`：机器人已引发意图的所有槽位值，并已准备好履行意图。

`Waiting`：机器人正在等待用户响应（仅限流式对话）。

### kendraResponse
<a name="lambda-intent-kendraresponse"></a>

包含有关 Kendra 搜索查询结果的信息。仅当意图为 `KendraSearchIntent` 时才显示此字段。有关更多信息，请参阅 [Kendra 的查询 API 调用中的响应语法](https://docs.aws.amazon.com/kendra/latest/dg/API_Query.html#API_Query_ResponseSyntax)。

## 槽值
<a name="lambda-slot"></a>

`slots` 字段存在于 `intent` 结构中，并映射到一个结构，该结构的键是用于此意图的槽位的名称。如果该槽位不是多值槽位（有关更多详细信息，请参阅 [使用一个槽位中的多个值](multi-valued-slots.md)），则会将其映射到具有以下格式的结构。请注意，`shape` 取值为 `Scalar`。

```
{
    slot name: {
        "shape": "Scalar",
        "value": {
            "originalValue": string,
            "interpretedValue": string,
            "resolvedValues": [
                string,
                ...
            ]
        }
    }
}
```

如果该槽位是多值槽位，则其映射到的对象中包含另一个名为 `values` 的字段，该字段映射到一个结构列表，其中每个结构都包含有关构成多值槽位的槽位信息。列表中每个对象的格式与常规槽位所映射到的对象的格式相匹配。请注意，`shape` 的取值为 `List`，但 `values` 下面组件槽位的 `shape` 的取值为 `Scalar`。

```
{
    slot name: {
    "shape": "List",
    "value": {
        "originalValue": string,
        "interpretedValue": string,
        "resolvedValues": [
            string,
            ...
        ]
    },
    "values": [
        {
            "shape": "Scalar",
            "value": {
                "originalValue": string,
                "interpretedValue": string,
                "resolvedValues": [
                    string,
                    ...
                ]
            }
        },
        {
            "shape": "Scalar",
            "value": {
                "originalValue": string,
                "interpretedValue": string,
                "resolvedValues": [
                    string,
                    ...
                ]
            }
        },
        ...
    ]
}
```

槽位对象中的字段如下所述：

### shape
<a name="lambda-slots-shape"></a>

槽位的形状。如果槽位中有多个值（有关更多详细信息，请参阅 [使用一个槽位中的多个值](multi-valued-slots.md)），则该值为 `List`，否则该值为 `Scalar`。

### 值
<a name="lambda-slots-value"></a>

一个对象，其中包含有关用户为插槽提供的值以及 Amazon Lex V2 的解释的信息，格式如下：

```
{
    "originalValue": string,
    "interpretedValue": string,
    "resolvedValues": [
        string,
        ...
    ]
}
```

这些字段如下所述：
+ **OriginalValue** — Amazon Lex V2 确定用户对插槽引发的响应中与槽位值相关的部分。
+ **Interpreted** Value — Amazon Lex V2 根据用户输入为该时段确定的值。
+ r@@ **esolved** Values — Amazon Lex V2 确定为用户输入的可能分辨率的值列表。

### 值
<a name="lambda-slots-values"></a>

包含有关构成多值槽位的槽位信息的对象的列表。每个对象的格式与普通槽位的格式相匹配，`shape` 和 `value` 字段如上所述。仅当槽位由多个值组成时，`values` 才会出现（有关更多详细信息，请参阅 [使用一个槽位中的多个值](multi-valued-slots.md)）。以下 JSON 对象显示了两个组件槽位：

```
"values": [
    {
        "shape": "Scalar",
        "value": {
            "originalValue": string,
            "interpretedValue": string,
            "resolvedValues": [
                string,
                ...
            ]
        }
    },
    {
        "shape": "Scalar",
        "value": {
            "originalValue": string,
            "interpretedValue": string,
            "resolvedValues": [
                string,
                ...
            ]
        }
    },
    ...
]
```

## 会话状态
<a name="lambda-session-state"></a>

`sessionState` 字段映射到一个对象，该对象包含与用户对话的状态相关的信息。该对象中实际显示的字段取决于对话操作的类型。有关 Lambda 响应中的必填字段，请参阅 [响应中的必填字段](lambda-response-format.md#lambda-response-required)。`sessionState` 对象的格式如下所示：

```
"sessionState": {
    "activeContexts": [
        {
            "name": string,
            "contextAttributes": {
                string: string
            },
            "timeToLive": {
                "timeToLiveInSeconds": number,
                "turnsToLive": number
            }
        },
        ...
    ],
    "sessionAttributes": {
        string: string,
        ...
    },
    "runtimeHints": {
        "slotHints": {
            intent name: {
                slot name: {
                    "runtimeHintValues": [
                        {
                            "phrase": string
                        },
                        ...
                    ]
                },
                ...
            },
            ...
        }
    },
    "dialogAction": {
        "slotElicitationStyle": "Default | SpellByLetter | SpellByWord",
        "slotToElicit": string,
        "type": "Close | ConfirmIntent | Delegate | ElicitIntent | ElicitSlot"
    },
    "intent": {
        // see 意图 for details about the structure
    },
    "originatingRequestId": string
}
```

这些字段如下所述：

### activeContexts
<a name="lambda-active-contexts"></a>

包含用户在会话中使用的上下文相关信息的对象的列表。通过上下文来促进和控制意图识别。有关上下文的更多信息，请参阅 [设置 Lex V2 机器人的意图上下文](context-mgmt-active-context.md)。每个对象的格式如下：

```
{
    "name": string,
    "contextAttributes": {
        string: string
    },
    "timeToLive": {
        "timeToLiveInSeconds": number,
        "turnsToLive": number
    }
}
```

这些字段如下所述：
+ **name**：上下文的名称。
+ **contextAttributes**：一个对象，其中包含上下文属性名称及其映射到的值。
+ **timeToLive**— 一个对象，用于指定上下文保持活动状态多长时间。此对象可以包含以下一个或两个字段：
  + **timeToLiveInSeconds**— 上下文保持活动状态的秒数。
  + **turnsToLive**— 上下文保持活动状态的回合数。

### sessionAttributes
<a name="lambda-session-attributes"></a>

表示会话特定上下文信息的 key/value 对映射。有关更多信息，请参阅 [设置 Lex V2 机器人的会话属性](context-mgmt-session-attribs.md)。对象的格式如下：

```
{
    string: string,
    ...
}
```

### runtimeHints
<a name="lambda-runtime-hints"></a>

为客户可能在槽位中使用的短语提供提示，以提高音频识别能力。与发音相似的单词相比，您在提示中提供的值可以增强对这些值的音频识别。`runtimeHints` 对象的格式如下所示：

```
{
    "slotHints": {
        intent name: {
            slot name: {
                "runtimeHintValues": [
                    {
                        "phrase": string
                    },
                    ...
                ]
            },
            ...
        },
        ...
    }
}
```

`slotHints` 字段映射到一个对象，该对象中的字段是机器人中意图的名称。每个意图名称都映射到一个对象，该对象的字段是对应意图的槽位名称。每个槽位名称都映射到一个带有单个字段 `runtimeHintValues` 的结构，即对象列表。每个对象都包含一个映射到提示的 `phrase` 字段。

### dialogAction
<a name="lambda-dialog-action"></a>

确定 Amazon Lex V2 要采取的下一步操作。对象的格式如下所示：

```
{
    "slotElicitationStyle": "Default | SpellByLetter | SpellByWord",
    "slotToElicit": string,
    "type": "Close | ConfirmIntent | Delegate | ElicitIntent | ElicitSlot"
}
```

这些字段如下所述：
+  **slotElicitationStyle**— 确定 Amazon Lex V2 如何解释来自用户的音频输入（如果是）`type`。`dialogAction` `ElicitSlot`有关更多信息，请参阅 [在对话期间使用拼写样式捕获槽位值](spelling-styles.md)。以下是可能的值：

  `Default`：Amazon Lex V2 以默认方式解释音频输入以履行槽位。

  `SpellByLetter`：Amazon Lex V2 监听用户对槽位值的拼写。

  `SpellByWord`：Amazon Lex V2 根据与每个字母相关的单词（例如，“a as in apple”）来监听用户对槽位值的拼写。
+  **slotToElicit**— 如果是 of，则定义要从用户那里获得`type`的`dialogAction`插槽。`ElicitSlot`
+ **type**：定义机器人应执行的操作。以下是可能的值：

  `Delegate`：让 Amazon Lex V2 决定下一步操作。

  `ElicitIntent`：提示客户表达意图。

  `ConfirmIntent`：确认客户的槽位值以及意图是否准备履行。

  `ElicitSlot`：提示客户为意图提供槽位值。

  `Close`：结束意图履行流程。

### 意图
<a name="lambda-sessionstate-intent"></a>

有关 `intent` 字段的结构，请参阅 [意图](#lambda-intent)。

### originatingRequestId
<a name="lambda-originating-request-id"></a>

请求的唯一标识符。该字段对于 Lambda 响应是可选字段。