

支援終止通知：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)。

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

# 一般準則
<a name="gl-guidelines"></a>

本節說明使用 Amazon Lex 時的一般準則。
+ 簽署請求 – 中的所有 Amazon Lex 模型建置和執行時間 API 操作都會[API 參考](API_Reference.md)使用簽章 V4 來驗證請求。如需有關驗證請求的詳細資訊，請參閱《Amazon Web Services 一般參考》**中的 [Signature 第 4 版簽署程序](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html)。

   

  對於 [PostContent](API_runtime_PostContent.md)，Amazon Lex 使用 *Amazon Simple Storage Service (S3*[) API 參考中授權標頭：在單一區塊 (AWS Signature 第 4 版） 中傳輸承載的簽章計算](https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-header-based-auth.html)中所述的未簽章承載選項。

   

  當使用未簽署的承載選項時，請勿在正式請求中包含承載的雜湊。您可以改用字串常值「UNSIGNED-PAYLOAD」做為承載的雜湊。另外也請在 `x-amz-content-sha256` 請求中包含名稱 `UNSIGNED-PAYLOAD` 和數值 `PostContent` 的標頭。

   
+ 請注意，Amazon Lex 如何從使用者表達用語擷取槽值：

   

  Amazon Lex 會使用您在槽類型定義中提供的列舉值來訓練其機器學習模型。假設您使用以下範例表達用語，來定義稱為 `GetPredictionIntent` 的意圖：

  ```
  "Tell me the prediction for {Sign}" 
  ```

  當中 `{Sign}` 是自訂類型為 `ZodiacSign` 的槽。它有 12 個列舉值，`Aries` 至 `Pisces`。從使用者表達用語 "Tell me the prediction for ..." Amazon Lex 了解以下什麼是 zodiac 符號。

   

  當 `valueSelectionStrategy` 欄位設定為`ORIGINAL_VALUE`使用 [PutSlotType](API_PutSlotType.md)操作，或在主控台中選取**展開值**時，如果使用者說「告知我地球預測」，Amazon Lex 會推斷「地球」是 ，並將其`ZodiacSign`傳遞給用戶端應用程式或 Lambda 函數。您必須先檢查槽值具有有效的值，再將其用於您的履行活動。

   

  如果您使用 [PutSlotType](API_PutSlotType.md) 操作將 `valueSelectionStrategy` 欄位設定為 `TOP_RESOLUTION`，或是主控台中已選取**Restrict to slot values and synonyms (限制為槽值和同義詞)**，則傳回的值會受限於您為槽類型定義的值。例如，如果使用者表示「我想知道地球的運勢預測」，將無法辨識該值，因為它不屬於為槽類型定義的值之一。當為槽值定義同義詞時，會將其視同槽值，不過，傳回的是槽值，而不是同義詞。

   

  當 Amazon Lex 呼叫 Lambda 函數或傳回與用戶端應用程式之語音互動的結果時，不保證槽值的大小寫。例如，如果您要引出 [AMAZON.Movie](https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/built-in-intent-ref/slot-type-reference#movie) 內建槽類型的值，而使用者說或輸入「強風，Amazon Lex 可能會傳回「強風、「強風」或「強風」。在文字互動中，槽值的大小寫會符合輸入的文字或槽值，端視 `valueResolutionStrategy` 欄位的值而定。

   
+ 定義包含縮寫的槽值時，請使用下列模式：
  + 以句點分隔的大寫字母 (D.V.D.)
  + 以空格分隔的大寫字母 (D V D)

   
+ Amazon Lex 不支援 Alexa Skills Kit 支援的 AMAZON.LITERAL 內建槽類型。不過，Amazon Lex 支援建立自訂插槽類型，您可以使用這些類型來實作此功能。如前一點所述，您可以擷取自訂槽類型定義以外的值。新增更多和多樣化的列舉值來提升自動語音辨識 (ASR) 和自然語言了解 (NLU) 的準確性。

   
+ [AMAZON.DATE](https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/built-in-intent-ref/slot-type-reference#date) 和 [AMAZON.TIME](https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/built-in-intent-ref/slot-type-reference#time) 內建槽類型會同時擷取絕對和相對的日期和時間。相對日期和時間會在 Amazon Lex 正在處理請求的區域中解析。

   

  對於`AMAZON.TIME`內建插槽類型，如果使用者未指定時間在中午之前或之後，則時間不明確，Amazon Lex 會再次提示使用者。我們建議提示引出絕對的時間。例如，使用如「您希望比薩何時送達？ 您可以說下午 6 點或傍晚 6 點」的提示。

   
+ 在機器人中提供可轉換的訓練資料，會降低 Amazon Lex 了解使用者輸入的能力。請考量以下範例：

   

  假設您的機器人中有兩個意圖 (`OrderPizza` 和 `OrderDrink`)，而且兩者都是以「我想要訂購」的表達用語來設定。此表達用語不會對應到 Amazon Lex 在建置時為機器人建置語言模型時可以從中學習的特定意圖。因此，當使用者在執行時間輸入此表達用語時，Amazon Lex 無法挑選具有高度可信度的意圖。

   

  再來看看另一個範例，您定義了自訂意圖向使用者獲取確認 (例如，`MyCustomConfirmationIntent`) 並以表達用語「是」和「否」來設定意圖。請注意，Amazon Lex 也有了解使用者確認的語言模型。這可能會產生衝突的情況。當使用者以「是」回應時，這是表示確認進行中的意圖，還是確認使用者請求您所建立的自訂意圖？ 

   

  一般來說，您提供的範例表達用語應該對應到特定的意圖，或是選擇對應到特定槽值。

   
+ 執行時間 API 操作 [PostContent](API_runtime_PostContent.md) 和 [PostText](API_runtime_PostText.md) 會將使用者 ID 視為必要的參數。開發人員可以將此設定為符合 API 中所述之限制的任何值。我們建議您不要使用此參數來傳送任何機密資訊 (例如使用者登入、電子郵件或身分證號碼。這個 ID 主要是用來唯一識別與機器人的對話 (可能有多個使用者訂購外送的比薩)。

   
+ 如果您的用戶端應用程式使用 Amazon Cognito 進行身分驗證，您可以使用 Amazon Cognito 使用者 ID 做為 Amazon Lex 使用者 ID。請注意，為機器人設定的任何 Lambda 函數都必須有自己的身分驗證機制，才能識別代表 Amazon Lex 叫用 Lambda 函數的使用者。

   
+ 我們鼓勵您定義一個意圖來捕捉使用者停止對話的意圖。例如，您可以定義具有範例表達用語的意圖 (`NothingIntent`) (「我不需要任何內容」、「結束」、「再見」)、沒有插槽，也沒有設定為程式碼掛勾的 Lambda 函數。這可讓使用者從容地關閉對話。

   