StartBotConversation - Amazon Chime SDK

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

StartBotConversation

StartBotConversation 操作可在最终用户和您的 Amazon Lex v2 机器人之间建立语音对话。用户向机器人提供所需的信息。然后,机器人将信息返回到公共交换电话网 (PSTN) Audio Lambda 函数,然后该函数执行请求的任务。

例如,机器人可以在对话开始时播放欢迎消息(可选),以简要描述 PSTN Audio Lambda 函数可以执行的任务。对话在用户和机器人之间来回进行,直到机器人收集到所需的信息。对话结束后,Amazon Chime SDK 会通过操作成功事件调用您的 PSTN Audio Lambda 函数,该事件包含机器人收集的信息。您的 PSTN Audio Lambda 函数处理信息并执行请求的任务。

音频服务为您的用户提供逼真的对话互动。例如,用户可以在音频提示结束之前打断机器人并回答问题。此外,用户还可以使用语音和 DTMF 数字的任意组合来提供信息。机器人会等待用户提供输入后再做出响应。您可以配置机器人等待用户完成讲话后多久开始解释任何语音输入。用户还可以指示机器人在通话期间需要时间来检索其他信息(例如信用卡号)时等待。

在机器人对话期间,StartBotConversation 操作使用 Amazon Lex 和 Amazon Polly。适用 Amazon Lex 和 Amazon Polly 的标准费用。有关更多定价信息,请参阅 Amazon Lex 流传输对话定价Amazon Polly 定价页面。

注意

您无法对桥接呼叫或已加入 Amazon Chime SDK 会议的呼叫执行此操作。

重要

使用 Amazon Lex 和 Amazon Polly 须遵守AWS 服务条款,包括 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参与者的描述。CallIDStartBotConversation 操作使用此 ID 作为机器人的 SessionId。呼叫中发生的所有机器人对话共享相同的对话会话。您可以使用 Amazon Lex PutSession API 修改您的用户和机器人之间的会话状态。有关更多信息,请参阅 Amazon Lex 开发人员指南中的使用 Amazon Lex v2 API 管理会话

允许的值 — 有效的调用 ID。

必填 — 否,如 ParticipantTag 已存在。

默认值 — 无。

ParticipantTag

描述CallDetails 中一个已连接参与者的 ParticipantTag

允许的值LEG-A

必填 — 否,如 CallId 已存在。

默认值 — 被调用的 callLegParticipantTag。如果您指定 CallDetails,则忽略该值。

BotAliasArn

描述 — 您的 Lex 机器人的机器人别名 ARN。您必须在与您的 PSTN Audio 应用程序相同的 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 字符串表示形式总大小限制为 10KB。

允许的值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.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 事件中可能返回的错误消息。

错误 描述

InvalidActionParameter

一个或多个操作参数无效。错误消息描述无效参数。

SystemException

运行操作时出现系统错误。

ResourceNotFound

未找到指定机器人。

ResourceAccessDenied

对存储桶的访问被拒绝。

ActionExecutionThrottled

已超出机器人对话服务限制。错误消息描述特定服务限制已超出。

授予使用机器人的权限

以下示例授予亚马逊 Chime 软件开发工具包调用 Amazon Lex StartConversationAPI 的权限。您必须明确授予音频服务使用您的机器人的权限。服务主体必须使用条件数据块。条件数据块必须使用全局上下文键 AWS:SourceAccountAWS:SourceArnAWS:SourceAccount 是您的 AWS 账户 ID。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 超时。您还可以在开始与机器人对话时通过会话属性配置超时,并在必要时在 Lambda 函数中将其覆盖。Amazon Lex 可以为意图或机器人设置多个插槽。由于您可以指定会话属性应用于意图和时隙级别,因此可以指定仅在收集特定类型的输入时设置该属性。例如,您可以在收集账号时指定比收集日期时更长的超时。您可以在会话属性键中使用通配符。

例如,要将所有意图的所有插槽的语音超时设置为 4000 毫秒,您可以使用 x-amz-lex:start-timeout-ms:*:* 作为会话属性名称和 4000 作为会话属性值来提供会话属性。有关更多信息,请参阅 Amazon Lex 开发人员指南中的配置捕获用户输入的超时时间

在对话期间使用 DTMF 输入

Amazon Lex 机器人支持对话期间的语音和键盘输入。机器人将键盘输入解释为 DTMF 数字。您可以使用井号键 (#) 提示联系人结束输入,并使用星号键 (*) 取消会话。如果您未提示客户使用井号键结束输入,Lex 将在其他按键操作 5 秒钟后停止等待。

账单和服务限额

AWS 向您收取以下费用:

此外,您还需要了解以下服务限额:

  • Amazon Chime SDK 的服务配额是你可以在 PSTN Audio 操作中使用的最大数量的 Amazon Lex 机器人。StartBotConversation有关更多信息,请参阅《AWS 一般参考》中的 SIP 中继和语音配额

  • Amazon Lex 对每个 Lex 机器人的最大并发语音对话数都有服务限额。如需增加限额,您可以联系 Amazon Lex 服务团队。有关更多信息,请参阅 Amazon Lex 开发人员指南中的 Amazon Lex 指南和限额

  • Amazon Polly 具有用于合成文本响应的服务限额。如需增加限额,您可以联系 Amazon Polly 服务团队。有关 Amazon Polly 服务限额的更多信息,请参阅 Amazon Polly 开发人员指南中的 Amazon Polly 中的限额