本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
StartBotConversation
此StartBotConversation
動作會在最終使用者和 Amazon Lex v2 機器人之間建立語音交談。使用者提供必要的資訊給機器人。然後,機器人會將資訊傳回至公用交換電話網路 (PSTN) 音訊 Lambda 函數,並且函數會執行要求的工作。
例如,機器人可以在交談開始時播放選用的歡迎訊息,以簡短描述 PSTN Audio Lambda 函數可執行的工作。用戶和機器人之間的對話來回進行,直到機器人收集所需的信息。交談結束後,Amazon Chime 開發套件會以動作成功事件叫用 PSTN 音訊 Lambda 函數,其中包含機器人收集的資訊。您的 PSTN 音訊 Lambda 函數會處理資訊並執行要求的工作。
音訊服務為您的使用者提供栩栩如生的對話互動。例如,使用者可以在音訊提示完成之前中斷機器人並回答問題。此外,用戶可以使用語音和 DTMF 數字的任意組合來提供信息。機器人會等待使用者提供輸入,然後再回應。您可以設定機器人在解譯任何語音輸入之前等待使用者完成說話的時間長度。用戶還可以指示機器人在通話過程中需要時間來檢索其他信息,例如信用卡號碼等待。
該StartBotConversation
動作在機器人對話期間使用亞馬 Amazon Lex 和 Amazon Polly。標準 Amazon Lex 和 Amazon Polly 費用適用. 如需更多定價資訊,請參閱 Amazon Lex 串流對話定價
注意
您無法在已橋接的通話或已加入 Amazon Chime SDK 會議的通話上執行此動作。
重要
Amazon Lex 和 Amazon Polly 的使用受AWS 服務條款
主題
StartBotConversation 語法
下列範例顯示典型的StartBotConversation
語法。
{ "SchemaVersion": "1.0", "Actions":[ { "Type": "StartBotConversation", "Parameters": { "CallId": "
string
", "ParticipantTag": "string
", "BotAliasArn": "string
", "LocaleId": "string
", "Configuration": { "SessionState": { "SessionAttributes": { "string": "string
" }, "DialogAction" : { "Type": "string
" } }, "WelcomeMessages": [ { "Content": "string
", "ContentType": "string
" } ] } } } ] }
- CallId
-
說明 — AWS Lambda 函數叫用中
CallDetails
的參與者。CallID
該StartBotConversation
動作使用此 ID 作為機器人的SessionId
。在通話中進行的所有機器人對話共享相同的對話會話。您可以使用 Amazon Lex PutSession API 修改使用者和機器人之間的工作階段狀態。如需詳細資訊,請參閱 Amazon Lex 開發人員指南中的使用 Amazon Lex v2 API 管理工作階段。允許的值 — 有效的呼叫 ID。
必要 — 否,如果
ParticipantTag
存在。預設值 — 無。
- ParticipantTag
-
描述 — 中其
ParticipantTag
中一個已連線參與者的CallDetails
。允許的值 —
LEG-A
。必要 — 否,如果
CallId
存在。默認值-被調用
ParticipantTag
的callLeg
。如果指定,則忽略此項CallDetails
。 - BotAliasArn
-
說明 — 您的 Lex 機器人的機器人別名 ARN。您必須在與 PSTN 音訊應用程式相同的 AWS 區域中建立機器人。有效的 Amazon Lex 機器人別名具有以下格式:
arn:aws:lex:
,您region
:awsAccountId
:bot-alias/botId
/botAliasId
的機器人所在的 AWS 區域在哪裡。這region
是在其中建立您的 Amazon Lex 機器人的 AWS 帳戶識別碼。awsAccountId
botId
值是您建立機器人時指派給機器人的識別碼。您可以在 Amazon Lex 主控台的機器人詳細資料頁面上找到機器人 ID。這botAliasId
是您建立機器人別名時指派給機器人別名的識別碼。您可以在 Amazon Lex 主控台的「別名」頁面上找到機器人別名 ID。允許的值 — 有效的機器人 ARN。
必要 — 是。
預設值 — 無。
- LocaleId
-
描述 — 您用於機器人的地區設定識別碼。如需地區設定和語言代碼的清單,請參閱 Amazon Lex 支援的語言和語言環境。
允許的值 — Amazon Lex 支援的語言和語言環境。
必要 — 否。
預設值 —
en_US
。 - Configuration
-
說明 — 交談組態,包括工作階段狀態和歡迎訊息。
Configuration
物件的 JSON 字串表示法的總大小限制為 10 KB。允許的值 —
Configuration
物件。必要 — 否。
預設值 — 無。
- Configuration.SessionState
-
說明 — 使用者與 Amazon Lex v2 的工作階段狀態。
允許的值 —
SessionState
物件。必要 — 否。
預設值 — 無。
- Configuration.SessionState.SessionAttributes
-
描述 — 代表工作階段特定前後關聯資訊的索引鍵/值配對的對映。此對應包含 Amazon Lex v2 和用戶端應用程式之間傳遞的應用程式資訊。
允許的值 — 字串至字串對應。
必要 — 否。
預設值 — 無。
- Configuration.SessionState.DialogAction.Type
-
描述 — 機器人與使用者互動時所採取的下一個動作。可能的值如下:
委派 Amazon Lex v2 會決定下一個動作。
ElicitIntent下一個動作會從使用者產生意圖。
允許的值 —
Delegate
|ElicitIntent
。必要 — 否。
預設值 — 無。
- Configuration.WelcomeMessages
-
[說明] — 要在交談開始時傳送給使用者的訊息清單。如果您設定
welcomeMessage
欄位,則必須將DialogAction.Type
值設定為ElicitIntent
。允許的值 — 訊息物件
必要 — 否。
預設值 — 無。
- Configuration.WelcomeMessages.Content
-
「描述」— 歡迎消息文本。
允許的值 — 字串。
必要 — 否。
預設值 — 無。
- Configuration.WelcomeMessages.ContentType
-
描述 — 指示歡迎使用訊息類型。
允許的值 —
PlainText
|SSML
PlainText— 郵件包含純 UTF-8 文字。
SSML — 郵件包含針對語音輸出格式化的文字。
必要 — 是。
預設值 — 無。
使用動StartBotConversation作
下面的例子顯示了一個典型的StartBotConversation
動作。
{ "SchemaVersion": "1.0", "Actions":[ { "Type": "StartBotConversation", "Parameters": { "CallId": "
call-id-1
", "BotAliasArn": "arn
:aws:lex
:us-east-1
:123456789012
:bot-alias
/ABCDEFGHIH
/MNOPQRSTUV
", "LocaleId": "en_US
", "Configuration": { "SessionState": { "SessionAttributes": { "mykey1": "myvalue1
" }, "DialogAction" : { "Type": "ElicitIntent
" } }, "WelcomeMessages": [ { "Content": "Welcome. How can I help you?
", "ContentType": "PlainText
" } ] } } } ] }
處理ACTION_SUCCESSFUL事件
下列範例顯示StartBotConversation
動作的典型ACTION_SUCCESSFUL
事件。
{ "SchemaVersion": "1.0", "Sequence": number, "InvocationEventType": "ACTION_SUCCESSFUL", "ActionData": { "CallId": "
string
", "Type": "StartBotConversation", "Parameters": { // parameters provided in the StartBotConversation action. }, "CallDetails": { // Information about the call associated with the AWS Lambda invocation. }, "IntentResult": { "SessionId": "string
", "SessionState": { "SessionAttributes": { "string": "string
" }, "Intent": { "Name": "string
", "Slots": { "string
": { "Value": { "OriginalValue": "string
", "InterpretedValue": "string
", "ResolvedValues": ["string
"] }, "Values": [] } }, "State": "string
", "ConfirmationState": "string
" } }, "Interpretations": [ { "NluConfidence": { "Score":number
}, "Intent": { "Name": "string
", "Slots": { "string
": { "Value": { "OriginalValue": "string
", "InterpretedValue": "string
", "ResolvedValues": ["string
"] }, "Values": [] } }, "State": "string
", "ConfirmationState": "string
" } } ] } } }
- IntentResult
-
使用者與機器人之間交談的結果。
- SessionId
-
機器人交談工作階段的識別碼。當使用者與您的機器人開始對話時,Amazon Lex 會建立工作階段。工作階段會封裝您的使用者與機器人之間交換的資訊。該
StartBotConversation
動作使用呼叫 ID 作為機器人的SessionId
。您可以使用 Lex PutSessionAPI 修改使用者與機器人之間的工作階段狀態。如需詳細資訊,請參閱 Amazon Lex 開發人員指南中的使用 Amazon Lex V2 API 管理工作階段。 - SessionState
-
使用者的 Amazon Lex v2 工作階段的狀態。
- SessionState.SessionAttributes
-
代表會話特定上下文信息的鍵/值對的映射。此地圖包含在連接至機器人的 Lambda 函數與 PSTN 音訊 Lambda 函數之間傳遞的機器人對話資訊。
- 解釋
-
Amazon Lex 所衍生的意向清單,可能會滿足客戶的話語。
NluConfidence
分數最高的意圖會成為的意圖SessionState
。 - 解釋。 NluConfidence. 分數
-
指出 Amazon Lex v2 對於意圖滿足使用者意圖的信心程度有多大的分數。介於 0.00 和 1.00 之間的範圍。分數越高表示信心越高。
- Intent
-
使用者想要執行的動作。
- Intent.Name
-
意圖的名稱。
- Intent.Slots
-
用於意圖的所有插槽的映射。插槽的名稱對應到插槽的值。如果插槽尚未填滿,則值為 null。
- Intent.Slots.Value
-
插槽的值。
- Intent.Slots.Values
-
使用者為插槽提供的一或多個值的清單。
- Intent.Slots.Value.OriginalValue
-
為插槽輸入的使用者回覆文字。
- Intent.Slots.Value.InterpretedValue
-
說明 — Amazon Lex v2 針對插槽所決定的值。實際值取決於機器人的價值選擇策略設定。您可以選擇使用使用者輸入的值,也可以讓 Amazon Lex v2 選擇
resolvedValues
清單中的第一個值。 - Intent.Slots.Value.ResolvedValues
-
Amazon Lex v2 可為插槽識別的其他值清單。
- Intent.State
-
說明 — 意圖的履行資訊。可能的值如下:
Failed
-Lambda 函數無法實現意圖。Fulfilled
-Lambda 函數實現了意圖。ReadyForFulfillment
-意圖的信息存在,並且您的 Lambda 函數可以實現意圖。
- Intent.ConfirmationState
-
「描述」— 指示意圖的確認。可能的值如下:
「已確認」—「意圖」已履行。
「已拒絕」— 用戶在確認提示中響應了「否」。
無 — 系統未提示使用者進行確認,或系統提示使用者,但未確認或拒絕提示。
處理ACTION_FAILED事件
下列範例顯示StartBotConversation
動作的典型ACTION_FAILED
事件。
{ "SchemaVersion": "1.0", "Sequence": number, "InvocationEventType": "ACTION_FAILED", "ActionData":{ "CallId": "
string
", "Type": "StartBotConversation", "Parameters": { // parameters provided in the StartBotConversation action }, "ErrorType": "string
", "ErrorMessage": "string
" }, "CallDetails":{ } }
- ErrorType
唯一識別錯誤狀況的字串。
- ErrorMessage
錯誤狀況的一般描述。
錯誤代碼
下表列出 Lambda 函數可以在ACTION_FAILED
事件中傳回的錯誤訊息。
錯誤 | 描述 |
---|---|
|
一或多個動作參數無效。錯誤訊息描述了無效的參數。 |
|
執行動作時發生系統錯誤。 |
|
找不到指定的機器人。 |
|
對機器人的訪問被拒絕。 |
|
超出機器人對話服務限制。錯誤訊息描述超過特定服務限制。 |
授予使用機器人的權限
下列範例授與 Amazon Chime 開發套件呼叫 Amazon Lex StartConversationAPI 的權限。您必須明確授予音訊服務權限才能使用您的機器人。服務主體需要條件區塊。條件區塊必須使用全域內容索引鍵AWS:SourceAccount
和AWS:SourceArn
。AWS:SourceAccount
這是您的 AWS 帳戶識別碼。這AWS:SourceArn
是呼叫 Lex 機器人之 PSTN 音訊應用程式的資源 ARN。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowChimePstnAudioUseBot", "Effect": "Allow", "Principal": { "Service": "voiceconnector.chime.amazonaws.com" }, "Action": "
lex:StartConversation
", "Resource": "arn:aws:lex:region
:awsAccountId
:bot-alias/botId
/aliasId
", "Condition": { "StringEquals": { "AWS:SourceAccount": "awsAccountId
" }, "ArnEquals": { "AWS:SourceArn": "arn:aws:voiceconnector:region
:awsAccountId
:sma/smaId
" } } } ] }
設定語音和 DTMF 逾時
您可以在擷取使用者輸入時設定語音和 DTMF 逾時。您可以在與機器人開始交談時透過工作階段屬性設定逾時,並在必要時在 Lex 機器人的 Lambda 函數中覆寫逾時。Amazon Lex 可讓您針對意圖或機器人設定多個插槽。因為您可以指定工作階段屬性套用至意圖和插槽層級,所以您可以指定只有在收集特定類型的輸入時才設定屬性。例如,當您收集帳號時,您可以指定比收集日期更長的逾時時間。您可以在工作階段屬性索引鍵中使用萬用字元。
例如,若要將所有意圖的所有插槽的語音逾時設定為 4000 毫秒,您可以使用:作x-amz-lex:start-timeout-ms:*:*
為工作階段屬性名稱和4000
工作階段屬性值來提供工作階段屬性。如需詳細資訊,請參閱 Amazon Lex 開發人員指南中的設定逾時擷取使用者輸入。
在交談期間使用 DTMF 輸入
Amazon Lex 機器人在交談期間支援語音和鍵盤輸入。機器人會將鍵盤輸入解譯為 DTMF 數字。您可以提示連絡人以井字鍵 (#) 結束輸入,並使用星號鍵 (*) 取消對話。如果您沒有提示客戶使用磅鍵結束輸入,Lex 會在 5 秒後停止等待其他按鍵。
帳單與服務配額
AWS 向您收取下列費用:
用於呼叫的 Amazon Chime SDK。如需詳細資訊,請參閱 Amazon Chime 開發套件定價
。 用於解譯使用者語音的 Amazon Lex。如需詳細資訊,請參閱 Amazon Lex 串流交談定價
。 Amazon Polly 用於合成來自您的機器人的文本響應。如需詳細資訊,請參閱 Amazon Polly 定價
。
您還需要注意以下服務配額:
Amazon Chime 開發套件具有一個服務配額,可用於 PSTN 音訊StartBotConversation動作所能使用的 Amazon Lex 機器人數目上限。如需詳細資訊,請參閱AWS 一般參考資料中的 SIP 中繼和語音配額。
Amazon Lex 擁有每個 Lex 機器人同時進行語音交談數目上限的服務配額。如需增加配額,請聯絡 Amazon Lex 服務團隊。如需詳細資訊,請參閱 Amazon Lex 開發人員指南中的 Amazon Lex 準則和配額。
Amazon Polly 擁有用於合成文字回應的服務配額。如需增加配額,請聯絡 Amazon Polly 服務團隊。如需 Amazon Polly 服務配額的詳細資訊,請參閱 Amazon Polly 開發人員指南中的 Amazon Polly 中的配額。