StartBotConversation - Amazon Chime SDK

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

StartBotConversation

StartBotConversation 動作會在最終使用者和 Amazon Lex v2 機器人之間建立語音對話。使用者提供所需的資訊給機器人。機器人接著會將資訊傳回至公有交換電話網路 (PSTN) Audio Lambda 函數,該函數會執行請求的任務。

例如,機器人可以在對話開始時播放選用的歡迎訊息,以簡短描述 PSTN 音訊 Lambda 函數可執行的任務。使用者和機器人之間的對話會來回進行,直到機器人收集必要的資訊為止。對話結束後,Amazon Chime SDK 會使用動作成功事件叫用您的 PSTN 音訊 Lambda 函數,其中包含機器人收集的資訊。您的 PSTN 音訊 Lambda 函數會處理資訊並執行請求的任務。

Audio Service 與您的使用者提供逼真的對話互動。例如,使用者可以中斷機器人並在音訊提示完成之前回答問題。更重要的是,使用者可以使用語音和 DTMF 數字的任意組合來提供資訊。機器人會等待使用者提供輸入再回應。您可以設定機器人在解譯任何語音輸入之前,等待使用者完成說話的時間。使用者也可以指示機器人在通話期間需要時間擷取其他資訊時等待,例如信用卡號碼。

StartBotConversation 動作會在機器人對話期間使用 Amazon Lex 和 Amazon Polly。適用標準 Amazon Lex 和 Amazon Polly 成本。如需定價詳細資訊,請參閱 Amazon Lex 串流對話定價Amazon Polly 定價頁面。

注意

您無法在橋接通話或已參加 Amazon Chime SDK 會議的通話上執行此動作。

重要

Amazon Lex 和 Amazon Polly 的使用受AWS 服務條款 的約束,包括 AWS Machine Learning和人工智慧服務的特定條款。

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 函數調用 CallID 中參與者CallDetails的 。StartBotConversation 動作使用此 ID 做為機器人的 SessionId。在通話上進行的所有機器人對話都會共用相同的對話工作階段。您可以使用 Amazon Lex API PutSession修改使用者和機器人之間的工作階段狀態。如需詳細資訊,請參閱《Amazon Lex 開發人員指南》中的使用 Amazon Lex v2 API 管理工作階段Amazon Lex

允許的值 – 有效的呼叫 ID。

必要 – 否,如果 ParticipantTag 存在。

預設值 – 無。

ParticipantTag

描述 – 中其中一個已連線參與者ParticipantTagCallDetails

允許的值LEG-A

必要 – 否,如果 CallId 存在。

預設值 – 調用 ParticipantTagcallLeg。如果您指定 ,則忽略CallDetails

BotAliasArn

描述 – Lex 機器人的機器人別名 ARN。您必須在與 PSTN 音訊應用程式相同的 AWS 區域中建立機器人。有效的 Amazon Lex 機器人別名具有此格式:arn:aws:lex:region:awsAccountId:bot-alias/botId/botAliasId,其中 region是機器人所在的 AWS 區域。awsAccountId 是建立 Amazon Lex 機器人的 AWS 帳戶 ID。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 PutSession API 修改使用者和機器人之間的工作階段狀態。如需詳細資訊,請參閱《Amazon Lex 開發人員指南》中的使用 Amazon Lex V2 API 管理工作階段Amazon Lex

SessionState

使用者 Amazon Lex v2 工作階段的狀態。

SessionState.SessionAttributes

代表工作階段特定內容資訊的金鑰/值對映射。映射包含在連接至機器人的 Lambda 函數與 PSTN 音訊 Lambda 函數之間傳遞的機器人對話資訊。

解譯

Amazon Lex 衍生的意圖清單,可滿足客戶的表達用語。NluConfidence 得分最高的意圖會成為 的意圖SessionState

Interpretations.NluConfidence.Score

指出 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 – 意圖的資訊存在,您的 Lambdafunction 可以滿足意圖。

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事件中傳回的錯誤訊息。

錯誤 Description

InvalidActionParameter

一或多個動作參數無效。錯誤訊息說明無效的參數。

SystemException

執行 動作時發生系統錯誤。

ResourceNotFound

找不到指定的機器人。

ResourceAccessDenied

對機器人的存取遭拒。

ActionExecutionThrottled

超過機器人對話服務限制。錯誤訊息說明超過的特定服務限制。

授予使用機器人的許可

下列範例授予 Amazon Chime SDK 呼叫 Amazon Lex StartConversation APIs許可。您必須明確授予 Audio Service 許可才能使用您的機器人。服務主體需要 條件區塊。條件區塊必須使用全域內容索引鍵 AWS:SourceAccountAWS:SourceArnAWS:SourceAccount 是您的 AWS 帳戶 ID。AWS:SourceArn 是叫用 Lex 機器人的 PSTN 音訊應用程式的資源 ARN。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowChimePstnAudioUseBot", "Effect": "Allow", "Principal": { "Service": "voiceconnector.chime.amazonaws.com" }, "Action": "lex:StartConversation", "Resource": "arn:aws:lex:us-east-1:123456789012:bot-alias/botId/aliasId", "Condition": { "StringEquals": { "AWS:SourceAccount": "123456789012" }, "ArnEquals": { "AWS:SourceArn": "arn:aws:chime:us-east-1:123456789012: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 具有可搭配 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 中的配額Amazon Polly