支援終止通知:在 2025 年 9 月 15 日, AWS 將停止對 Amazon Lex V1 的支援。2025 年 9 月 15 日之後,您將無法再存取 Amazon Lex V1 主控台或 Amazon Lex V1 資源。如果您使用的是 Amazon Lex V2,請改參閱 Amazon Lex V2 指南。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
本節說明使用 Amazon Lex 時的一般準則。
-
簽署請求 – 中的所有 Amazon Lex 模型建置和執行時間 API 操作都會API 參考使用簽章 V4 來驗證請求。如需有關驗證請求的詳細資訊,請參閱《Amazon Web Services 一般參考》中的 Signature 第 4 版簽署程序。
對於 PostContent,Amazon Lex 使用 Amazon Simple Storage Service (S3) API 參考中授權標頭:在單一區塊 (AWS Signature 第 4 版) 中傳輸承載的簽章計算中所述的未簽章承載選項。
當使用未簽署的承載選項時,請勿在正式請求中包含承載的雜湊。您可以改用字串常值「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
。從使用者用語「告訴我 ... 的預測」 Amazon Lex 了解以下哪些是 zodiac 符號。當
valueSelectionStrategy
欄位設定為ORIGINAL_VALUE
使用 PutSlotType操作,或在主控台中選取展開值時,如果使用者說「告知我地球預測」,Amazon Lex 會推斷「地球」是 ,ZodiacSign
並將其傳遞給用戶端應用程式或 Lambda 函數。您必須先檢查槽值具有有效的值,再將其用於您的履行活動。如果您使用 PutSlotType 操作將
valueSelectionStrategy
欄位設定為TOP_RESOLUTION
,或是主控台中已選取Restrict to slot values and synonyms (限制為槽值和同義詞),則傳回的值會受限於您為槽類型定義的值。例如,如果使用者表示「我想知道地球的運勢預測」,將無法辨識該值,因為它不屬於為槽類型定義的值之一。當為槽值定義同義詞時,會將其視同槽值,不過,傳回的是槽值,而不是同義詞。當 Amazon Lex 呼叫 Lambda 函數或傳回與用戶端應用程式之語音互動的結果時,無法保證槽值的情況。例如,如果您要為 AMAZON.Movie
內建槽類型引出值,而使用者說或輸入「強風者」,Amazon Lex 可能會傳回「強風者」、「強風者」或「強風者」。在文字互動中,槽值的大小寫會符合輸入的文字或槽值,端視 valueResolutionStrategy
欄位的值而定。 -
定義包含縮寫的槽值時,請使用下列模式:
-
以句點分隔的大寫字母 (D.V.D.)
-
以空格分隔的大寫字母 (D V D)
-
-
Amazon Lex 不支援 Alexa Skills Kit 支援的 AMAZON.LITERAL 內建槽類型。不過,Amazon Lex 支援建立自訂插槽類型,您可以使用這些類型來實作此功能。如前一點所述,您可以擷取自訂槽類型定義以外的值。新增更多和多樣化的列舉值來提升自動語音辨識 (ASR) 和自然語言了解 (NLU) 的準確性。
-
AMAZON.DATE
和 AMAZON.TIME 內建槽類型會同時擷取絕對和相對的日期和時間。相對日期和時間會在 Amazon Lex 正在處理請求的區域中解決。 對於
AMAZON.TIME
內建插槽類型,如果使用者未指定時間在中午之前或之後,則時間不明確,Amazon Lex 會再次提示使用者。我們建議提示引出絕對的時間。例如,使用如「您希望比薩何時送達? 您可以說下午 6 點或傍晚 6 點」的提示。 -
在機器人中提供可轉換的訓練資料,會降低 Amazon Lex 了解使用者輸入的能力。請考量以下範例:
假設您的機器人中有兩個意圖 (
OrderPizza
和OrderDrink
),而且兩者都是以「我想要訂購」的表達用語來設定。此表達式不會對應到 Amazon Lex 在建置時為機器人建置語言模型時可以從中學習的特定意圖。因此,當使用者在執行時間輸入此表達式時,Amazon Lex 無法挑選高度可信的意圖。再來看看另一個範例,您定義了自訂意圖向使用者獲取確認 (例如,
MyCustomConfirmationIntent
) 並以表達用語「是」和「否」來設定意圖。請注意,Amazon Lex 也有了解使用者確認的語言模型。這可能會產生衝突的情況。當使用者以「是」回應時,這是表示確認進行中的意圖,還是確認使用者請求您所建立的自訂意圖?一般來說,您提供的範例表達用語應該對應到特定的意圖,或是選擇對應到特定槽值。
-
執行時間 API 操作 PostContent 和 PostText 會將使用者 ID 視為必要的參數。開發人員可以將此設定為符合 API 中所述之限制的任何值。我們建議您不要使用此參數來傳送任何機密資訊 (例如使用者登入、電子郵件或身分證號碼。這個 ID 主要是用來唯一識別與機器人的對話 (可能有多個使用者訂購外送的比薩)。
-
如果您的用戶端應用程式使用 Amazon Cognito 進行身分驗證,您可以使用 Amazon Cognito 使用者 ID 做為 Amazon Lex 使用者 ID。請注意,為機器人設定的任何 Lambda 函數都必須有自己的身分驗證機制,才能識別 Amazon Lex 代表其叫用 Lambda 函數的使用者。
-
我們鼓勵您定義一個意圖來捕捉使用者停止對話的意圖。例如,您可以使用
NothingIntent
範例表達式 (「我不要任何內容」、「結束」、「再見」)、沒有插槽,也沒有設定為程式碼掛勾的 Lambda 函數來定義意圖 ()。這可讓使用者從容地關閉對話。