支援終止通知:在 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
-
如果
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 的詳細資訊,請參閱以下內容: