支援終止通知:在 2025 年 9 月 15 日, AWS 將停止對 Amazon Lex V1 的支援。2025 年 9 月 15 日之後,您將無法再存取 Amazon Lex V1 主控台或 Amazon Lex V1 資源。如果您使用的是 Amazon Lex V2,請改參閱 Amazon Lex V2 指南。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
PutIntent
建立意圖或取代現有的意圖。
若要定義使用者和機器人之間的互動,您可以使用一或多個意圖。例如,對於披薩訂購機器人,您可以建立OrderPizza
意圖。
若要建立意圖或取代現有的意圖,您必須提供下列項目:
-
意圖名稱。例如:
OrderPizza
。 -
範例表達用語。例如,「我可以訂購披薩,請。」 和「我想要訂購比薩。」
-
要收集的資訊。您可以為機器人向使用者請求的資訊指定槽類型。您可以指定標準槽類型,例如日期或時間,或自訂槽類型,例如比薩的大小和地殼。
-
如何實現意圖。您可以提供 Lambda 函數或設定意圖,將意圖資訊傳回至用戶端應用程式。如果您使用 Lambda 函數,當所有意圖資訊都可用時,Amazon Lex 會叫用您的 Lambda 函數。如果您將意圖設定為將意圖資訊傳回至用戶端應用程式。
您可以在請求中指定其他選用資訊,例如:
-
確認提示,要求使用者確認意圖。例如,「Shall I order your披薩?」
-
滿足意圖後傳送給使用者的結論陳述式。例如,「我下了您的比薩訂單。」
-
後續提示,要求使用者進行其他活動。例如,詢問「是否要使用披薩來訂購飲料?」
如果您指定現有的意圖名稱來更新意圖,Amazon Lex 會將意圖$LATEST
版本中的值取代為請求中的值。Amazon Lex 會移除您在請求中未提供的欄位。如果您未指定必要欄位,Amazon Lex 會擲回例外狀況。當您更新意圖$LATEST
版本時,任何使用意圖$LATEST
版本之機器人status
的欄位都會設定為 NOT_BUILT
。
如需詳細資訊,請參閱Amazon Lex:運作方式。
這項操作需要 lex:PutIntent
動作的許可。
請求語法
PUT /intents/name
/versions/$LATEST HTTP/1.1
Content-type: application/json
{
"checksum": "string
",
"conclusionStatement": {
"messages": [
{
"content": "string
",
"contentType": "string
",
"groupNumber": number
}
],
"responseCard": "string
"
},
"confirmationPrompt": {
"maxAttempts": number
,
"messages": [
{
"content": "string
",
"contentType": "string
",
"groupNumber": number
}
],
"responseCard": "string
"
},
"createVersion": boolean
,
"description": "string
",
"dialogCodeHook": {
"messageVersion": "string
",
"uri": "string
"
},
"followUpPrompt": {
"prompt": {
"maxAttempts": number
,
"messages": [
{
"content": "string
",
"contentType": "string
",
"groupNumber": number
}
],
"responseCard": "string
"
},
"rejectionStatement": {
"messages": [
{
"content": "string
",
"contentType": "string
",
"groupNumber": number
}
],
"responseCard": "string
"
}
},
"fulfillmentActivity": {
"codeHook": {
"messageVersion": "string
",
"uri": "string
"
},
"type": "string
"
},
"inputContexts": [
{
"name": "string
"
}
],
"kendraConfiguration": {
"kendraIndex": "string
",
"queryFilterString": "string
",
"role": "string
"
},
"outputContexts": [
{
"name": "string
",
"timeToLiveInSeconds": number
,
"turnsToLive": number
}
],
"parentIntentSignature": "string
",
"rejectionStatement": {
"messages": [
{
"content": "string
",
"contentType": "string
",
"groupNumber": number
}
],
"responseCard": "string
"
},
"sampleUtterances": [ "string
" ],
"slots": [
{
"defaultValueSpec": {
"defaultValueList": [
{
"defaultValue": "string
"
}
]
},
"description": "string
",
"name": "string
",
"obfuscationSetting": "string
",
"priority": number
,
"responseCard": "string
",
"sampleUtterances": [ "string
" ],
"slotConstraint": "string
",
"slotType": "string
",
"slotTypeVersion": "string
",
"valueElicitationPrompt": {
"maxAttempts": number
,
"messages": [
{
"content": "string
",
"contentType": "string
",
"groupNumber": number
}
],
"responseCard": "string
"
}
}
]
}
URI 請求參數
請求會使用下列 URI 參數。
- name
-
意圖的名稱。名稱不區分大小寫。
名稱無法比對內建意圖名稱,或內建意圖名稱與 "AMAZON"。已移除。例如,由於有名為 的內建意圖
AMAZON.HelpIntent
,因此您無法建立名為 的自訂意圖HelpIntent
。如需內建意圖清單,請參閱 Alexa Skills Kit
中的標準內建意圖。 長度限制:長度下限為 1。長度上限為 100。
模式:
^([A-Za-z]_?)+$
必要:是
請求主體
請求接受採用 JSON 格式的下列資料。
- checksum
-
識別
$LATEST
版本的特定修訂。當您建立新的意圖時,請將
checksum
欄位保留空白。如果您指定檢查總和,您會收到BadRequestException
例外狀況。當您想要更新意圖時,請將
checksum
欄位設定為最新版本的檢查總和$LATEST
。如果您未指定checksum
欄位,或者檢查總和與$LATEST
版本不相符,則會收到PreconditionFailedException
例外狀況。類型:字串
必要:否
- conclusionStatement
-
您希望 Amazon Lex 在 Lambda 函數成功滿足意圖之後,將 傳送給使用者的陳述式。
只有在您在 中提供 Lambda 函數時,此元素才相關
fulfillmentActivity
。如果您將意圖傳回用戶端應用程式,則無法指定此元素。注意
followUpPrompt
和conclusionStatement
是互斥的。您只能指定一個。類型:Statement 物件
必要:否
- confirmationPrompt
-
提示使用者確認意圖。這個問題應該有「是」或「否」的答案。
Amazon Lex 使用此提示來確保使用者確認意圖已準備好履行。例如,使用
OrderPizza
意圖,您可能想要先確認順序是否正確,再放置。對於其他意圖,例如僅回應使用者問題的意圖,您可能不需要在提供資訊之前要求使用者確認。注意
您必須同時提供
rejectionStatement
和confirmationPrompt
,或兩者皆不提供。類型:Prompt 物件
必要:否
- createVersion
-
當設定為
true
新的編號版本的意圖時,即會建立。這與呼叫CreateIntentVersion
操作相同。如果您未指定createVersion
,則預設為false
。類型:布林值
必要:否
- description
-
意圖的描述。
類型:字串
長度限制:長度下限為 0。長度上限為 200。
必要:否
- dialogCodeHook
-
指定要為每個使用者輸入調用的 Lambda 函數。您可以叫用此 Lambda 函數來個人化使用者互動。
例如,假設您的機器人判斷使用者是 John。您的 Lambda 函數可能會從後端資料庫擷取 John 的資訊,並預先填入一些值。例如,如果您發現 John 不耐受膠體,您可以將對應的意圖槽
GlutenIntolerant
設為 true。您可能會找到 John 的電話號碼,並設定對應的工作階段屬性。類型:CodeHook 物件
必要:否
- followUpPrompt
-
Amazon Lex 會使用此提示在滿足意圖之後請求其他活動。例如,在滿足
OrderPizza
意圖之後,您可能會提示使用者訂購飲料。Amazon Lex 採取的動作取決於使用者的回應,如下所示:
-
如果使用者說「是」,則會使用為機器人設定的釐清提示來回應。
-
如果使用者說「是」,且繼續表達觸發意圖的表達式,則會開始針對意圖的對話。
-
如果使用者說「否」,則會回應為後續提示設定的拒絕陳述式。
-
如果無法辨識表達式,則會再次重複後續提示。
followUpPrompt
欄位和conclusionStatement
欄位是互斥的。您只能指定一個。類型:FollowUpPrompt 物件
必要:否
-
- fulfillmentActivity
-
必要。描述如何實現意圖。例如,在使用者提供披薩訂單的所有資訊後, 會
fulfillmentActivity
定義機器人如何向本機披薩存放區下訂單。您可以設定 Amazon Lex 將所有意圖資訊傳回至用戶端應用程式,或指示它叫用可處理意圖的 Lambda 函數 (例如,使用披薩下訂單)。
類型:FulfillmentActivity 物件
必要:否
- inputContexts
-
物件陣列
InputContext
,列出 Amazon Lex 在與使用者對話時必須處於作用中狀態的情境,以選擇意圖。類型:InputContext 物件陣列
陣列成員:項目數下限為 0。項目數上限為 5。
必要:否
- kendraConfiguration
-
使用
AMAZON.KendraSearchIntent
意圖連線到 Amazon Kendra 索引所需的組態資訊。如需詳細資訊,請參閱 AMAZON.KendraSearchIntent。類型:KendraConfiguration 物件
必要:否
- outputContexts
-
物件陣列
OutputContext
,列出意圖在滿足意圖時啟用的內容。類型:OutputContext 物件陣列
陣列成員:項目數下限為 0。項目數上限為 10。
必要:否
- parentIntentSignature
-
要作為此意圖基礎的內建意圖的唯一識別碼。若要尋找意圖的簽章,請參閱 Alexa Skills Kit 中的標準內建意圖
。 類型:字串
必要:否
- rejectionStatement
-
當使用者對 中定義的問題回答「否」時
confirmationPrompt
,Amazon Lex 會回應此陳述式,以確認意圖已取消。注意
您必須同時提供
rejectionStatement
和confirmationPrompt
,或兩者皆不提供。類型:Statement 物件
必要:否
- sampleUtterances
-
使用者可能表示表示意圖的表達用語 (字串) 陣列。例如,「我想要 {PizzaSize} 比薩」、「訂單 {Quantity} {PizzaSize} 比薩」。
在每個表達式中,槽名稱是以大括號括住。
類型:字串陣列
陣列成員:項目數下限為 0。最多 1500 個項目。
長度限制:長度下限為 1。長度上限為 200。
必要:否
- slots
-
意圖槽陣列。在執行時間,Amazon Lex 會使用槽中定義的提示,從使用者取得所需的槽值。如需詳細資訊,請參閱Amazon Lex:運作方式。
類型:Slot 物件陣列
陣列成員:項目數下限為 0。項目數上限為 100。
必要:否
回應語法
HTTP/1.1 200
Content-type: application/json
{
"checksum": "string",
"conclusionStatement": {
"messages": [
{
"content": "string",
"contentType": "string",
"groupNumber": number
}
],
"responseCard": "string"
},
"confirmationPrompt": {
"maxAttempts": number,
"messages": [
{
"content": "string",
"contentType": "string",
"groupNumber": number
}
],
"responseCard": "string"
},
"createdDate": number,
"createVersion": boolean,
"description": "string",
"dialogCodeHook": {
"messageVersion": "string",
"uri": "string"
},
"followUpPrompt": {
"prompt": {
"maxAttempts": number,
"messages": [
{
"content": "string",
"contentType": "string",
"groupNumber": number
}
],
"responseCard": "string"
},
"rejectionStatement": {
"messages": [
{
"content": "string",
"contentType": "string",
"groupNumber": number
}
],
"responseCard": "string"
}
},
"fulfillmentActivity": {
"codeHook": {
"messageVersion": "string",
"uri": "string"
},
"type": "string"
},
"inputContexts": [
{
"name": "string"
}
],
"kendraConfiguration": {
"kendraIndex": "string",
"queryFilterString": "string",
"role": "string"
},
"lastUpdatedDate": number,
"name": "string",
"outputContexts": [
{
"name": "string",
"timeToLiveInSeconds": number,
"turnsToLive": number
}
],
"parentIntentSignature": "string",
"rejectionStatement": {
"messages": [
{
"content": "string",
"contentType": "string",
"groupNumber": number
}
],
"responseCard": "string"
},
"sampleUtterances": [ "string" ],
"slots": [
{
"defaultValueSpec": {
"defaultValueList": [
{
"defaultValue": "string"
}
]
},
"description": "string",
"name": "string",
"obfuscationSetting": "string",
"priority": number,
"responseCard": "string",
"sampleUtterances": [ "string" ],
"slotConstraint": "string",
"slotType": "string",
"slotTypeVersion": "string",
"valueElicitationPrompt": {
"maxAttempts": number,
"messages": [
{
"content": "string",
"contentType": "string",
"groupNumber": number
}
],
"responseCard": "string"
}
}
],
"version": "string"
}
回應元素
如果動作成功,則服務傳回 HTTP 200 回應。
服務會傳回下列 JSON 格式的資料。
- checksum
-
已建立或更新的意圖
$LATEST
版本總和檢查碼。類型:字串
- conclusionStatement
-
在
fulfillmentActivity
意圖中指定的 Lambda 函數滿足意圖之後,Amazon Lex 會將此陳述式傳遞給使用者。類型:Statement 物件
- confirmationPrompt
-
如果在意圖中定義,Amazon Lex 會提示使用者先確認意圖,再履行意圖。
類型:Prompt 物件
- createdDate
-
建立意圖的日期。
類型:Timestamp
- createVersion
-
True
如果建立了新版本的意圖。如果請求中未指定createVersion
欄位,則回應中的createVersion
欄位會設為 false。類型:布林值
- description
-
意圖的描述。
類型:字串
長度限制:長度下限為 0。長度上限為 200。
- dialogCodeHook
-
如果在意圖中定義,Amazon Lex 會為每個使用者輸入調用此 Lambda 函數。
類型:CodeHook 物件
- followUpPrompt
-
如果在意圖中定義,Amazon Lex 會使用此提示,在意圖實現之後請求額外的使用者活動。
類型:FollowUpPrompt 物件
- fulfillmentActivity
-
如果在意圖中定義,Amazon Lex 會在使用者提供意圖所需的所有資訊後調用此 Lambda 函數以滿足意圖。
類型:FulfillmentActivity 物件
- inputContexts
-
物件陣列
InputContext
,列出 Amazon Lex 在與使用者對話時必須處於作用中狀態的情境,以選擇意圖。類型:InputContext 物件陣列
陣列成員:項目數下限為 0。項目數上限為 5。
- kendraConfiguration
-
若有組態資訊,則需要連線至 Amazon Kendra 索引並使用
AMAZON.KendraSearchIntent
意圖。類型:KendraConfiguration 物件
- lastUpdatedDate
-
意圖更新的日期。當您建立資源時,建立日期和上次更新日期相同。
類型:Timestamp
- name
-
意圖的名稱。
類型:字串
長度限制:長度下限為 1。長度上限為 100。
模式:
^([A-Za-z]_?)+$
- outputContexts
-
物件陣列
OutputContext
,列出意圖在滿足意圖時啟用的內容。類型:OutputContext 物件陣列
陣列成員:項目數下限為 0。項目數上限為 10。
- parentIntentSignature
-
此意圖根據的內建意圖的唯一識別符。
類型:字串
- rejectionStatement
-
如果使用者對 Amazon Lex
confirmationPrompt
中定義的問題回答「否」,則會回應此陳述式以確認意圖已取消。類型:Statement 物件
- sampleUtterances
-
為意圖設定的範例表達式陣列。
類型:字串陣列
陣列成員:項目數下限為 0。最多 1500 個項目。
長度限制:長度下限為 1。長度上限為 200。
- slots
-
為意圖設定的意圖插槽陣列。
類型:Slot 物件陣列
陣列成員:項目數下限為 0。項目數上限為 100。
- version
-
意圖的版本。對於新意圖,版本一律為
$LATEST
。類型:字串
長度限制:長度下限為 1。長度上限為 64。
模式:
\$LATEST|[0-9]+
錯誤
- BadRequestException
-
請求格式不正確。例如,值無效或缺少必要欄位。請檢查欄位值,然後再試一次。
HTTP 狀態碼:400
- ConflictException
-
處理請求時出現衝突。請再次嘗試您的請求。
HTTP 狀態碼:409
- InternalFailureException
-
發生內部 Amazon Lex 錯誤。請再次嘗試您的請求。
HTTP 狀態碼:500
- LimitExceededException
-
請求超過限制。請再次嘗試您的請求。
HTTP 狀態碼:429
- PreconditionFailedException
-
您嘗試變更的資源檢查總和與請求中的檢查總和不相符。請檢查資源的檢查總和,然後再試一次。
HTTP 狀態碼:412
另請參閱
如需在其中一種語言特定 AWS SDKs中使用此 API 的詳細資訊,請參閱下列內容: