PutSession - Amazon Lex V1

支援終止通知:在 2025 年 9 月 15 日, AWS 將停止對 Amazon Lex V1 的支援。2025 年 9 月 15 日之後,您將無法再存取 Amazon Lex V1 主控台或 Amazon Lex V1 資源。如果您使用的是 Amazon Lex V2,請改參閱 Amazon Lex V2 指南

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

PutSession

使用 Amazon Lex 機器人建立一個新的工作階段或修改現有的工作階段。使用此操作讓您的應用程式能夠設定機器人的狀態。

如需詳細資訊,請參閱管理工作階段

請求語法

POST /bot/botName/alias/botAlias/user/userId/session HTTP/1.1 Accept: accept Content-type: application/json { "activeContexts": [ { "name": "string", "parameters": { "string" : "string" }, "timeToLive": { "timeToLiveInSeconds": number, "turnsToLive": number } } ], "dialogAction": { "fulfillmentState": "string", "intentName": "string", "message": "string", "messageFormat": "string", "slots": { "string" : "string" }, "slotToElicit": "string", "type": "string" }, "recentIntentSummaryView": [ { "checkpointLabel": "string", "confirmationStatus": "string", "dialogActionType": "string", "fulfillmentState": "string", "intentName": "string", "slots": { "string" : "string" }, "slotToElicit": "string" } ], "sessionAttributes": { "string" : "string" } }

URI 請求參數

請求會使用下列 URI 參數。

accept

Amazon Lex 在回應中傳回的訊息可以是文字或語音,取決於此欄位的值。

  • 如果值為 text/plain; charset=utf-8,Amazon Lex 會在回應中傳回文字。

  • 如果值以 開頭audio/,Amazon Lex 會在回應中傳回語音。Amazon Lex 使用 Amazon Polly 在您指定的組態中產生語音。例如,如果您將 指定audio/mpeg為 值,Amazon Lex 會以 MPEG 格式傳回語音。

  • 如果值為 audio/pcm,則語音會以 audio/pcm 16 位元、小端格式傳回。

  • 以下是可接受的值:

    • audio/mpeg

    • audio/ogg

    • audio/pcm

    • audio/* (預設為 mpeg)

    • text/plain; charset=utf-8

botAlias

用於包含工作階段資料的機器人的別名。

必要:是

botName

包含工作階段資料的機器人名稱。

必要:是

userId

用戶端應用程式使用者的 ID。Amazon Lex 使用此項目來識別使用者與您的機器人的對話。

長度限制:長度下限為 2。長度上限為 100。

模式:[0-9a-zA-Z._:-]+

必要:是

請求主體

請求接受採用 JSON 格式的下列資料。

activeContexts

請求作用中的內容清單。上一個意圖達成時,或將內容包含在請求中,即可啟用內容。

如果您未指定內容清單,Amazon Lex 將使用工作階段的目前內容清單。如果您指定空清單,工作階段的所有內容都會清除。

類型:ActiveContext 物件陣列

陣列成員:項目數下限為 0。項目數上限為 20。

必要:否

dialogAction

設定機器人為了完成對話而應採取的下一個動作。

類型:DialogAction 物件

必要:否

recentIntentSummaryView

機器人最近意圖的摘要。您可以使用意圖摘要檢視來設定意圖上的檢查點標籤,並修改意圖的屬性。您也可以使用它來移除或新增意圖摘要物件至清單。

您修改或新增至清單的意圖,對於機器人來說必須合理。例如,意圖名稱必須對機器人有效。您必須為下列項目提供有效的值:

  • intentName

  • 槽名稱

  • slotToElict

如果您在PutSession請求中傳送 recentIntentSummaryView 參數,新摘要檢視的內容會取代舊的摘要檢視。例如,如果GetSession請求在摘要檢視中傳回三個意圖,而您在摘要檢視中PutSession呼叫一個意圖,則對 的下一個呼叫GetSession只會傳回一個意圖。

類型:IntentSummary 物件陣列

陣列成員:項目數下限為 0。最多 3 個項目。

必要:否

sessionAttributes

代表工作階段特定內容資訊的索引鍵/值對映射。它包含 Amazon Lex 和用戶端應用程式之間傳遞的應用程式資訊。

類型:字串到字串映射

必要:否

回應語法

HTTP/1.1 200 Content-Type: contentType x-amz-lex-intent-name: intentName x-amz-lex-slots: slots x-amz-lex-session-attributes: sessionAttributes x-amz-lex-message: message x-amz-lex-encoded-message: encodedMessage x-amz-lex-message-format: messageFormat x-amz-lex-dialog-state: dialogState x-amz-lex-slot-to-elicit: slotToElicit x-amz-lex-session-id: sessionId x-amz-lex-active-contexts: activeContexts audioStream

回應元素

如果動作成功,則服務傳回 HTTP 200 回應。

回應會傳回下列 HTTP 標頭。

activeContexts

工作階段的作用中內容清單。

contentType

請求中 Accept HTTP 標頭中指定的內容類型。

dialogState

  • ConfirmIntent - Amazon Lex 預期在履行意圖之前,會先收到「是」或「否」回應以確認意圖。

  • ElicitIntent - Amazon Lex 想要引出使用者的意圖。

  • ElicitSlot - Amazon Lex 預期目前意圖的槽值。

  • Failed - 傳達與使用者的對話失敗。這可能由於各種原因而發生,包括使用者未對來自 服務的提示提供適當的回應,或者 Lambda 函數無法滿足意圖。

  • Fulfilled - 傳達 Lambda 函數已成功滿足意圖。

  • ReadyForFulfillment - 傳達用戶端必須滿足意圖。

有效值:ElicitIntent | ConfirmIntent | ElicitSlot | Fulfilled | ReadyForFulfillment | Failed

encodedMessage

應該向使用者顯示的下一個訊息。

encodedMessage 欄位以 base-64 編碼。您必須先解碼 欄位,才能使用 值。

長度限制:長度下限為 1。長度上限為 1366。

intentName

目前意圖的名稱。

message

此標頭已棄用。

應該向使用者顯示的下一個訊息。

您只能在 de-DE、en-AU、en-GB、en-US、es-419、es-ES、es-US、fr-CA、fr-FR 和 it-IT 區域中使用此欄位。在所有其他地區中, message 欄位為 null。您應該改用 encodedMessage 欄位。

長度限制:長度下限為 1。長度上限為 1024。

messageFormat

回應訊息的格式。下列其中一值:

  • PlainText - 訊息包含純 UTF-8 文字。

  • CustomPayload - 訊息是用戶端的自訂格式。

  • SSML - 訊息包含語音輸出的文字格式。

  • Composite - 訊息包含逸出的 JSON 物件,其中包含訊息在建立意圖時指派給群組的一或多個訊息。

有效值:PlainText | CustomPayload | SSML | Composite

sessionAttributes

代表工作階段特定內容資訊的索引鍵/值對映射。

sessionId

工作階段的唯一識別碼。

slots

在對話期間,從使用者輸入偵測到的零或多個意圖槽映射 Amazon Lex。

Amazon Lex 會建立包含槽可能值的解析清單。傳回的值取決於建立或更新槽類型時valueSelectionStrategy選取的 。如果 valueSelectionStrategy 設定為 ORIGINAL_VALUE,則如果使用者值與槽值類似,則會傳回使用者提供的值。如果 valueSelectionStrategy 設定為 TOP_RESOLUTION Amazon Lex,則傳回解析清單中的第一個值,或者如果沒有解析清單,則為 null。如果您未指定 valueSelectionStrategy,則預設值為 ORIGINAL_VALUE

slotToElicit

如果 dialogStateElicitSlot,則 會傳回 Amazon Lex 為其引出值的槽名稱。

回應傳回以下內容作為 HTTP 主體。

audioStream

要傳達給使用者的音訊版本訊息。

錯誤

BadGatewayException

Amazon Lex 機器人仍在建置中,或其中一個相依服務 (Amazon Polly、AWS Lambda) 失敗並發生內部服務錯誤。

HTTP 狀態碼:502

BadRequestException

請求驗證失敗、內容中沒有可用的訊息,或機器人建置失敗、仍在進行中,或包含未建置的變更。

HTTP 狀態碼:400

ConflictException

兩個用戶端使用相同的 AWS 帳戶、Amazon Lex 機器人和使用者 ID。

HTTP 狀態碼:409

DependencyFailedException

其中一個相依性,例如 AWS Lambda 或 Amazon Polly,擲回例外狀況。例如

  • 如果 Amazon Lex 沒有足夠的許可來呼叫 Lambda 函數。

  • 如果 Lambda 函數需要超過 30 秒才能執行。

  • 如果履行 Lambda 函數傳回Delegate對話方塊動作,而不移除任何槽值。

HTTP 狀態碼:424

InternalFailureException

內部服務錯誤。重試 呼叫。

HTTP 狀態碼:500

LimitExceededException

超過限制。

HTTP 狀態碼:429

NotAcceptableException

請求中的接受標頭沒有有效的值。

HTTP 狀態碼:406

NotFoundException

找不到參考的資源 (例如 Amazon Lex 機器人或別名)。

HTTP 狀態碼:404

另請參閱

如需在其中一種語言特定 AWS SDKs中使用此 API 的詳細資訊,請參閱以下內容: