Amazon Connect
通过 Amazon Connect 原生的第三方 AI 智能体(A2A)集成,将 Amazon Connect 语音联络转交给 ElevenAgents。
Amazon Connect 集成目前处于有限可用状态。必须先为 AWS 账户启用 Amazon Connect 的第三方 AI 智能体 支持,并且需按工作区启用 ElevenLabs 传输。路由客户流量前,请联系 ElevenLabs 代表。
概述
Amazon Connect 集成通过 Amazon Connect 的第三方 AI 智能体协议(开放式 A2A protocol 的扩展),将 Amazon Connect 联络流程直接连接至 ElevenAgents 中的智能体。Amazon Connect 负责电话、路由和队列;ElevenAgents 负责对话。无需 SIP 中继、Twilio 号码或中间件。AWS 在 智能体间协作中记录了此功能; 本指南涵盖 ElevenLabs 的具体配置,以及连接 ElevenLabs 智能体所需的 AWS 步骤。
同一流程适用于呼入和通过 StartOutboundVoiceContact 发起的呼出联络。
ElevenLabs 智能体结束后,Amazon Connect 会继续执行联络流程,并根据接收的结果进行分支。
集成的工作方式
- 联络流程到达一个 Get customer input 模块,该模块使用
AMAZON.QInConnectIntent意图调用 Amazon Lex V2 机器人。 - Amazon Connect 的编排 AI 智能体会立即将对话转交给为 ElevenLabs 注册的第三方应用程序。
- Amazon Connect 会通过应用程序
AccessUrl中的 ElevenLabs 端点打开 WebSocket, 并使用存储在 AWS Secrets Manager 中的 API 密钥进行身份验证。 - Amazon Connect 发出提示,表明来电者的渠道已就绪,然后 Amazon Connect 和 ElevenLabs 通过 A2A 消息交换 16 位线性 PCM 音频。Amazon Connect 提议采样率,ElevenLabs 会采用该采样率, 因此无需更改智能体上的音频格式。
- 智能体结束通话或将来电者转交给人工客服时,ElevenLabs 会以
Complete或Escalate结果结束会话,流程将从 Lex 模块继续;请参阅 转交给人工客服。
要求
开始前,请确保具备:
- 使用 Connect Customer 层级的 Amazon Connect 实例,且账户和 Region 已启用第三方 AI 智能体支持。
- 与该实例关联的 Amazon Q in Connect 助手。
- 可创建 KMS 密钥、Secrets Manager 密钥、AppIntegrations 应用程序、 Connect 安全配置文件、Amazon Q in Connect AI 智能体、Lex V2 机器人和联络流程的 AWS 权限。
- 已启用 Amazon Connect 传输的 ElevenLabs 工作区。
- 一个 ElevenLabs 智能体和专用 API 密钥。
- AWS CLI v2 和 awscurl(
pip install awscurl),用于调用 尚未在发布版 CLI 中提供请求结构的接口。
所有 AWS 资源必须与 Amazon Connect 实例位于同一账户和 Region。以下步骤会在 AWS CLI 支持调用时使用 AWS CLI,
在不支持时使用 awscurl(经 SigV4 签名的 HTTP 请求)。这些步骤遵循 AWS 的设置与外部 AI
智能体协作,并添加
ElevenLabs 特有的值。
配置 ElevenLabs
启用 End call
在 Agent → Tools → System tools 中启用 End call,以便智能体在解决来电者请求后结束会话。
随后 Amazon Connect 会以 Complete 结果继续执行流程。
添加 Amazon Connect 转接规则(可选)
若要让智能体将来电者转交给人工客服,请为其添加 Transfer to number 系统工具,并配置一个提供商配置为
amazon_connect 的转接规则。该规则没有目标地址:会话会以 Escalate 结果结束,由联络流程选择队列。转接规则
通过 API 配置。使用 PATCH 将工具添加到智能体:
请发送智能体完整的 built_in_tools 对象,包括已有的工具,例如 end_call。
智能体会根据其 condition 选择规则;其返回的选项是固定令牌
amazon_connect,因此每个工具只需一个 Amazon Connect 规则。为其他提供商配置的电话号码和 SIP URI
不会在 Amazon Connect 通话中提供。
转接规则由 API 管理。对于使用此类规则的智能体,请如上所述通过 API 配置和更新 Transfer to number 工具; 控制台的工具编辑器适用于按号码配置的转接列表。
创建专用 API 密钥
在与智能体相同的工作区中创建 API 密钥,并将其限定用于 ElevenAgents。下一部分会将其存储在 AWS Secrets Manager 中; 请勿将其粘贴到其他位置。
记录 WebSocket URL
Amazon Connect 连接的 URL 包含智能体 ID:
如果 ElevenLabs 账户使用独立的数据驻留环境,请将 <region> 替换为所在区域代码。有关可用
区域,请参阅数据驻留。
在 AWS 中注册 ElevenLabs 应用
本节所有操作均通过 API 调用完成。先设置后续会重复使用的值:
存储 API 密钥
Amazon Connect 使用自己的服务主体从 Secrets Manager 读取密钥,因此密钥必须使用授予 connect.amazonaws.com 解密权限的客户托管 KMS 密钥加密。不能使用默认的 aws/secretsmanager 密钥。
将 ElevenLabs API 密钥保存到文件中,避免它出现在 shell 历史记录中,然后创建密钥和密钥:
授予 Amazon Connect 对密钥的读取权限:

创建第三方应用
将 ElevenLabs WebSocket URL 注册为类型为 A2A_SERVER 的 AppIntegrations 应用。此类型必须配置 AuthConfig。
响应中包含应用的 Id 和 Arn;将它们导出为 APPLICATION_ID 和 APPLICATION_ARN。Amazon Connect 控制台不会列出 A2A_SERVER 应用,因此请通过 API 验证:
在安全配置文件中允许该应用
附加到编排 AI 智能体的安全配置文件必须在允许的 AI 智能体中列出该应用,否则运行时交接会失败。
管理网站会显示配置文件及其权限,但不会显示允许的 AI 智能体;这些信息只能通过 API 查看。

创建并发布编排 AI 智能体
编排智能体会立即将每段语音对话交给应用处理,并启用音频流。语音会话需要立即交接;ElevenLabs 不支持文本流(audioStreamingEnabled 设为 false)和 delegateAgentConfiguration。音频立即交接编排器还必须在 toolConfigurations 中声明类型为 RETURN_TO_CONTROL 的保留 Complete 工具;否则创建请求会失败,并显示 An audio frontline orchestrator (with an audio immediate handoff) must configure the reserved 'Complete' RETURN_TO_CONTROL tool。
发布会返回带版本的 ARN(<AI_AGENT_ARN>:1);联系流会引用它。将安全配置文件附加到未带版本和带版本的智能体:

构建联系流
创建 Lex 机器人
- 创建一个 Lex V2 机器人,其唯一意图为内置
AMAZON.QInConnectIntent,并配置助手 ARN。不要添加其他意图。 - 在机器人区域设置中启用语音转语音。双向音频流仅适用于 Sonic 语音转语音机器人。
- 允许机器人的 IAM 角色使用该助手。否则,交接会在任何请求到达 ElevenLabs 前于 AWS 内部失败,并显示
HTTP 403。附加类似以下策略:
- 构建机器人,创建版本和别名,并将别名关联到实例:

添加助手和 Lex 模块
在流设计器中,按以下顺序添加模块:
- 设置日志记录行为:启用。通过流日志验证下面的交接。
- 连接助手:选择 Amazon Q in Connect 助手。
- 获取客户输入:在 Amazon Lex 标签中选择 输入 ARN,然后粘贴机器人别名 ARN。将文本转语音提示保留为一个空格,以便 Amazon Connect 在交接前不播放任何内容。在 会话属性 下,手动添加两个属性:

x-amz-lex:qic-audio-passthrough 在 AWS 预发布期间控制第三方语音路径。AWS 表示该功能公开后不再需要此属性;保留它也不会有影响。
按结果分支
Amazon Connect 会将 ElevenLabs 的结果以 $.Lex.SessionAttributes.Tool 属性形式提供给流。在 Lex 模块后添加 检查联系属性 模块,将 命名空间 设为 Lex、键 设为 会话属性、会话属性键 设为 Tool,然后为每个结果添加一个 等于 条件,并将 无匹配 路由至错误提示:

Amazon Connect 将结果写为标题格式(Escalate、Complete),而不是在线路中发送的全大写结束类型,因此模块只需这两个条件。交接后失败的会话会以 COMPLETE_WITH_ERROR 类型结束;Lex 模块随后会采用其 错误 输出,或比较会落入 无匹配,因此两者都应路由到错误提示。在导出的流中,Lex 模块的 默认 输出是其 NoMatchingCondition 转换;请确保它通向比较模块,而非错误消息。

测试集成
动态变量
Amazon Connect 会在每个会话中发送联系人的系统属性。ElevenLabs 会将它们以及会话标识符作为动态变量提供:
在 Amazon Connect 会话中,无论呼入还是呼出联系,system__caller_id 始终是客户,system__called_number 始终是 Amazon Connect 号码。
Amazon Connect 发送的联系上下文中的其他成员也会以相同方式提供:嵌套名称以连字符连接并转换为 snake case,置于 amazon_connect_ 前缀下。即使 AI 智能体的安全配置文件可查看联系属性,通过 设置联系属性 在流中设置的自定义联系属性也不属于 Amazon Connect 当前发送的上下文;如果 AWS 开始包含它们,它们会自动以相同前缀出现。无法选择 Amazon Connect 共享哪些联系数据;AWS 会传递一组固定上下文。
如需传递额外上下文,请使用对话发起 webhook。对于 Amazon Connect 会话,webhook 会在智能体发言前调用,其中 caller_id 设为客户号码、called_number 设为 Amazon Connect 号码、call_id 设为 Amazon Connect 联系 ID。因此,流中的 Lambda 可以按联系 ID 存储联系属性,而 webhook 可将它们作为动态变量和配置覆盖项返回。
转接人工
如配置 ElevenLabs所示,为智能体提供带有 amazon_connect 转接规则的 转接至号码 系统工具。满足规则条件时,智能体会调用该工具,ElevenLabs 将以 Escalate 结果及智能体提供的原因结束会话。随后,流的 Escalate 分支会通过 设置工作队列 和 转接至队列 处理该联系。规则不包含目标位置,因此由流而非智能体选择队列;队列处理、耳语流和客服选择仍由 Amazon Connect 负责。
结束通话 工具会产生 Complete 结果。无论哪种结果,通话后分析和通话后 webhook 都会照常运行。
向人工客服提供摘要
Amazon Connect 仅向流提供结果:$.Lex.SessionAttributes.Tool(以及 Lex 意图名称)包含 Escalate,ElevenLabs 会话中的其他信息,包括转接原因,都不会传递给流。若要向接听电话的人工客服简要说明情况,请自行将摘要存储在联系中,并让客服耳语流读出:
-
提供一个调用 Amazon Connect
UpdateContactAttributesAPI 的端点。HTTP API 后的精简 Lambda 即可;调用方必须拥有实例联系的connect:UpdateContactAttributes权限: -
为智能体提供一个webhook 工具,该工具向端点
POST请求,其中contact_id从amazon_connect_contact_id动态变量填充,summary由模型撰写。将共享密钥保存在工作区密钥中,并将其作为请求标头发送。在系统提示词中,指示智能体先调用该工具,只有在其返回后才调用 转接至号码;若模型在同一轮中同时发出两个调用,转接会与摘要写入发生竞争。根据我们的测试,遵循该指示后,属性会在智能体请求约 1 秒后写入联系,比 Amazon Connect 恢复流早 3 秒。 -
在联系流的
Escalate分支中,在 转接至队列 前添加 设置耳语流 模块,使其指向一个客服耳语流,该流的 播放提示 读取$.Attributes.handoff_summary。当呼叫者听取队列处理时,Amazon Connect 会向人工客服播放该内容,然后接通双方。不要在流后续模块中再次设置handoff_summary:那里的空值会覆盖端点写入的内容。
同一属性也可供 检查联系属性 模块用于路由决策。通话后 webhook 会在流已继续执行后才触发,因此适合 CRM 更新,而不适合路由决策。
跟踪
Amazon Connect 要求外部智能体为每次协作发送跟踪数据。当 Amazon Connect 订阅会话跟踪时,ElevenLabs 会为每个智能体轮次发送一个 OpenTelemetry 跟踪,其中包含呼叫者的转录文本、智能体响应、每次工具调用及其结果,以及每个跨度的耗时。Amazon Connect 会将这些跟踪与联系一起存储;有关查看方式,请参阅 AI 智能体跟踪。这些跟踪中的转录文本和工具结果适用与 Amazon Connect 中其他联系数据相同的脱敏设置,因此启用集成前请审查数据处理要求。与通话后 webhook一样,跟踪会传送至你自己的系统:处于零保留模式的智能体仍会发送跟踪,因为零保留模式管理的是 ElevenLabs 存储的内容,而不是 Amazon Connect 实例接收的内容。
音频
Amazon Connect 会在每个会话中提议使用 8、16 或 24 kHz 的 16 位单声道线性 PCM,ElevenLabs 会采用该提议,因此智能体配置的音频格式不适用于 Amazon Connect 会话。ElevenLabs 会检测呼叫者插话,并向 Amazon Connect 报告,使缓冲播放立即清除。Amazon Connect 收集的按键输入会以 DTMF 数字形式传送给智能体。Amazon Connect 自身的静音标记会被忽略;请使用智能体的轮次超时重新提示安静的呼叫者。
限制和不支持的功能
- 不支持客户端工具和 播放键盘触摸音 系统工具。转接至号码 仅可通过 Amazon Connect 转接规则使用:智能体无法从 Amazon Connect 通话中拨打电话号码或 SIP URI,且由流决定升级呼叫者将进入哪个队列。
- 数据收集结果不会返回至流,且由 Amazon Connect 决定共享哪些联系数据。额外上下文请使用以
amazon_connect_contact_id为键的对话发起 webhook;路由数据请使用调用UpdateContactAttributes的 webhook 工具;其他所有内容请使用通话后 webhook。 - 无法从流中传递
system__override_first_message等配置覆盖项。请改为从对话发起 webhook 返回它们。 - 语音会话需要立即交接。不支持 Amazon Connect 聊天渠道、文本流和后台(
delegateAgentConfiguration)协作。 - 发送至 Amazon Connect 的跟踪涵盖呼叫者转录文本、智能体响应、工具调用及其结果和时序。不包含工具调用参数。
- Amazon Connect 的第三方智能体支持仅在 AWS 启用该功能的区域提供,并且可能产生额外 AWS 费用。
故障排除
流程失败并显示“A2A WebSocket upgrade ... failed (HTTP 403)”
- 此错误在请求到达 ElevenLabs 前由 AWS 内部引发。请在 CloudTrail 中检查 Lex 服务角色是否出现
wisdom:SendMessage的AccessDenied:附加到机器人的角色需要对助手及其会话拥有wisdom:CreateSession、wisdom:GetAssistant、wisdom:SendMessage和wisdom:GetNextMessage权限。 - 确认安全配置文件允许该应用,并且已关联到流程引用的已发布编排智能体版本。
- 确认密钥的 KMS 密钥和资源策略已授予
connect.amazonaws.com访问权限。
流程失败并显示“the hand-off to the target agent could not be completed”
- Amazon Connect 为建立 WebSocket 连接预留约 20 秒。确认 AWS 可以访问
AccessUrl:使用wss://、智能体 ID 正确,且未被网络允许列表阻拦。 - 如果通过自有基础设施代理连接,请保持代理预热。冷启动的无服务器实例可能需要超过交接窗口的时间,Amazon Connect 会在 ElevenLabs 收到请求前放弃。
Lex 模块进入 Error 分支,来电者听不到任何内容
- 确认 Get customer input 模块上已设置这两个会话属性:
x-amz-lex:q-in-connect:ai-agent-arn应使用已发布且带版本号的智能体 ARN,x-amz-lex:qic-audio-passthrough应设为true。 - 确认允许该应用的安全配置文件已附加到该智能体版本。
- 查看流程日志中该模块的条目,其中包含 Amazon Connect 遇到的错误。
连接后会话立即结束
- 确认
AccessUrl使用wss://、包含正确的智能体 ID,并指向工作区所在区域。 - 确认 API 密钥处于活跃状态、属于智能体所在工作区,且没有 IP 限制。
- 确认工作区已启用 Amazon Connect 传输方式。
智能体结束后,来电者听到流程的错误提示
在 Lex 模块中,确保 Default 输出通向比较
$.Lex.SessionAttributes.Tool 的模块,并与标题格式的值 Escalate 和
Complete 进行比较。
智能体始终不说话,几秒后会话结束
确认协作者已配置 audioStreamingEnabled 为 true。使用文本
流式传输时,Amazon Connect 会发送文本轮次并期待文本响应,而 ElevenLabs 不支持此方式;ElevenLabs 日志会显示 INIT_SESSION carries no audio configuration。
缺少动态变量
Amazon Connect 会提供上述联系系统属性和标识符。在流程中设置的自定义联系 属性无法传递给智能体;请改为通过会话启动 webhook 传递。如果智能体的首条消息或提示词引用了从未 提供的变量,会话会在启动时失败。
