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 意圖 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 意圖 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。因此,主控台假設 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 主控台中查看機人識別碼。

  • name — 您在建立機器人時給予機器人的名稱。

  • localeId— 您用於機器人的語言環境的標識符。如需地區設定的清單,請參閱亞馬遜萊克斯 V2 支援的語言和語言環境

  • version — 處理請求的機器人版本。

  • aliasId— 當您建立機器人別名時,指派給機器人別名的識別碼。您可以在「別名」頁面上的 Amazon Lex V2 主控台中看到機器人別名 ID。如果您在清單中看不到別名 ID,請選擇右上角的齒輪圖示,然後開啟「別名 ID」。

  • aliasName— 您給機器人別名的名稱。

Amazon Lex V2 認為可能符合使用者話語的意圖相關資訊清單。每個項目都是一個結構,提供有關語音與意圖的比對資訊,格式如下:

{ "intent": { // see 意圖 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 } } }

結構內的欄位如下所示:

  • 意圖 — 包含意圖相關資訊的結構。如需結構的意圖詳細資訊,請參閱。

  • nluConfidence— 指出 Amazon Lex V2 對意圖符合使用者意圖的信心程度有多大的分數。

  • sentimentResponse— 回應情緒的分析,包含下列欄位:

    • 情緒 — 指出話語的情緒是POSITIVENEGATIVENEUTRAL、或。MIXED

    • sentimentScore— 將每個情緒對應至數字的結構,指出 Amazon Lex V2 對語音傳達該情緒的信心有多大。

  • interpretationSource— 表示插槽是否由 Amazon Lex 或 Amazon 基岩解決。

如果 Lambda 函數將dialogAction的設定sessionStateDelegate,則會出現此欄位,並顯示 Amazon Lex V2 針對交談的下一個步驟提出的建議。否則,下一個狀態取決於您從 Lambda 函數回應中傳回的設定。只有在下列兩個陳述式都成立時,才會出現此結構:

  1. invocationSource值是 DialogCodeHook

  2. type的預測dialogActionElicitSlot

您可以使用此信息runtimeHints在對話中的正確點添加。使用交談中的執行階段提示改善位置值的辨識如需詳細資訊,請參閱。 proposedNextState是包含下列欄位的結構:

的結構proposedNextState如下:

"proposedNextState": { "dialogAction": { "slotToElicit": string, "type": "Close | ConfirmIntent | Delegate | ElicitIntent | ElicitSlot" }, "intent": { // see 意圖 for details about the structure }, "prompt": { "attempt": string } }
  • dialogAction— 包含 Amazon Lex V2 提出的下一個步驟的相關資訊。結構中的字段如下:

    • slotToElicit— 按照 Amazon Lex V2 建議接下來引出的插槽。此欄位只有在是時才會type顯示ElicitSlot

    • 類型-Amazon Lex V2 提出的對話中的下一個步驟。可能的值如下:

      Delegate— Amazon Lex V2 確定下一個動作.

      ElicitIntent— 下一個動作是向使用者引出意圖。

      ElicitSlot— 下一個動作是向使用者引出插槽值。

      Close— 結束意圖履行程序,並指出不會有使用者的回應。

      ConfirmIntent— 下一個動作是詢問使用者插槽是否正確,並且意圖已準備好履行。

  • 意圖-機器人確定用戶嘗試履行的意圖。如需結構的意圖詳細資訊,請參閱。

  • prompt — 包含欄位的結構attempt,此結構對應至指定 Amazon Lex V2 提示使用者輸入下一個插槽的次數的值。可能的值是Initial針對第一次嘗試和Retry1Retry2Retry3Retry4、和後續嘗試Retry5的值。

包含客戶端在請求中發送的特定請求屬性的結構。使用請求屬性來傳遞不需要在整個工作階段內保留的資訊。若無請求屬性,則數值將為 null。如需詳細資訊,請參閱為您的 Lex V2 機器人設定要求屬性

使用者與您的 Amazon Lex V2 機器人之間交談的目前狀態。如需結構的工作階段狀態詳細資訊,請參閱。

Amazon Lex V2 認為可能符合使用者話語的轉錄清單。如需詳細資訊,請參閱使用語音轉錄可信度分數來改善與 Lex V2 機器人的對話。每個項目都是具有以下格式的對象,其中包含有關一種可能轉錄的信息:

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

這些欄位如下所述:

  • 轉錄 — Amazon Lex V2 認為可能與使用者音訊話語相符的轉錄。

  • transcriptionConfidence— 指出 Amazon Lex V2 對意圖符合使用者意圖的信心程度有多大的分數。

  • resolvedContext— 包含欄位的結構intent,可對應至語音相關意圖。

  • resolvedSlots-一種結構,其鍵是由語音解析的每個插槽的名稱。每個插槽名稱都映射到一個包含有關該插槽信息的結構。如需結構的詳細資訊,請參閱。