

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon Lex V2 の AWS Lambda関数の一般的な構造
<a name="lambda-common-structures"></a>

Lambda レスポンスには、繰り返し発生する構造が数多くあります。これらの一般的な構造について詳しくは、このセクションで説明しています。

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

```
"intent": {
    "confirmationState": "Confirmed | Denied | None",
    "name": string,
    "slots": {
        // see Slots 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` — ユーザーはまだ確認ステージに達していません。

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

インテントの名前。

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

インテントを達成するために必要なスロットに関する情報。構造の詳細については、「[Slots](#lambda-slot)」を参照してください。

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

インテントのフルフィルメントステータスを示します。以下の値を指定できます。

`Failed` — ボットはインテントを達成できませんでした。

`Fulfilled` — ボットはインテントのフルフィルメントを完了しました。

`FulfillmentInProgress` — ボットはインテントを達成している最中です。

`InProgress` — ボットは、インテントを達成するために必要なスロット値を誘発している最中です。

`ReadyForFulfillment` — ボットはインテントのすべてのスロット値を誘発し、インテントを実行する準備ができています。

`Waiting` — ボットはユーザーからの応答を待っています (会話のストリーミングに限定される)。

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

Kendra 検索クエリの結果に関する情報が含まれます。このフィールドは、インテントが `KendraSearchIntent` の場合のみ表示されます。詳細については、「[Kendra の Query API 呼び出しの応答構文](https://docs.aws.amazon.com/kendra/latest/dg/API_Query.html#API_Query_ResponseSyntax)」を参照してください。

## Slots
<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>

スロットの形状。この値は、スロットに複数の値がある場合は `List` で (詳細については「[スロットで複数の値を使用する](multi-valued-slots.md)」を参照)、そうでない場合は `Scalar` です。

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

ユーザーがスロットと Amazon Lex V2 の解釈に提供した値に関する情報を次の形式で含むオブジェクト。

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

各フィールドについて以下に説明します。
+ **originalValue** – Amazon Lex V2 がスロット値に関連していると判断したスロット誘発に対するユーザーのレスポンスの一部。
+ **interpretedValue** – ユーザー入力を考慮して Amazon Lex V2 がスロットに対して決定する値。
+ **resolvedValues** – Amazon Lex V2 がユーザー入力で解決できると判断した値のリスト。

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

複数値スロットを構成するスロットに関する情報を含むオブジェクトのリスト。各オブジェクトの形式は、上記で説明した `shape` および `value` フィールドを含む通常のスロットの形式と一致します。`values` は、スロットが複数の値で構成されている場合にのみ表示されます (詳細は「[スロットで複数の値を使用する](multi-valued-slots.md)」を参照)。次の JSON オブジェクトは 2 つのコンポーネントスロットを示しています。

```
"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-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 Intent 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>

セッション固有のコンテキスト情報を表すキーバリューのペアのマップ。詳細については、「[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` フィールドは、ボットのインテントの名前をフィールドとするオブジェクトにマップされます。各インテント名は、そのインテントのスロットの名前をフィールドとするオブジェクトにマップされます。各スロット名は、オブジェクトのリストである 1 つのフィールド `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** — `dialogAction` の `type` が `ElicitSlot` である場合、ユーザーからの音声入力を Amazon Lex V2 がどのように解釈するかを決定します。詳細については、「[会話中のスペルスタイルによるスロット値のキャプチャ](spelling-styles.md)」を参照してください。以下の値を指定できます。

  `Default` — Amazon Lex V2 は、音声入力をデフォルトの方法で解釈してスロットに対応します。

  `SpellByLetter` — Amazon Lex V2 は、ユーザーによるスロット値のスペルをリッスンします。

  `SpellByWord` — Amazon Lex V2 は、各文字に関連する単語 (「a as in apple」など) を使用して、ユーザーによるスロット値のスペルをリッスンします。
+  **slotToElicit** — `dialogAction` の `type` が `ElicitSlot` の場合に、ユーザーから誘発するスロットを定義します。
+ **type** — ボットが実行すべきアクションを定義します。以下の値を指定できます。

  `Delegate` - Amazon Lex V2 が次のアクションを決定できるようにします。

  `ElicitIntent` — 顧客にインテントを表現するよう促します。

  `ConfirmIntent` - 顧客のスロット値と、そのインテントフルフィルメントの準備ができているかどうかを確認します。

  `ElicitSlot` — インテントのスロット値を入力するよう顧客に促します。

  `Close` — インテントのフルフィルメントプロセスを終了します。

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

`intent` フィールドの構造については、「[Intent](#lambda-intent)」を参照してください。

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

リクエストの一意の識別子。Lambda レスポンスの場合、このフィールドはオプションです。