本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
請參閱下列準則和最佳實務,以最佳化機器人的行為和與客戶的互動。
簽署請求
API 參考中的所有 Amazon Lex V2 模型建置和執行時間請求都會使用簽章 V4 來驗證請求。如需驗證請求的詳細資訊,請參閱 中的簽章第 4 版簽署程序 AWS 一般參考。
保護機密資訊
執行時間 API 操作 RecognizeText 和 RecognizeUtterance 會將工作階段 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 操作將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 和AMAZON.Time內建槽類型會擷取日期和時間 (絕對和相對)。相對日期和時間會在 Amazon Lex V2 收到請求的時間和日期,以及處理請求的區域中解決。
對於AMAZON.Time
內建插槽類型,如果使用者未指定時間在中午之前或之後,則時間不明確。在這種情況下,Amazon Lex V2 會再次提示使用者。我們建議提示引出絕對的時間。例如,使用如「您希望比薩何時送達? 您可以說下午 6 點或傍晚 6 點」的提示。
避免機器人的訓練資料模棱兩可的情況
在機器人中提供可轉換的訓練資料,會降低 Amazon Lex V2 了解使用者輸入的能力。假設您在機器人中有兩個意圖 (OrderPizza
和 OrderDrink
),而且包含「我想要訂購」做為範例表達用語。當您建置機器人時,Amazon Lex V2 無法將此表達式對應至特定意圖。因此,當使用者在執行時間輸入此表達式時,Amazon Lex V2 無法挑選高度可信的意圖。
如果您有兩個具有相同範例表達式的意圖,請使用輸入內容來協助 Amazon Lex V2 在執行時間區分兩個意圖。如需詳細資訊,請參閱設定意圖內容。
使用 TSTALIASID 別名
-
機器人的 TSTALIASID 別名會指向草稿版本,且只能用於手動測試。Amazon Lex 會限制您可以對機器人的 TSTALIASID 別名提出的執行時間請求數量。
-
當您更新機器人的草稿版本時,Amazon Lex 會使用機器人的 TSTALIASID 別名,關閉任何用戶端應用程式的進行中對話。一般而言,您不應該在生產環境中使用機器人的 TSTALIASID 別名,因為可以更新草稿版本。您應該發佈版本和別名,並改用它們。
-
當您更新別名時,Amazon Lex 需要幾分鐘的時間來接收變更。當您修改機器人的草稿版本時,TSSTALIASID 別名會立即收取變更。