

支援終止通知：2025 年 9 月 15 日， AWS 將停止對 Amazon Lex V1 的支援。2025 年 9 月 15 日之後，您將無法再存取 Amazon Lex V1 主控台或 Amazon Lex V1 資源。如果您使用的是 Amazon Lex V2，請改參閱 [Amazon Lex V2 指南](https://docs.aws.amazon.com/lexv2/latest/dg/what-is.html)。

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

# PutSession
<a name="API_runtime_PutSession"></a>

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

如需詳細資訊，請參閱[管理工作階段](https://docs.aws.amazon.com/lex/latest/dg/how-session-api.html)。

## 請求語法
<a name="API_runtime_PutSession_RequestSyntax"></a>

```
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 請求參數
<a name="API_runtime_PutSession_RequestParameters"></a>

請求會使用下列 URI 參數。

 ** [accept](#API_runtime_PutSession_RequestSyntax) **   <a name="lex-runtime_PutSession-request-accept"></a>
根據此欄位的值，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](#API_runtime_PutSession_RequestSyntax) **   <a name="lex-runtime_PutSession-request-uri-botAlias"></a>
用於包含工作階段資料的機器人的別名。  
必要：是

 ** [botName](#API_runtime_PutSession_RequestSyntax) **   <a name="lex-runtime_PutSession-request-uri-botName"></a>
包含工作階段資料的機器人名稱。  
必要：是

 ** [userId](#API_runtime_PutSession_RequestSyntax) **   <a name="lex-runtime_PutSession-request-uri-userId"></a>
用戶端應用程式使用者的 ID。Amazon Lex 使用此項目來識別使用者與您的機器人的對話。  
長度限制：長度下限為 2。長度上限為 100。  
模式：`[0-9a-zA-Z._:-]+`  
必要：是

## 請求主體
<a name="API_runtime_PutSession_RequestBody"></a>

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

 ** [activeContexts](#API_runtime_PutSession_RequestSyntax) **   <a name="lex-runtime_PutSession-request-activeContexts"></a>
用於請求的作用中內容清單。在滿足先前的意圖時，或藉由在請求中包含內容，即可啟用內容。  
如果您未指定內容清單，Amazon Lex 將使用工作階段的目前內容清單。如果您指定空白清單，工作階段的所有內容都會清除。  
類型：[ActiveContext](API_runtime_ActiveContext.md) 物件陣列  
陣列成員：項目數下限為 0。項目數上限為 20。  
必要：否

 ** [dialogAction](#API_runtime_PutSession_RequestSyntax) **   <a name="lex-runtime_PutSession-request-dialogAction"></a>
設定機器人為了完成對話而應採取的下一個動作。  
類型：[DialogAction](API_runtime_DialogAction.md) 物件  
必要：否

 ** [recentIntentSummaryView](#API_runtime_PutSession_RequestSyntax) **   <a name="lex-runtime_PutSession-request-recentIntentSummaryView"></a>
機器人最近意圖的摘要。您可以使用意圖摘要檢視，在意圖上設定檢查點標籤，並修改意圖的屬性。您也可以使用它來移除或新增意圖摘要物件至清單。  
您修改或新增至清單的意圖必須對機器人有意義。例如，意圖名稱必須對機器人有效。您必須為下列項目提供有效的值：  
+  `intentName` 
+ 槽名稱
+  `slotToElict` 
如果您在`PutSession`請求中傳送 `recentIntentSummaryView` 參數，新摘要檢視的內容會取代舊的摘要檢視。例如，如果`GetSession`請求在摘要檢視中傳回三個意圖，而您在摘要檢視中`PutSession`呼叫一個意圖，則對 的下一個呼叫`GetSession`只會傳回一個意圖。  
類型：[IntentSummary](API_runtime_IntentSummary.md) 物件陣列  
陣列成員：項目數下限為 0。最多 3 個項目。  
必要：否

 ** [sessionAttributes](#API_runtime_PutSession_RequestSyntax) **   <a name="lex-runtime_PutSession-request-sessionAttributes"></a>
代表工作階段特定內容資訊的鍵/值對映射。它包含 Amazon Lex 和用戶端應用程式之間傳遞的應用程式資訊。  
類型：字串到字串映射  
必要：否

## 回應語法
<a name="API_runtime_PutSession_ResponseSyntax"></a>

```
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
```

## 回應元素
<a name="API_runtime_PutSession_ResponseElements"></a>

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

回應會傳回下列 HTTP 標頭。

 ** [activeContexts](#API_runtime_PutSession_ResponseSyntax) **   <a name="lex-runtime_PutSession-response-activeContexts"></a>
工作階段的作用中內容清單。

 ** [contentType](#API_runtime_PutSession_ResponseSyntax) **   <a name="lex-runtime_PutSession-response-contentType"></a>
請求中 `Accept` HTTP 標頭中指定的內容類型。

 ** [dialogState](#API_runtime_PutSession_ResponseSyntax) **   <a name="lex-runtime_PutSession-response-dialogState"></a>
  
+  `ConfirmIntent` - Amazon Lex 預期在滿足意圖之前有「是」或「否」回應以確認意圖。
+  `ElicitIntent` - Amazon Lex 想要引出使用者的意圖。
+  `ElicitSlot` - Amazon Lex 預期目前意圖的槽值。
+  `Failed` - 傳達與使用者的對話失敗。這可能由於各種原因而發生，包括使用者未對來自 服務的提示提供適當的回應，或者 Lambda 函數無法滿足意圖。
+  `Fulfilled` - 傳達 Lambda 函數已成功滿足意圖。
+  `ReadyForFulfillment` - 傳達用戶端必須滿足意圖。
有效值:`ElicitIntent | ConfirmIntent | ElicitSlot | Fulfilled | ReadyForFulfillment | Failed` 

 ** [encodedMessage](#API_runtime_PutSession_ResponseSyntax) **   <a name="lex-runtime_PutSession-response-encodedMessage"></a>
應該向使用者顯示的下一個訊息。  
`encodedMessage` 欄位以 base-64 編碼。您必須先解碼 欄位，才能使用 值。  
長度限制：長度下限為 1。長度上限為 1366。

 ** [intentName](#API_runtime_PutSession_ResponseSyntax) **   <a name="lex-runtime_PutSession-response-intentName"></a>
目前意圖的名稱。

 ** [message](#API_runtime_PutSession_ResponseSyntax) **   <a name="lex-runtime_PutSession-response-message"></a>
 *此標頭已棄用。*  
應該向使用者顯示的下一個訊息。  
您只能在 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](#API_runtime_PutSession_ResponseSyntax) **   <a name="lex-runtime_PutSession-response-messageFormat"></a>
回應訊息的格式。下列其中一值：  
+  `PlainText` - 訊息包含純 UTF-8 文字。
+  `CustomPayload` - 訊息是用戶端的自訂格式。
+  `SSML` - 訊息包含語音輸出的文字格式。
+  `Composite` - 訊息包含逸出的 JSON 物件，其中包含訊息在建立意圖時指派給群組的一或多個訊息。
有效值:`PlainText | CustomPayload | SSML | Composite` 

 ** [sessionAttributes](#API_runtime_PutSession_ResponseSyntax) **   <a name="lex-runtime_PutSession-response-sessionAttributes"></a>
代表工作階段特定內容資訊的鍵/值對映射。

 ** [sessionId](#API_runtime_PutSession_ResponseSyntax) **   <a name="lex-runtime_PutSession-response-sessionId"></a>
工作階段的唯一識別碼。

 ** [slots](#API_runtime_PutSession_ResponseSyntax) **   <a name="lex-runtime_PutSession-response-slots"></a>
Amazon Lex 在對話期間從使用者輸入偵測到的零或多個意圖槽映射。  
Amazon Lex 會建立解析度清單，其中包含槽的可能值。傳回的值取決於建立或更新槽類型時`valueSelectionStrategy`選取的 。如果 `valueSelectionStrategy` 設定為 `ORIGINAL_VALUE`，則會傳回使用者提供的值，如果使用者值與槽值類似。如果 `valueSelectionStrategy` 設定為 `TOP_RESOLUTION` Amazon Lex，則會傳回解析清單中的第一個值，或者如果沒有解析清單，則為 null。如果您未指定 `valueSelectionStrategy`，則預設值為 `ORIGINAL_VALUE`。

 ** [slotToElicit](#API_runtime_PutSession_ResponseSyntax) **   <a name="lex-runtime_PutSession-response-slotToElicit"></a>
如果 `dialogState`是 `ElicitSlot`，則 會傳回 Amazon Lex 為其引出值的插槽名稱。

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

 ** [audioStream](#API_runtime_PutSession_ResponseSyntax) **   <a name="lex-runtime_PutSession-response-audioStream"></a>
要傳達給使用者的訊息音訊版本。

## 錯誤
<a name="API_runtime_PutSession_Errors"></a>

 ** 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

## 另請參閱
<a name="API_runtime_PutSession_SeeAlso"></a>

如需在其中一種語言特定 AWS SDKs中使用此 API 的詳細資訊，請參閱下列內容：
+  [AWS 命令列界面 V2](https://docs.aws.amazon.com/goto/cli2/runtime.lex-2016-11-28/PutSession) 
+  [AWS 適用於 .NET V4 的 SDK](https://docs.aws.amazon.com/goto/DotNetSDKV4/runtime.lex-2016-11-28/PutSession) 
+  [AWS 適用於 C\$1\$1 的 SDK](https://docs.aws.amazon.com/goto/SdkForCpp/runtime.lex-2016-11-28/PutSession) 
+  [AWS 適用於 Go 的 SDK v2](https://docs.aws.amazon.com/goto/SdkForGoV2/runtime.lex-2016-11-28/PutSession) 
+  [AWS 適用於 Java V2 的 SDK](https://docs.aws.amazon.com/goto/SdkForJavaV2/runtime.lex-2016-11-28/PutSession) 
+  [AWS 適用於 JavaScript V3 的 SDK](https://docs.aws.amazon.com/goto/SdkForJavaScriptV3/runtime.lex-2016-11-28/PutSession) 
+  [AWS 適用於 Kotlin 的 SDK](https://docs.aws.amazon.com/goto/SdkForKotlin/runtime.lex-2016-11-28/PutSession) 
+  [AWS 適用於 PHP V3 的 SDK](https://docs.aws.amazon.com/goto/SdkForPHPV3/runtime.lex-2016-11-28/PutSession) 
+  [AWS 適用於 Python 的 SDK](https://docs.aws.amazon.com/goto/boto3/runtime.lex-2016-11-28/PutSession) 
+  [AWS 適用於 Ruby V3 的 SDK](https://docs.aws.amazon.com/goto/SdkForRubyV3/runtime.lex-2016-11-28/PutSession) 