支援終止通知: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
-
請求中
AcceptHTTP 標頭中指定的內容類型。 - 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_RESOLUTIONAmazon Lex,則傳回解析清單中的第一個值,如果沒有解析清單,則為 null。如果您未指定valueSelectionStrategy,則預設值為ORIGINAL_VALUE。 - slotToElicit
-
如果
dialogState是ElicitSlot,則 會傳回 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 的詳細資訊,請參閱下列內容: