AWS Lambda Lex V2 の入力イベント形式 - Amazon Lex

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

AWS Lambda Lex V2 の入力イベント形式

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 スロット for details about the structure }, ... } }, ... ] }

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

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

注記

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

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

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

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

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

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

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

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

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

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

ユーザーからの入力の文字起こし。

  • テキスト入力の場合、これはユーザーが入力したテキストです。DTMF 入力の場合、これはユーザーが入力するキーです。

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

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

リクエストを処理したボットに関する情報。以下のフィールドで構成されます。

  • id - その作成時にボットに割り当てた識別子。ボットの Amazon Lex V2 コンソールでボット ID は、設定 ページを参照してください。

  • Name - ジョブを作成したときにジョブに指定する名前。

  • localeId – ボットに使用したロケールの識別子。ロケールのリストについては、「Amazon Lex V2 でサポートされている言語とロケール」を参照してください。

  • version - リクエストを処理したボットのバージョン。

  • aliasId – ボットエイリアスの作成時にボットエイリアスに割り当てられる識別子。ボットのエイリアス ID は、Amazon Lex V2 コンソールの エイリアス ページで参照してください。リストにエイリアス ID が表示されない場合は、エイリアス ID で右上の歯車アイコンを選択してオンにします。

  • aliasName – ボットエイリアスに付けた名前。

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」を参照してください。

  • nluConfidence – インテントがユーザーのインテントと一致するという Amazon Lex V2 の信頼度を示すスコア。

  • sentimentResponse – 以下のフィールドを含む、レスポンスの感情の分析。

    • sentiment — 発話のセンチメントが POSITIVENEGATIVENEUTRAL、または MIXED であるかどうかを示します。

    • sentimentScore – 各センチメントを数値にマッピングする構造。これは、発話がそのセンチメントを伝えることを Amazon Lex V2 がどの程度信頼しているかを示します。

  • interpretationSource – スロットが Amazon Lex または Amazon Bedrock によって解決されるかどうかを示します。

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

  1. invocationSource 値は DialogCodeHook である

  2. 予測された dialogActiontypeElicitSlot です。

この情報を使用して、会話の適切な時点で runtimeHints を追加できます。詳細については、「会話のランタイムヒントによるスロット値の認識の向上」を参照してください。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 が提案する次のステップに関する情報が含まれています。 V2 構造内のフィールドは以下のとおりです。

    • slotToElicit — Amazon Lex V2 によって提案された、次に引き出すスロット。このフィールドは、typeElicitSlot の場合のみ表示されます。

    • type — Amazon Lex V2 が提案している会話の次のステップです。以下の値を指定できます。

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

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

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

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

      ConfirmIntent — 次のアクションは、スロットが正しく、インテントのフルフィルメントの準備ができているかどうかをユーザーに尋ねることです。

  • intent — ユーザーが達成しようとしているとボットが判断したインテント。構造の詳細については、「Intent」を参照してください。

  • prompt — Amazon Lex V2 がユーザーに次のスロットの入力を促した回数を指定する値に対応するフィールド attempt を含む構造。指定できる値は、1 回目の試行に対する Initial、それ以降の試行に対する Retry1Retry2Retry3Retry4 および Retry5 です。

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

ユーザーと Amazon Lex V2 ボット間の会話の現在の状態。構造の詳細については、「セッション状態」を参照してください。

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

{ "transcription": string, "transcriptionConfidence": number, "resolvedContext": { "intent": string }, "resolvedSlots": { slot name: { // see スロット for details about the structure }, ... } }

各フィールドについて以下に説明します。

  • transcription – Amazon Lex V2 がユーザーの音声発話と一致する可能性があると考える文字起こし。

  • transcriptionConfidence – Amazon Lex V2 がインテントがユーザーのインテントと一致するとどの程度確信しているかを示すスコア。 V2

  • resolvedContext – 発話が関係するインテントにマッピングされるintentフィールド を含む構造。

  • resolvedSlots – 発話によって解決される各スロットの名前をキーとする構造。各スロット名は、そのスロットに関する情報を含む構造にマップされます。構造の詳細については、「スロット」を参照してください。