

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

# 準則和最佳實務
<a name="guidelines"></a>

請參閱下列準則和最佳實務，以最佳化機器人的行為和與客戶的互動。

**簽署請求**

[API 參考](https://docs.aws.amazon.com/lexv2/latest/APIReference/welcome.html)中的所有 Amazon Lex V2 模型建置和執行時間請求都會使用簽章 V4 來驗證請求。如需驗證請求的詳細資訊，請參閱 中的 [ Signature 第 4 版簽署程序](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html) AWS 一般參考。

**保護機密資訊**

執行時間 API 操作 [RecognizeText](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeText.html) 和 [RecognizeUtterance](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeUtterance.html) 會將工作階段 ID 視為必要參數。開發人員可以將此設定為符合 API 中所述之限制的任何值。我們建議您不要使用此參數來傳送任何機密資訊，例如使用者登入、電子郵件或社會安全號碼。此 ID 主要用於唯一識別與機器人的對話。

**從使用者表達用語擷取槽值**

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

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

其中 {sign} 是具有自訂類型的插槽`ZodiacSign`，具有 12 個列舉值： `Aries`到 `Pisces`。現在假設使用者說「告訴我地球的預測」：
+ 如果您執行下列其中一個動作，Amazon Lex V2 會推斷「地球」是 ZodiacSign 值：
  + `ORIGINAL_VALUE` 使用 [CreateSlotType](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateSlotType.html) 操作將 `valueSelectionStrategy` 欄位設定為
  + 在主控台中選取**展開值** 
+ 如果您透過執行下列其中一個動作，將辨識限制為您為槽類型定義的值，Amazon Lex V2 就無法辨識「地球」值：
  + `TOP_RESOLUTION` 使用 `CreateSlotType`操作將 `valueSelectionStrategy` 欄位設定為
  + 在主控台中選取**限制槽值和同義詞** 

當您定義槽值的同義詞時，它們會辨識為與槽值相同的。不過，會傳回槽值，而不是同義詞。

由於 Amazon Lex V2 將此值傳遞至用戶端應用程式或 Lambda 函數，因此您應該檢查槽值是否為有效值，然後再將其用於履行活動。

當 Amazon Lex V2 呼叫 Lambda 函數或傳回與用戶端的語音互動結果時，不保證槽值的大小寫。在文字互動中，槽值的大小寫會符合輸入的文字或槽值，端視 `valueResolutionStrategy` 欄位的值而定。

**槽值中的縮寫**

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

**日期和時間的內建插槽**

[AMAZON.Date](built-in-slot-date.md) 和[AMAZON.Time](built-in-slot-time.md)內建槽類型會擷取日期和時間 （絕對和相對）。相對日期和時間會在 Amazon Lex V2 收到請求的時間和日期，以及處理請求的區域中解決。

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

**避免機器人訓練資料的模棱兩可之處**

在機器人中提供可轉換的訓練資料，會降低 Amazon Lex V2 了解使用者輸入的能力。假設您在機器人中有兩個意圖 (`OrderPizza` 和 `OrderDrink`)，並包含「我想要訂購」作為範例表達用語。當您建置機器人時，Amazon Lex V2 無法將此表達用語映射至特定意圖。因此，當使用者在執行時間輸入此表達用語時，Amazon Lex V2 無法挑選具有高度可信度的意圖。

如果您有兩個具有相同範例表達用語的意圖，請使用輸入內容來協助 Amazon Lex V2 在執行時間區分兩個意圖。如需詳細資訊，請參閱[設定意圖內容](https://docs.aws.amazon.com/lexv2/latest/dg/context-mgmt-active-context.html)。

**使用 TSTALIASID 別名**
+ 機器人的 TSTALIASID 別名會指向草稿版本，且應僅用於手動測試。Amazon Lex 會限制您可以對機器人的 TSTALIASID 別名提出的執行時間請求數量。
+ 當您更新機器人的草稿版本時，Amazon Lex 會使用機器人的 TSTALIASID 別名，關閉任何用戶端應用程式的任何進行中對話。一般而言，您不應該在生產環境中使用機器人的 TSTALIASID 別名，因為可以更新草稿版本。您應該發佈版本和別名，並改用它們。
+ 當您更新別名時，Amazon Lex 需要幾分鐘的時間來取得變更。當您修改機器人的草稿版本時，TSALIASID 別名會立即收取變更。