

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

# AWS LambdaLex V2 の入力イベント形式
<a name="lambda-input-format"></a>

Lambda 関数を Amazon Lex V2 ボットに統合する最初のステップは、Amazon Lex V2 イベントのフィールドを理解し、これらのフィールドからスクリプトを書くときに使用する情報を決定することです。次の JSON オブジェクトに、Lambda 関数に渡される一般的な形式の Amazon Lex V2 イベントを示します。

**注記**  
入力形式は対応する `messageVersion` への変更なしに変わる場合があります。新しいフィールドがあっても、コードがエラーをスローすることはありません。

```
{
    "messageVersion": "1.0",
    "invocationSource": "DialogCodeHook | FulfillmentCodeHook",
    "inputMode": "DTMF | Speech | Text",
    "responseContentType": "audio/mpeg | audio/ogg | audio/pcm | text/plain; charset=utf-8",
    "sessionId": string,
    "inputTranscript": string,
    "invocationLabel": string,
    "bot": {
        "id": string,
        "name": string,
        "localeId": string,
        "version": string,
        "aliasId": string,
        "aliasName": string
    },
    "interpretations": [
        {
            "interpretationSource": "Bedrock | Lex",
            "intent": {
                // see Intent for details about the structure
            },
            "nluConfidence": number,
            "sentimentResponse": {
                "sentiment": "MIXED | NEGATIVE | NEUTRAL | POSITIVE",
                "sentimentScore": {
                    "mixed": number,
                    "negative": number,
                    "neutral": number,
                    "positive": number
                }
            }
        },
        ...
    ],
    "proposedNextState": {
        "dialogAction": {
            "slotToElicit": string,
            "type": "Close | ConfirmIntent | Delegate | ElicitIntent | ElicitSlot"
        },
        "intent": {
            // see Intent for details about the structure
        },
        "prompt": {
            "attempt": string 
        }
    },
    "requestAttributes": {
        string: string,
        ...
    },
    "sessionState": {
        // see セッション状態 for details about the structure
    },
    "transcriptions": [
        {
            "transcription": string,
            "transcriptionConfidence": number,
            "resolvedContext": {
                "intent": string
            },
            "resolvedSlots": {
                slot name: {
                    // see Slots for details about the structure
                },
                ...
            }
        },
        ...
    ]
}
```

入力イベントの各フィールドは次の通りです。

## messageVersion
<a name="lambda-input-messageversion"></a>

Lambda 関数に渡されるイベントデータの形式と Lambda 関数から返す必要があるレスポンスの形式を識別するメッセージのバージョン。

**注記**  
インテントを定義するときに、この値を設定します。現在の実装で Amazon Lex V2 がサポートしているのは、メッセージバージョンのみです。そのため、コンソールではデフォルト値の 1.0 が想定され、メッセージのバージョンは表示されません。

## invocationSource
<a name="lambda-input-invocationsource"></a>

Lambda 関数を呼び出したコードフック。以下の値を指定できます。

`DialogCodeHook` — Amazon Lex V2 は、ユーザーからの入力後に Lambda 関数を呼び出します。

`FulfillmentCodeHook` — Amazon Lex V2 は、必要なスロットがすべて満たされ、インテントフルフィルメントの準備ができた後に Lambda 関数を呼び出します。

## inputMode
<a name="lambda-input-inputmode"></a>

ユーザー発話のモード。指定できる値は次のとおりです。

`DTMF` — ユーザーがタッチトーンキーパッド (デュアルトーンマルチ周波数) を使用して発話を入力します。

`Speech` — ユーザーが発話を行いました。

`Text` — ユーザーが発話を入力しました。

## responseContentType
<a name="lambda-input-responsecontenttype"></a>

ユーザーに対するボットの応答の仕組み。`text/plain; charset=utf-8` は、最後の発話が書き込まれたことを示し、`audio` で始まる値は最後の発話が行われたことを示します。

## sessionId
<a name="lambda-input-sessionid"></a>

会話に使用される英数字のセッション識別子。

## inputTranscript
<a name="lambda-input-inputtranscript"></a>

ユーザーからの入力の文字起こし。
+ テキスト入力の場合、これはユーザーが入力したテキストです。DTMF 入力の場合、これはユーザーが入力するキーです。
+ 音声入力の場合は、インテントを呼び出すか、スロットを埋めるために、Amazon Lex V2 がユーザーの発話を変換したテキストです。

## invocationLabel
<a name="lambda-input-invocationlabel"></a>

Lambda 関数を呼び出した応答を示す値。初期応答、スロット、確認応答に呼び出しラベルを設定できます。

## ボット
<a name="lambda-input-bot"></a>

リクエストを処理したボットに関する情報。以下のフィールドで構成されます。
+ **id** - その作成時にボットに割り当てた識別子。ボットの Amazon Lex V2 コンソールでボット ID は、**設定** ページを参照してください。
+ **Name** - ジョブを作成したときにジョブに指定する名前。
+ **localeId** — ボットに使用したロケールの識別子。ロケールのリストについては、「[Amazon Lex V2 でサポートされている言語とロケール](how-languages.md)」を参照してください。
+ **version** - リクエストを処理したボットのバージョン。
+ **aliasId** — ボットのエイリアスの作成時に割り当てた識別子。ボットのエイリアス ID は、Amazon Lex V2 コンソールの **エイリアス** ページで参照してください。リストにエイリアス ID が表示されない場合は、**エイリアス ID** で右上の歯車アイコンを選択してオンにします。
+ **aliasName** — ボットエイリアスに付けた名前。

## 解釈
<a name="lambda-input-interpretations"></a>

Amazon Lex V2 がユーザーの発話と一致する可能性があると考えるインテントに関する情報のリスト。各項目は、発話とインテントの一致に関する情報を次の形式で提供する構造です。

```
{
    "intent": {
        // see Intent for details about the structure
    },
    "interpretationSource": "Bedrock | Lex",
    "nluConfidence": number,
    "sentimentResponse": {
        "sentiment": "MIXED | NEGATIVE | NEUTRAL | POSITIVE",
        "sentimentScore": {
            "mixed": number,
            "negative": number,
            "neutral": number,
            "positive": number
        }
    }
}
```

構造内のフィールドは以下のとおりです。
+ **intent** – インテントに関する情報が含まれる構造。構造の詳細については、「[Intent](lambda-common-structures.md#lambda-intent)」を参照してください。
+ **nluConfidence** – インテントがユーザーのインテントに一致しているという Amazon Lex V2 の信頼度を示すスコア。
+ **sentimentResponse** — 応答のセンチメントの分析。以下のフィールドが含まれます。
  + **sentiment** — 発話のセンチメントが `POSITIVE`、`NEGATIVE`、`NEUTRAL`、または `MIXED` であるかどうかを示します。
  + **sentimentScore** — 各センチメントを数値にマッピングした構造で、Amazon Lex V2 が発話によるセンチメントの伝達に関する信頼度を示します。
+ **interpretationSource** – スロットが Amazon Lex V2 または Amazon Bedrock によって解決されるかどうかを示します。

## proposedNextState
<a name="lambda-input-proposednextstate"></a>

Lambda 関数が `sessionState` の `dialogAction` を `Delegate` に設定するとこのフィールドが表示され、会話の次のステップに関する Amazon Lex V2 の提案を確認できます。それ以外の場合、次の状態は、Lambda 関数からの応答で返される設定によって異なります。この構造は、次の両方に該当する場合のみ存在します。

1. `invocationSource` 値は `DialogCodeHook` である

1. 予測された `dialogAction` の `type` は `ElicitSlot` です。

この情報を使用して、会話の適切な時点で `runtimeHints` を追加できます。詳細については、「[会話内のランタイムヒントによるスロット値の認識の向上](using-hints.md)」を参照してください。`proposedNextState` は、次のフィールドを含む構造です。

`proposedNextState` の構造は以下のとおりです。

```
"proposedNextState": {
    "dialogAction": {
        "slotToElicit": string,
        "type": "Close | ConfirmIntent | Delegate | ElicitIntent | ElicitSlot"
    },
    "intent": {
        // see Intent for details about the structure
    },
    "prompt": {
        "attempt": string 
    }
}
```
+ **dialogAction** — Amazon Lex V2 が提案する次のステップに関する情報が含まれます。構造内のフィールドは以下のとおりです。
  + **slotToElicit** — Amazon Lex V2で提案された通り、次に誘発するスロットです。このフィールドは、`type` が `ElicitSlot` の場合のみ表示されます。
  + **type** — Amazon Lex V2 が提案している会話の次のステップです。以下の値を指定できます。

    `Delegate` - Amazon Lex V2 が次のアクションを決定します。

    `ElicitIntent` - 次のアクションは、ユーザーからインテントを誘発することです。

    `ElicitSlot` - 次のアクションは、ユーザーからスロット値を誘発することです。

    `Close` — インテントフルフィルメントのプロセスを終了し、ユーザーからの応答が返されないことを示します。

    `ConfirmIntent` — 次のアクションは、スロットが正しく、インテントのフルフィルメントの準備ができているかどうかをユーザーに尋ねることです。
+ **intent** — ユーザーが達成しようとしているとボットが判断したインテント。構造の詳細については、「[Intent](lambda-common-structures.md#lambda-intent)」を参照してください。
+ **prompt** — Amazon Lex V2 がユーザーに次のスロットの入力を促した回数を指定する値に対応するフィールド `attempt` を含む構造。指定できる値は、1 回目の試行に対する `Initial`、それ以降の試行に対する `Retry1`、`Retry2`、`Retry3`、`Retry4` および `Retry5` です。

## requestAttributes
<a name="lambda-input-requestattributes"></a>

クライアントがリクエストで送信するリクエスト固有の属性を含む構造。セッション全体を通しては保持する必要がない情報は、リクエスト属性を使用して渡します。リクエスト属性がない場合、値は null になります。詳細については、「[Lex V2 ボットのリクエスト属性の設定](context-mgmt-request-attribs.md)」を参照してください。

## sessionState
<a name="lambda-input-sessionstate"></a>

ユーザーと Amazon Lex V2 ボット間の会話の現在の状態。構造の詳細については、「[セッション状態](lambda-common-structures.md#lambda-session-state)」を参照してください。

## 文字起こし
<a name="lambda-input-transcriptions"></a>

Amazon Lex V2 がユーザーの発話と一致する可能性があると考える文字起こしのリスト。詳細については、「[音声文字起こしの信頼度スコアを使用した Lex V2 ボットとの会話の改善](using-transcript-confidence-scores.md)」を参照してください。各項目は次の形式のオブジェクトで、1 つの可能な文字起こしに関する情報が含まれています。

```
{
    "transcription": string,
    "transcriptionConfidence": number,
    "resolvedContext": {
        "intent": string
    },
    "resolvedSlots": {
        slot name: {
            // see Slots for details about the structure
        },
        ...
    }
}
```

各フィールドについて以下に説明します。
+ **transcription** – Amazon Lex V2 がユーザーの音声発話と一致する可能性があると考える文字起こし。
+ **transcriptionConfidence** – インテントがユーザーのインテントに一致しているという Amazon Lex V2 の信頼度を示すスコア。
+ **resolvedContext** — フィールド `intent` を含む構造で、発話に関係するインテントと一致します。
+ **resolvedSlots** — 発話によって解決される各スロットの名前をキーとする構造。各スロット名は、そのスロットに関する情報を含む構造にマップされます。構造の詳細については、「[Slots](lambda-common-structures.md#lambda-slot)」を参照してください。