如果您使用的是 Amazon Lex V2,請改參閱 Amazon Lex V2 指南。
如果您使用的是 Amazon Lex V1,我們建議您將機器人升級至 Amazon Lex V2。我們不再將新功能新增至 V1,並強烈建議對所有新機器人使用 V2。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
PutIntent
建立意圖或取代現有的意圖。
要定義用戶和您的機器人之間的交互,您可以使用一個或多個意圖。例如,對於比薩餅訂購機器人,您將創建一個OrderPizza
意圖。
若要建立意圖或取代現有的意圖,您必須提供下列資訊:
-
意圖名稱。例如
OrderPizza
。 -
語音樣本。例如,「我可以點披薩嗎?」 和「我想點披薩。」
-
要收集的信息。您可以為機器人將向使用者請求的資訊指定位置類型。您可以指定標準插槽類型,例如日期或時間,或自訂插槽類型,例如比薩餅的大小和外殼。
-
意圖將如何實現。您可以提供 Lambda 函數或設定意圖,以將意圖資訊傳回給用戶端應用程式。如果您使用 Lambda 函數,當所有意圖資訊都可用時,Amazon Lex 會叫用您的 Lambda 函數。如果您將意圖配置為將意圖信息返回給客戶端應用程序。
您可以在請求中指定其他可選信息,例如:
-
要求使用者確認意圖的確認提示。例如,「我可以點你的披薩嗎?」
-
在意圖完成後發送給用戶的結論聲明。例如,「我下了你的披薩訂單。」
-
後續提示,要求使用者進行其他活動。例如,詢問「您想用披薩點飲料嗎?」
如果您指定現有的意圖名稱來更新意圖,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 不耐受麩質,您可能會將對應的意圖槽設定為 true。
GlutenIntolerant
您可能會找到 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 技能套件中的標準內建意
圖。 類型:字串
必要:否
- rejectionStatement
-
當使用者對於中定義的問題回答「否」時
confirmationPrompt
,Amazon Lex 會回應此陳述式,確認意圖已取消。注意
您必須同時提供
rejectionStatement
和confirmationPrompt
,或兩者都不提供。類型:Statement 物件
必要:否
- sampleUtterances
-
用戶可能會說用來表示意圖的語音(字符串)的數組。例如,「我想要 {PizzaSize} 比薩餅」,「訂購 {數量} {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
-
在意圖中指定的 Lambda 函數達成
fulfillmentActivity
意圖之後,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
-
如果使用者對
confirmationPrompt
Amazon Lex 中定義的問題回答「否」,則會以此陳述式回應,以確認意圖已取消。類型: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 SDK 中使用此 API 的詳細資訊,請參閱下列內容: