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 会继续执行联络流程,并根据接收的结果进行分支。

集成的工作方式

  1. 联络流程到达一个 Get customer input 模块,该模块使用 AMAZON.QInConnectIntent 意图调用 Amazon Lex V2 机器人。
  2. Amazon Connect 的编排 AI 智能体会立即将对话转交给为 ElevenLabs 注册的第三方应用程序。
  3. Amazon Connect 会通过应用程序 AccessUrl 中的 ElevenLabs 端点打开 WebSocket, 并使用存储在 AWS Secrets Manager 中的 API 密钥进行身份验证。
  4. Amazon Connect 发出提示,表明来电者的渠道已就绪,然后 Amazon Connect 和 ElevenLabs 通过 A2A 消息交换 16 位线性 PCM 音频。Amazon Connect 提议采样率,ElevenLabs 会采用该采样率, 因此无需更改智能体上的音频格式。
  5. 智能体结束通话或将来电者转交给人工客服时,ElevenLabs 会以 Complete 或 Escalate 结果结束会话,流程将从 Lex 模块继续;请参阅 转交给人工客服。

要求

开始前,请确保具备:

  1. 使用 Connect Customer 层级的 Amazon Connect 实例,且账户和 Region 已启用第三方 AI 智能体支持。
  2. 与该实例关联的 Amazon Q in Connect 助手。
  3. 可创建 KMS 密钥、Secrets Manager 密钥、AppIntegrations 应用程序、 Connect 安全配置文件、Amazon Q in Connect AI 智能体、Lex V2 机器人和联络流程的 AWS 权限。
  4. 已启用 Amazon Connect 传输的 ElevenLabs 工作区。
  5. 一个 ElevenLabs 智能体和专用 API 密钥。
  6. AWS CLI v2 和 awscurl(pip install awscurl),用于调用 尚未在发布版 CLI 中提供请求结构的接口。

所有 AWS 资源必须与 Amazon Connect 实例位于同一账户和 Region。以下步骤会在 AWS CLI 支持调用时使用 AWS CLI, 在不支持时使用 awscurl(经 SigV4 签名的 HTTP 请求)。这些步骤遵循 AWS 的设置与外部 AI 智能体协作,并添加 ElevenLabs 特有的值。

配置 ElevenLabs

1

创建或选择智能体

在 ElevenAgents 中创建智能体。如果希望交接完成后立即说话,请为其设置首条消息; Amazon Connect 在会话期间不会自行播放任何内容。

2

启用 End call

在 Agent → Tools → System tools 中启用 End call,以便智能体在解决来电者请求后结束会话。 随后 Amazon Connect 会以 Complete 结果继续执行流程。

3

添加 Amazon Connect 转接规则(可选)

若要让智能体将来电者转交给人工客服,请为其添加 Transfer to number 系统工具,并配置一个提供商配置为 amazon_connect 的转接规则。该规则没有目标地址:会话会以 Escalate 结果结束,由联络流程选择队列。转接规则 通过 API 配置。使用 PATCH 将工具添加到智能体:

curl -X PATCH "https://api.elevenlabs.io/v1/convai/agents/agent_7101k5zvyjhmfg983brhmhkd98n6" \
-H "xi-api-key: $ELEVENLABS_API_KEY" -H "Content-Type: application/json" \
-d '{
"conversation_config": {"agent": {"prompt": {"built_in_tools": {
"end_call": {"type": "system", "name": "end_call", "description": "",
"params": {"system_tool_type": "end_call"}},
"transfer_to_number": {
"type": "system", "name": "transfer_to_number", "description": "",
"params": {
"system_tool_type": "transfer_to_number",
"transfers": [],
"transfer_rules": [{
"condition": "the caller asks to speak with a human",
"provider_configs": [
{"type": "amazon_connect", "config": {"type": "amazon_connect_escalate"}}
]
}]
}
}
}}}}
}'

请发送智能体完整的 built_in_tools 对象,包括已有的工具,例如 end_call。 智能体会根据其 condition 选择规则;其返回的选项是固定令牌 amazon_connect,因此每个工具只需一个 Amazon Connect 规则。为其他提供商配置的电话号码和 SIP URI 不会在 Amazon Connect 通话中提供。

转接规则由 API 管理。对于使用此类规则的智能体,请如上所述通过 API 配置和更新 Transfer to number 工具; 控制台的工具编辑器适用于按号码配置的转接列表。

4

创建专用 API 密钥

在与智能体相同的工作区中创建 API 密钥,并将其限定用于 ElevenAgents。下一部分会将其存储在 AWS Secrets Manager 中; 请勿将其粘贴到其他位置。

5

记录 WebSocket URL

Amazon Connect 连接的 URL 包含智能体 ID:

环境AccessUrl
默认wss://api.elevenlabs.io/v1/convai/conversation/amazon-connect/agent_7101k5zvyjhmfg983brhmhkd98n6
数据驻留wss://api.<region>.residency.elevenlabs.io/v1/convai/conversation/amazon-connect/agent_7101k5zvyjhmfg983brhmhkd98n6

如果 ElevenLabs 账户使用独立的数据驻留环境,请将 <region> 替换为所在区域代码。有关可用 区域,请参阅数据驻留。

在 AWS 中注册 ElevenLabs 应用

本节所有操作均通过 API 调用完成。先设置后续会重复使用的值:

export AWS_REGION=<REGION> # Region of your Amazon Connect instance
export ACCOUNT_ID=<ACCOUNT_ID>
export INSTANCE_ID=<INSTANCE_ID> # Amazon Connect instance ID
export INSTANCE_ARN=arn:aws:connect:$AWS_REGION:$ACCOUNT_ID:instance/$INSTANCE_ID
export AGENT_ID=<AGENT_ID> # ElevenLabs agent ID
1

创建 Amazon Q in Connect 助手

如果实例已有助手,请跳过此步骤。否则,创建一个助手并将其关联到实例:

aws qconnect create-assistant --name elevenlabs-assistant --type AGENT --region $AWS_REGION
aws connect create-integration-association --instance-id $INSTANCE_ID \
--integration-type WISDOM_ASSISTANT --integration-arn <ASSISTANT_ARN> --region $AWS_REGION

记录助手 ID 和 ARN。

2

存储 API 密钥

Amazon Connect 使用自己的服务主体从 Secrets Manager 读取密钥,因此密钥必须使用授予 connect.amazonaws.com 解密权限的客户托管 KMS 密钥加密。不能使用默认的 aws/secretsmanager 密钥。

kms-key-policy.json
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AccountAdmin",
"Effect": "Allow",
"Principal": { "AWS": "arn:aws:iam::<ACCOUNT_ID>:root" },
"Action": "kms:*",
"Resource": "*"
},
{
"Sid": "AllowConnectDecrypt",
"Effect": "Allow",
"Principal": { "Service": "connect.amazonaws.com" },
"Action": ["kms:Decrypt", "kms:DescribeKey"],
"Resource": "*"
}
]
}

将 ElevenLabs API 密钥保存到文件中,避免它出现在 shell 历史记录中,然后创建密钥和密钥:

KMS_KEY_ID=$(aws kms create-key --description "ElevenLabs agent API key" \
--policy file://kms-key-policy.json --region $AWS_REGION \
--query KeyMetadata.KeyId --output text)
SECRET_ARN=$(aws secretsmanager create-secret --name elevenlabs/agent-api-key \
--kms-key-id "$KMS_KEY_ID" --secret-string file://elevenlabs-api-key.txt \
--region $AWS_REGION --query ARN --output text)
rm elevenlabs-api-key.txt

授予 Amazon Connect 对密钥的读取权限:

secret-resource-policy.json
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowConnectRead",
"Effect": "Allow",
"Principal": { "Service": "connect.amazonaws.com" },
"Action": ["secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret"],
"Resource": "<SECRET_ARN>"
}
]
}
aws secretsmanager put-resource-policy --secret-id "$SECRET_ARN" \
--resource-policy file://secret-resource-policy.json --region $AWS_REGION

使用客户托管密钥加密的 Secrets Manager 密钥及其面向
connect.amazonaws.com 的资源策略

3

创建第三方应用

将 ElevenLabs WebSocket URL 注册为类型为 A2A_SERVER 的 AppIntegrations 应用。此类型必须配置 AuthConfig。

create-application.json
{
"Name": "elevenlabs-agent",
"Namespace": "elevenlabs-agent",
"Description": "ElevenLabs agent over the Amazon Connect A2A extension",
"ApplicationType": "A2A_SERVER",
"ApplicationSourceConfig": {
"ExternalUrlConfig": {
"AccessUrl": "wss://api.elevenlabs.io/v1/convai/conversation/amazon-connect/<AGENT_ID>"
}
},
"AuthConfig": {
"AuthType": "API_KEY",
"CredentialProviderIdentifier": "<SECRET_ARN>"
}
}
awscurl --service app-integrations --region $AWS_REGION -X POST \
-H 'Content-Type: application/json' --data @create-application.json \
"https://app-integrations.$AWS_REGION.amazonaws.com/applications"

响应中包含应用的 Id 和 Arn;将它们导出为 APPLICATION_ID 和 APPLICATION_ARN。Amazon Connect 控制台不会列出 A2A_SERVER 应用,因此请通过 API 验证:

aws appintegrations get-application --arn "$APPLICATION_ARN" --region $AWS_REGION
4

将应用关联到实例

awscurl --service connect --region $AWS_REGION -X PUT -H 'Content-Type: application/json' \
--data "{\"IntegrationArn\": \"$APPLICATION_ARN\", \"IntegrationType\": \"APPLICATION\"}" \
"https://connect.$AWS_REGION.amazonaws.com/instance/$INSTANCE_ID/integration-associations"
aws connect list-integration-associations --instance-id $INSTANCE_ID \
--integration-type APPLICATION --region $AWS_REGION
5

在安全配置文件中允许该应用

附加到编排 AI 智能体的安全配置文件必须在允许的 AI 智能体中列出该应用,否则运行时交接会失败。

SECURITY_PROFILE_ID=$(aws connect create-security-profile --instance-id $INSTANCE_ID \
--security-profile-name elevenlabs-a2a --permissions QConnectAIAgents.View Wisdom.View \
--region $AWS_REGION --query SecurityProfileId --output text)
awscurl --service connect --region $AWS_REGION -X POST -H 'Content-Type: application/json' \
--data "{\"AllowedAIAgents\": [{\"Arn\": \"$APPLICATION_ARN\", \"Type\": \"THIRD_PARTY\"}]}" \
"https://connect.$AWS_REGION.amazonaws.com/security-profiles/$INSTANCE_ID/$SECURITY_PROFILE_ID"

管理网站会显示配置文件及其权限,但不会显示允许的 AI 智能体;这些信息只能通过 API 查看。

Amazon Connect 管理网站中的专用安全配置文件,具有 AI 智能体查看
权限

6

创建并发布编排 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。

create-ai-agent.json
{
"name": "elevenlabs-handoff",
"type": "ORCHESTRATION",
"visibilityStatus": "PUBLISHED",
"configuration": {
"orchestrationAIAgentConfiguration": {
"connectInstanceArn": "<INSTANCE_ARN>",
"locale": "en_US",
"multiAgentConfigurations": [
{
"handoffAgentConfiguration": {
"agentTarget": { "applicationId": "<APPLICATION_ARN>" },
"instruction": {
"instruction": "Immediately hand off every voice conversation to the ElevenLabs agent."
},
"audioStreamingEnabled": true,
"immediateHandoff": true
}
}
],
"toolConfigurations": [
{
"toolName": "Complete",
"toolType": "RETURN_TO_CONTROL",
"description": "Close the conversation when the customer has no more questions.",
"instruction": {
"instruction": "Mark the conversation as complete when the customer has no additional questions or needs."
},
"inputSchema": {
"type": "object",
"properties": {
"reason": { "type": "string", "description": "Reason for completion" }
},
"required": ["reason"]
},
"userInteractionConfiguration": { "isUserConfirmationRequired": false }
}
]
}
}
}
awscurl --service wisdom --region $AWS_REGION -X POST -H 'Content-Type: application/json' \
--data @create-ai-agent.json \
"https://wisdom.$AWS_REGION.amazonaws.com/assistants/<ASSISTANT_ID>/aiagents"
aws qconnect create-ai-agent-version --assistant-id <ASSISTANT_ID> \
--ai-agent-id <AI_AGENT_ID> --region $AWS_REGION

发布会返回带版本的 ARN(<AI_AGENT_ARN>:1);联系流会引用它。将安全配置文件附加到未带版本和带版本的智能体:

for ARN in <AI_AGENT_ARN> <AI_AGENT_ARN>:1; do
aws connect associate-security-profiles --instance-id $INSTANCE_ID --entity-arn "$ARN" \
--entity-type AI_AGENT --security-profiles Id=$SECURITY_PROFILE_ID --region $AWS_REGION
done

AI 智能体设计器中的编排 AI 智能体,已附加专用安全配置文件

构建联系流

1

创建 Lex 机器人

  1. 创建一个 Lex V2 机器人,其唯一意图为内置 AMAZON.QInConnectIntent,并配置助手 ARN。不要添加其他意图。
  2. 在机器人区域设置中启用语音转语音。双向音频流仅适用于 Sonic 语音转语音机器人。
  3. 允许机器人的 IAM 角色使用该助手。否则,交接会在任何请求到达 ElevenLabs 前于 AWS 内部失败,并显示 HTTP 403。附加类似以下策略:
lex-role-policy.json
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["wisdom:CreateSession", "wisdom:GetAssistant"],
"Resource": ["<ASSISTANT_ARN>", "<ASSISTANT_ARN>/*"]
},
{
"Effect": "Allow",
"Action": ["wisdom:SendMessage", "wisdom:GetNextMessage"],
"Resource": "arn:aws:wisdom:<REGION>:<ACCOUNT_ID>:session/<ASSISTANT_ID>/*"
}
]
}
  1. 构建机器人,创建版本和别名,并将别名关联到实例:
aws connect associate-bot --instance-id $INSTANCE_ID \
--lex-v2-bot AliasArn=<LEX_ALIAS_ARN> --region $AWS_REGION

Lex V2 机器人意图列表,包含 Q in Connect 交接意图和内置回退
意图

2

添加助手和 Lex 模块

在流设计器中,按以下顺序添加模块:

  1. 设置日志记录行为:启用。通过流日志验证下面的交接。
  2. 连接助手:选择 Amazon Q in Connect 助手。
  3. 获取客户输入:在 Amazon Lex 标签中选择 输入 ARN,然后粘贴机器人别名 ARN。将文本转语音提示保留为一个空格,以便 Amazon Connect 在交接前不播放任何内容。在 会话属性 下,手动添加两个属性:
目标键值
x-amz-lex:q-in-connect:ai-agent-arn带版本的编排智能体 ARN(...:1)。
x-amz-lex:qic-audio-passthroughtrue

获取客户输入模块的会话属性:带版本的 AI 智能体 ARN 和音频
直通标记

x-amz-lex:qic-audio-passthrough 在 AWS 预发布期间控制第三方语音路径。AWS 表示该功能公开后不再需要此属性;保留它也不会有影响。

3

按结果分支

Amazon Connect 会将 ElevenLabs 的结果以 $.Lex.SessionAttributes.Tool 属性形式提供给流。在 Lex 模块后添加 检查联系属性 模块,将 命名空间 设为 Lex、键 设为 会话属性、会话属性键 设为 Tool,然后为每个结果添加一个 等于 条件,并将 无匹配 路由至错误提示:

分支含义建议路由
Complete智能体结束了通话,例如使用 结束通话 工具。断开连接
Escalate智能体请求人工协助(请参阅转接人工)。设置工作队列 → 转接至队列
无匹配任何其他值。播放提示 → 断开连接

检查联系属性模块配置为使用 Lex 会话属性 Tool,并针对每种结果设置
等于条件

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

联系流中,获取客户输入模块连接至检查联系属性模块,后者将 Escalate
路由至队列、Complete 路由至断开连接、无匹配路由至错误
提示

4

发布并分配

发布流,然后将已认领的电话号码指向该流:

aws connect associate-phone-number-contact-flow --instance-id $INSTANCE_ID \
--phone-number-id <PHONE_NUMBER_ID> --contact-flow-id <CONTACT_FLOW_ID> --region $AWS_REGION

对于外呼,使用同一流发起联系;Amazon Connect 会呼叫客户,并将已接通的通话交给 ElevenLabs:

aws connect start-outbound-voice-contact --instance-id $INSTANCE_ID \
--contact-flow-id <CONTACT_FLOW_ID> --destination-phone-number <E164_NUMBER> \
--source-phone-number <YOUR_CONNECT_NUMBER> --region $AWS_REGION

测试集成

1

拨打电话

拨打该号码。流进入 Lex 模块几秒后,智能体的第一条消息便会播放;AWS 内部交接大约需要 3 秒,之后才会联系 ElevenLabs。进行一段简短对话后说再见:智能体会调用 结束通话,ElevenLabs 会话以 Complete 结束,流将从 Lex 模块继续执行。如果添加了转接规则,则请求人工协助:智能体会调用 转接至号码,会话以 Escalate 结束,流会进入相应分支。

2

在 ElevenLabs 中查看对话

在 对话 中打开对话。其来源为 Amazon Connect,客户端数据 标签会列出会话收到的 amazon_connect_* 动态变量。

Amazon Connect 对话的客户端数据标签,列出了 Amazon Connect 动态
变量

3

在 AWS 中检查流日志

启用日志记录后,每个模块都会向实例的流日志组写入条目。获取客户输入 模块会记录从 ElevenLabs 收到的结果:

aws logs filter-log-events --log-group-name /aws/connect/<INSTANCE_ALIAS> \
--start-time $(( $(date +%s) - 600 ))000 --region $AWS_REGION \
--query 'events[].message' --output text | tr '\t' '\n' | grep -o '"Results": *"[A-Za-z_]*"'

对于 Lex 模块,应显示 "Results": "Complete";转接后应显示 "Results": "Escalate",随后是该分支上的模块。

动态变量

Amazon Connect 会在每个会话中发送联系人的系统属性。ElevenLabs 会将它们以及会话标识符作为动态变量提供:

动态变量说明
system__caller_id客户的电话号码(Amazon Connect 客户端终端)。
system__called_number联系人所在的 Amazon Connect 电话号码(系统终端)。
system__call_idAmazon Connect 联系 ID。
amazon_connect_system_attributes_channel联系渠道,例如 VOICE。
amazon_connect_system_attributes_customer_endpoint_addressAmazon Connect 发送的客户端终端地址。
amazon_connect_system_attributes_system_endpoint_addressAmazon Connect 发送的系统终端地址。
amazon_connect_interaction_mode协作模式,例如 HANDOFF。
amazon_connect_contact_idAmazon Connect 联系 ID。
amazon_connect_contact_arn完整联系 ARN。
amazon_connect_context_idA2A 会话(上下文)ID。
amazon_connect_instance_id实例 ID。
amazon_connect_instance_arn实例 ARN。

在 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 会话中的其他信息,包括转接原因,都不会传递给流。若要向接听电话的人工客服简要说明情况,请自行将摘要存储在联系中,并让客服耳语流读出:

  1. 提供一个调用 Amazon Connect UpdateContactAttributes API 的端点。HTTP API 后的精简 Lambda 即可;调用方必须拥有实例联系的 connect:UpdateContactAttributes 权限:

    import json, os, boto3
    connect = boto3.client("connect")
    def handler(event, _context):
    if (event.get("headers") or {}).get("x-shared-secret") != os.environ["SHARED_SECRET"]:
    return {"statusCode": 401, "body": ""}
    body = json.loads(event.get("body") or "{}")
    connect.update_contact_attributes(
    InstanceId=os.environ["INSTANCE_ID"],
    InitialContactId=body["contact_id"],
    Attributes={"handoff_summary": body["summary"][:1000]},
    )
    return {"statusCode": 200, "body": json.dumps({"ok": True})}
  2. 为智能体提供一个webhook 工具,该工具向端点 POST 请求,其中 contact_id 从 amazon_connect_contact_id 动态变量填充,summary 由模型撰写。将共享密钥保存在工作区密钥中,并将其作为请求标头发送。在系统提示词中,指示智能体先调用该工具,只有在其返回后才调用 转接至号码;若模型在同一轮中同时发出两个调用,转接会与摘要写入发生竞争。根据我们的测试,遵循该指示后,属性会在智能体请求约 1 秒后写入联系,比 Amazon Connect 恢复流早 3 秒。

  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 费用。

故障排除

  • 此错误在请求到达 ElevenLabs 前由 AWS 内部引发。请在 CloudTrail 中检查 Lex 服务角色是否出现 wisdom:SendMessage 的 AccessDenied:附加到机器人的角色需要对助手及其会话拥有 wisdom:CreateSession、wisdom:GetAssistant、wisdom:SendMessage 和 wisdom:GetNextMessage 权限。
  • 确认安全配置文件允许该应用,并且已关联到流程引用的已发布编排智能体版本。
  • 确认密钥的 KMS 密钥和资源策略已授予 connect.amazonaws.com 访问权限。
  • Amazon Connect 为建立 WebSocket 连接预留约 20 秒。确认 AWS 可以访问 AccessUrl:使用 wss://、智能体 ID 正确,且未被网络允许列表阻拦。
  • 如果通过自有基础设施代理连接,请保持代理预热。冷启动的无服务器实例可能需要超过交接窗口的时间,Amazon Connect 会在 ElevenLabs 收到请求前放弃。
  • 确认 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 传递。如果智能体的首条消息或提示词引用了从未 提供的变量,会话会在启动时失败。