Skip to navigation

Amazon Connect

Draag spraakcontacten van Amazon Connect over aan ElevenAgents via de ingebouwde integratie voor externe AI-agents (A2A) van Amazon Connect.

De Amazon Connect-integratie is beperkt beschikbaar. Ondersteuning voor externe AI-agents van Amazon Connect moet zijn ingeschakeld voor je AWS-account en het ElevenLabs-transport wordt per workspace ingeschakeld. Neem contact op met je ElevenLabs-contactpersoon voordat je klantverkeer routeert.

Overzicht

De Amazon Connect-integratie verbindt een Amazon Connect-contactflow rechtstreeks met een agent in ElevenAgents via het protocol voor externe AI-agents van Amazon Connect, een uitbreiding van het open A2A-protocol. Amazon Connect beheert telefonie, routering en de wachtrij; ElevenAgents beheert het gesprek. Er is geen SIP-trunk, Twilio-nummer of middleware vereist. AWS documenteert de functie onder Agent-to-agent collaboration; deze handleiding behandelt de ElevenLabs-specifieke aspecten en de AWS-stappen die nodig zijn om een ElevenLabs-agent te bereiken.

Dezelfde flow bedient inkomende gesprekken en uitgaande contacten die zijn gestart met StartOutboundVoiceContact. Wanneer de ElevenLabs-agent klaar is, vervolgt Amazon Connect je contactflow en vertakt op basis van de ontvangen uitkomst.

Zo werkt de integratie

  1. Een contactflow bereikt een blok Get customer input dat een Amazon Lex V2-bot aanroept met de intent AMAZON.QInConnectIntent.
  2. De orkestratie-AI-agent van Amazon Connect draagt het gesprek direct over aan de externe applicatie die je voor ElevenLabs hebt geregistreerd.
  3. Amazon Connect opent een WebSocket naar het ElevenLabs-endpoint in de AccessUrl van de applicatie, en verifieert met de API-sleutel die is opgeslagen in AWS Secrets Manager.
  4. Amazon Connect geeft aan dat het kanaal van de beller actief is. Vervolgens wisselen Amazon Connect en ElevenLabs 16-bits lineaire PCM-audio uit als A2A-berichten. Amazon Connect stelt de samplefrequentie voor en ElevenLabs neemt die over, dus er zijn geen wijzigingen aan het audioformaat nodig op de agent.
  5. Wanneer de agent het gesprek beëindigt of de beller overdraagt aan een medewerker, beëindigt ElevenLabs de sessie met een Complete- of Escalate-uitkomst en gaat de flow verder vanaf het Lex-blok; zie Overdragen aan een medewerker.

Vereisten

Controleer voordat je begint of je het volgende hebt:

  1. Een Amazon Connect-instance op de Connect Customer-tier met ondersteuning voor externe AI-agents ingeschakeld voor het account en de Region.
  2. Een Amazon Q in Connect-assistent die is gekoppeld aan de instance.
  3. AWS-machtigingen om KMS-sleutels, Secrets Manager-secrets, AppIntegrations-applicaties, Connect-beveiligingsprofielen, Amazon Q in Connect AI-agents, Lex V2-bots en contactflows te maken.
  4. Een ElevenLabs-workspace met het Amazon Connect-transport ingeschakeld.
  5. Een ElevenLabs-agent en een speciale API-sleutel.
  6. AWS CLI v2 en awscurl (pip install awscurl) voor de aanroepen waarvan de requeststructuur nog niet in uitgebrachte CLI-versies staat.

Houd elke AWS-resource in hetzelfde account en dezelfde Region als de Amazon Connect-instance. De stappen hieronder gebruiken de AWS CLI wanneer deze de aanroep ondersteunt en awscurl (een SigV4-ondertekende HTTP-request) wanneer dat niet zo is. Ze volgen AWS’ Set up collaboration with an external AI agent en voegen de ElevenLabs-specifieke waarden toe.

ElevenLabs configureren

1

Een agent maken of selecteren

Maak de agent in ElevenAgents. Geef de agent een eerste bericht als deze moet spreken zodra de overdracht is voltooid; Amazon Connect speelt tijdens de sessie zelf niets af.

2

Gesprek beëindigen inschakelen

Schakel in Agent → Tools → Systeemtools Gesprek beëindigen in, zodat de agent de sessie kan afronden wanneer het verzoek van de beller is afgehandeld. Amazon Connect vervolgt dan je flow met de uitkomst Complete.

3

Een overdrachtsregel voor Amazon Connect toevoegen (optioneel)

Als je de agent de beller wilt laten overdragen aan een medewerker, geef je deze de systeemtool Overdragen naar nummer met een overdrachtsregel waarvan de providerconfiguratie amazon_connect is. De regel heeft geen bestemming: de sessie eindigt met de uitkomst Escalate en je contactflow kiest de wachtrij. Overdrachtsregels worden via de API geconfigureerd. Voeg de tool toe met een PATCH op de agent:

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"}}
]
}]
}
}
}}}}
}'

Verzend het volledige object built_in_tools van de agent, inclusief tools die deze al heeft, zoals end_call. De agent kiest de regel op basis van de condition; de optie die deze terugstuurt is de vaste token amazon_connect, dus één Amazon Connect-regel per tool is voldoende. Telefoonnummers en SIP-URI’s geconfigureerd voor andere providers worden niet aangeboden tijdens Amazon Connect-gesprekken.

Overdrachtsregels zijn een instelling die via de API wordt beheerd. Configureer en werk de tool Overdragen naar nummer van een agent die deze gebruikt via de API bij, zoals hierboven; de tooleditor van het dashboard werkt met de overdrachtslijst per nummer.

4

Een speciale API-sleutel maken

Maak een API-sleutel in dezelfde workspace als de agent en beperk deze tot ElevenAgents. Je slaat deze in het volgende gedeelte op in AWS Secrets Manager; plak deze nergens anders.

5

Noteer de WebSocket-URL

Amazon Connect maakt verbinding met een URL die je agent-ID bevat:

OmgevingAccessUrl
Standaardwss://api.elevenlabs.io/v1/convai/conversation/amazon-connect/agent_7101k5zvyjhmfg983brhmhkd98n6
Dataresidentiewss://api.<region>.residency.elevenlabs.io/v1/convai/conversation/amazon-connect/agent_7101k5zvyjhmfg983brhmhkd98n6

Als je ElevenLabs-account zich in een geïsoleerde residencyomgeving bevindt, vervang je <region> door je regiocode. Zie dataresidentie voor de beschikbare regio’s.

Registreer de ElevenLabs-applicatie in AWS

Alles in deze sectie is een API-aanroep. Stel de waarden die je opnieuw gebruikt één keer in:

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

Maak een Amazon Q in Connect-assistent

Sla deze stap over als de instance al een assistent heeft. Maak er anders een en koppel deze aan de instance:

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

Noteer de assistent-ID en ARN.

2

Sla de API-sleutel op

Amazon Connect leest de sleutel uit Secrets Manager met een eigen serviceprincipal. Het geheim moet daarom worden versleuteld met een door de klant beheerde KMS-sleutel die connect.amazonaws.com toegang verleent om te ontsleutelen. De standaard aws/secretsmanager-sleutel kan niet worden gebruikt.

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": "*"
}
]
}

Sla de ElevenLabs API-sleutel op in een bestand, zodat deze nooit in je shellgeschiedenis verschijnt, en maak vervolgens de sleutel en het geheim:

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

Verleen Amazon Connect leestoegang tot het geheim:

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-geheim versleuteld met de door de klant beheerde sleutel en het resourcebeleid voor
connect.amazonaws.com

3

Maak de externe applicatie

Registreer de ElevenLabs WebSocket-URL als een AppIntegrations-applicatie van het type A2A_SERVER. AuthConfig is verplicht voor dit type.

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"

Het antwoord bevat de Id en Arn van de applicatie. Exporteer deze als APPLICATION_ID en APPLICATION_ARN. De Amazon Connect-console toont geen A2A_SERVER-applicaties, dus controleer dit via de API:

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

Koppel de applicatie aan je instance

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

Sta de applicatie toe in een beveiligingsprofiel

Het beveiligingsprofiel dat is gekoppeld aan de orkestratie-AI-agent moet de applicatie vermelden onder de toegestane AI-agents, anders mislukt de overdracht tijdens de uitvoering.

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"

De beheerwebsite toont het profiel en de bijbehorende machtigingen, maar niet de toegestane AI-agents; die zijn alleen zichtbaar via de API.

Speciaal beveiligingsprofiel op de Amazon Connect-beheerwebsite met machtigingen om AI-agents te bekijken

6

Maak en publiceer de orkestratie-AI-agent

De orkestratieagent draagt elk spraakgesprek onmiddellijk over aan de applicatie, met audio- streaming ingeschakeld. Spraaksessies vereisen onmiddellijke overdracht; tekststreaming (audioStreamingEnabled ingesteld op false) en delegateAgentConfiguration worden niet ondersteund door ElevenLabs. Een orchestrator voor onmiddellijke audio-overdracht moet ook de gereserveerde tool Complete van het type RETURN_TO_CONTROL declareren in toolConfigurations; zonder deze tool mislukt het create-request met 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

Publiceren geeft een ARN met versie terug (<AI_AGENT_ARN>:1); de contactflow verwijst hiernaar. Koppel het beveiligingsprofiel aan zowel de agent zonder versie als de versiegebonden agent:

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

Orkestratie-AI-agent in de AI-agentontwerper met het speciale beveiligingsprofiel
gekoppeld

Bouw de contactflow

1

Maak de Lex-bot

  1. Maak een Lex V2-bot waarvan de enige intent de ingebouwde AMAZON.QInConnectIntent is, geconfigureerd met je assistent-ARN. Voeg geen andere intents toe.
  2. Schakel speech-to-speech in voor de botlocale. Bidirectionele audiostreaming werkt alleen met Sonic speech-to-speech-bots.
  3. Sta toe dat de IAM-rol van de bot de assistent gebruikt. Zonder deze toestemming mislukt de overdracht binnen AWS met HTTP 403 voordat een request ElevenLabs bereikt. Koppel een beleid als volgt:
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. Bouw de bot, maak een versie en een alias, en koppel de alias aan de instance:
aws connect associate-bot --instance-id $INSTANCE_ID \
--lex-v2-bot AliasArn=<LEX_ALIAS_ARN> --region $AWS_REGION

Lijst met Lex V2-botintents met de Q in Connect-overdrachtsintentie en de ingebouwde fallback-
intent

2

Voeg de assistent en het Lex-blok toe

Voeg in de flowontwerper deze blokken in deze volgorde toe:

  1. Logginggedrag instellen: ingeschakeld. Via het flowlog controleer je de overdracht hieronder.
  2. Assistent verbinden: selecteer je Amazon Q in Connect-assistent.
  3. Klantinvoer ophalen: kies op het tabblad Amazon Lex voor Een ARN invoeren en plak de ARN van de botalias. Laat de text-to-speech-prompt als één spatie staan, zodat Amazon Connect vóór de overdracht niets afspeelt. Voeg onder Sessieattributen twee handmatig ingestelde attributen toe:
BestemmingssleutelWaarde
x-amz-lex:q-in-connect:ai-agent-arnDe versiegebonden ARN van de orkestratieagent (...:1).
x-amz-lex:qic-audio-passthroughtrue

Sessieattributen van het blok Klantinvoer ophalen: de versiegebonden ARN van de AI-agent en de audio-
passthrough-vlag

x-amz-lex:qic-audio-passthrough regelt tijdens de prelaunchperiode van AWS het externe spraakpad. AWS geeft aan dat het attribuut niet langer nodig is zodra de functie openbaar is; het kan geen kwaad om het te laten staan.

3

Vertak op basis van de uitkomst

Amazon Connect toont de ElevenLabs-uitkomst in de flow als het attribuut $.Lex.SessionAttributes.Tool. Voeg na het Lex-blok een blok Contactattributen controleren toe, stel Namespace in op Lex, Sleutel op Sessieattributen en Sessieattribuutsleutel op Tool, voeg vervolgens voor elke uitkomst één voorwaarde Is gelijk aan toe en leid Geen overeenkomst naar een foutprompt:

VertakkingBetekenisVoorgestelde route
CompleteDe agent heeft het gesprek beëindigd, bijvoorbeeld met de tool Gesprek beëindigen.Verbinding verbreken
EscalateDe agent vroeg om een persoon (zie Overdragen aan een persoon).Werkqueue instellen → Overdragen naar queue
Geen overeenkomstElke andere waarde.Prompt afspelen → Verbinding verbreken

Blok Contactattributen controleren geconfigureerd voor het Lex-sessieattribuut Tool met voorwaarden Is gelijk aan
voor elke uitkomst

Amazon Connect schrijft de uitkomst met een hoofdletter aan het begin (Escalate, Complete), niet als het type in hoofdletters dat via de verbinding wordt verzonden. Deze twee voorwaarden zijn dus alles wat het blok nodig heeft. Een sessie die na de overdracht mislukt, eindigt met het type COMPLETE_WITH_ERROR; het Lex-blok gebruikt dan de uitvoer Fout, of de vergelijking valt terug op Geen overeenkomst, dus leid beide naar de foutprompt. In een geëxporteerde flow is de uitvoer Standaard van het Lex-blok de overgang NoMatchingCondition; zorg dat deze naar het vergelijkingsblok leidt en niet naar een foutmelding.

Contactflow met het blok Klantinvoer ophalen dat leidt naar een blok Contactattributen controleren dat
Escalate naar een queue stuurt, Complete naar verbreken en Geen overeenkomst naar een fout-
prompt

4

Publiceer en wijs toe

Publiceer de flow en wijs deze vervolgens toe aan een geclaimd telefoonnummer:

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

Start voor uitgaande gesprekken het contact met dezelfde flow. Amazon Connect belt de klant en zet het beantwoorde gesprek door naar 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

Test de integratie

1

Voer een gesprek

Bel het nummer. Het eerste bericht van de agent wordt enkele seconden afgespeeld nadat de flow het Lex- blok bereikt; de overdracht binnen AWS duurt ongeveer drie seconden voordat ElevenLabs wordt gecontacteerd. Voer een kort gesprek en neem afscheid: de agent roept Gesprek beëindigen aan, de ElevenLabs-sessie eindigt met Complete, en je flow gaat verder vanaf het Lex-blok. Als je een overdrachtsregel hebt toegevoegd, vraag dan in plaats daarvan om een persoon: de agent roept Overdragen naar nummer aan, de sessie eindigt met Escalate, en de flow volgt die vertakking.

2

Controleer het gesprek in ElevenLabs

Open het gesprek in Gesprekken. De bron is Amazon Connect en op het tabblad Clientgegevens staan de dynamische variabelen amazon_connect_* die de sessie heeft ontvangen.

Tabblad Clientgegevens van een Amazon Connect-gesprek met de dynamische Amazon Connect-
variabelen

3

Controleer het flowlog in AWS

Wanneer logging is ingeschakeld, schrijft elk blok een item naar de flowloggroep van de instance. Het blok Klantinvoer ophalen registreert de uitkomst die het van ElevenLabs heeft ontvangen:

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_]*"'

Verwacht "Results": "Complete", of "Results": "Escalate" na een overdracht, voor het Lex-blok, gevolgd door de blokken in die vertakking.

Dynamische variabelen

Amazon Connect verzendt de systeemattributen van het contact bij elke sessie. ElevenLabs maakt deze, samen met de sessie-ID’s, beschikbaar als dynamische variabelen:

Dynamische variabeleBeschrijving
system__caller_idHet telefoonnummer van de klant (het klanteindpunt van Amazon Connect).
system__called_numberHet Amazon Connect-telefoonnummer waarop het contact plaatsvindt (systeemeindpunt).
system__call_idDe Amazon Connect-contact-ID.
amazon_connect_system_attributes_channelHet contactkanaal, bijvoorbeeld VOICE.
amazon_connect_system_attributes_customer_endpoint_addressHet klanteindpuntadres zoals verzonden door Amazon Connect.
amazon_connect_system_attributes_system_endpoint_addressHet systeemeindpuntadres zoals verzonden door Amazon Connect.
amazon_connect_interaction_modeDe samenwerkingsmodus, bijvoorbeeld HANDOFF.
amazon_connect_contact_idDe Amazon Connect-contact-ID.
amazon_connect_contact_arnDe volledige contact-ARN.
amazon_connect_context_idDe A2A-sessie-ID (context-ID).
amazon_connect_instance_idDe instance-ID.
amazon_connect_instance_arnDe instance-ARN.

In Amazon Connect-sessies is system__caller_id altijd de klant en system__called_number altijd het Amazon Connect-nummer, voor zowel inkomende als uitgaande contacten.

Elk ander lid van de contactcontext dat Amazon Connect verzendt, wordt op dezelfde manier beschikbaar gemaakt: geneste namen worden met underscores samengevoegd en omgezet naar snake case onder het voorvoegsel amazon_connect_. Aangepaste contactattributen die je in je flow instelt met Contactattributen instellen, maken geen deel uit van de context die Amazon Connect momenteel verzendt, zelfs niet wanneer het beveiligingsprofiel van de AI-agent contact- attributen mag bekijken; als AWS deze gaat opnemen, verschijnen ze automatisch onder hetzelfde voorvoegsel. Je kunt niet kiezen welke contactgegevens Amazon Connect deelt; AWS geeft een vaste set context door.

Gebruik voor aanvullende context de webhook voor gespreksinitiatie. Voor Amazon Connect-sessies wordt de webhook aangeroepen voordat de agent spreekt, met caller_id ingesteld op het nummer van de klant, called_number ingesteld op het Amazon Connect-nummer en call_id ingesteld op de Amazon Connect-contact-ID. Een Lambda in je flow kan contactattributen dus opslaan op basis van de contact-ID, en de webhook kan ze teruggeven als dynamische variabelen en configuratieoverschrijvingen.

Overdragen aan een persoon

Geef de agent de systeemtool Overdragen naar nummer met een amazon_connect-overdrachtsregel, zoals weergegeven in ElevenLabs configureren. Wanneer aan de voorwaarde van de regel is voldaan, roept de agent de tool aan en beëindigt ElevenLabs de sessie met de uitkomst Escalate en de reden die de agent heeft opgegeven. De vertakking Escalate van je flow verwerkt het contact vervolgens met Werkqueue instellen en Overdragen naar queue. De regel bevat geen bestemming, dus de queue wordt in de flow gekozen en niet door de agent; queuebehandeling, whisperflows en agentselectie blijven in Amazon Connect.

De tool Gesprek beëindigen geeft de uitkomst Complete. Analyse na het gesprek en de webhook na het gesprek worden na beide uitkomsten zoals gebruikelijk uitgevoerd.

De menselijke agent een samenvatting geven

Amazon Connect maakt alleen de uitkomst beschikbaar voor je flow: $.Lex.SessionAttributes.Tool (en de Lex- intentnaam) bevatten Escalate, en niets anders van de ElevenLabs-sessie, ook de overdrachtsreden niet, bereikt de flow. Om de persoon die het gesprek aanneemt te informeren, sla je de samenvatting zelf op bij het contact en laat je een agent-whisperflow deze voorlezen:

  1. Maak een endpoint dat de UpdateContactAttributes-API van Amazon Connect aanroept. Een minimale Lambda achter een HTTP API volstaat; de aanroeper moet connect:UpdateContactAttributes mogen gebruiken voor de contacten van de instance:

    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. Geef de agent een webhooktool die een POST uitvoert naar dat endpoint met contact_id ingevuld vanuit de dynamische variabele amazon_connect_contact_id en een summary die het model schrijft. Bewaar het gedeelde geheim in een workspacegeheim en verstuur dit als requestheader. Geef de agent in de systeemprompt de instructie om deze tool eerst aan te roepen en Overdragen naar nummer pas aan te roepen nadat deze is teruggekeerd; een model dat beide aanroepen in één beurt uitvoert, laat de overdracht concurreren met de samenvatting. Met deze instructie stond het attribuut in onze tests ongeveer een seconde na het request van de agent op het contact, drie seconden voordat Amazon Connect de flow hervatte.

  3. Voeg in de vertakking Escalate van de contactflow vóór Overdragen naar queue een blok Whisperflow instellen toe dat verwijst naar een agent-whisperflow waarvan Prompt afspelen $.Attributes.handoff_summary voorleest. Amazon Connect spreekt dit uit voor de menselijke agent terwijl de beller de queuebehandeling hoort, en verbindt vervolgens beide. Stel handoff_summary niet opnieuw in een later blok van de flow in: een lege waarde daar vervangt wat het endpoint heeft geschreven.

Hetzelfde attribuut is beschikbaar voor een blok Contactattributen controleren voor routeringsbeslissingen. De webhook na het gesprek wordt geactiveerd nadat de flow al verder is gegaan, en is daarom geschikt voor CRM-updates in plaats van routeringsbeslissingen.

Traces

Amazon Connect vereist dat externe agents tracedata verzenden voor elke samenwerking. Wanneer Amazon Connect zich abonneert op tracing voor de sessie, verzendt ElevenLabs voor elke agentbeurt een OpenTelemetry-trace met het transcript van de beller, de reactie van de agent, elke toolaanroep met het resultaat en de timing per span. Amazon Connect slaat deze traces op bij het contact; zie AI-agenttraces voor informatie over hoe je deze kunt bekijken. Transcripten en toolresultaten in deze traces vallen onder dezelfde redactie-instellingen als de rest van je contactgegevens in Amazon Connect. Controleer daarom je vereisten voor gegevensverwerking voordat je de integratie inschakelt. Net als webhooks na het gesprek worden traces geleverd aan je eigen systemen: agents in zero retention mode verzenden ze nog steeds, omdat zero retention bepaalt wat ElevenLabs opslaat en niet wat je Amazon Connect-instance ontvangt.

Audio

Amazon Connect stelt voor elke sessie 16-bits mono lineaire PCM op 8, 16 of 24 kHz voor en ElevenLabs accepteert het voorstel. De geconfigureerde audioformaten van de agent worden dus niet gebruikt voor Amazon Connect- sessies. Onderbreking door de beller wordt gedetecteerd door ElevenLabs en gemeld aan Amazon Connect, zodat gebufferde afspeelcontent onmiddellijk wordt gewist. Toetsenbordinvoer die Amazon Connect verzamelt, wordt als DTMF-cijfers aan de agent geleverd. De eigen stiltemarkering van Amazon Connect wordt genegeerd; gebruik de beurt-time-out van de agent om een stille beller opnieuw te vragen.

Beperkingen en niet-ondersteunde functies

  • Clienttools en de systeemtool Toetstoontje afspelen worden niet ondersteund. Overdragen naar nummer werkt alleen via een Amazon Connect-overdrachtsregel: de agent kan vanuit een Amazon Connect-gesprek geen telefoonnummer of SIP-URI bellen en de flow bepaalt welke queue een geëscaleerde beller ontvangt.
  • Resultaten van gegevensverzameling worden niet teruggestuurd naar de flow, en Amazon Connect bepaalt welke contact- gegevens het deelt. Gebruik voor aanvullende context de webhook voor gespreksinitiatie op basis van amazon_connect_contact_id, een webhooktool die UpdateContactAttributes aanroept voor routeringsgegevens, en de webhook na het gesprek voor al het overige.
  • Configuratieoverschrijvingen zoals system__override_first_message kunnen niet vanuit de flow worden doorgegeven. Geef deze in plaats daarvan terug via de webhook voor gespreksinitiatie.
  • Spraaksessies vereisen onmiddellijke overdracht. Het Amazon Connect-chatkanaal, tekststreaming en samenwerking op de achtergrond (delegateAgentConfiguration) worden niet ondersteund.
  • Traces die naar Amazon Connect worden verzonden, omvatten het transcript van de beller, reacties van de agent, toolaanroepen met hun resultaten en timing. Parameters van toolaanroepen zijn niet opgenomen.
  • Ondersteuning voor externe agents van Amazon Connect is alleen beschikbaar waar AWS deze heeft ingeschakeld en kan extra AWS-kosten met zich meebrengen.

Problemen oplossen

  • De fout treedt op binnen AWS voordat een request ElevenLabs bereikt. Controleer CloudTrail op AccessDenied voor wisdom:SendMessage vanuit de Lex-servicerol: de rol die aan de bot is gekoppeld, heeft wisdom:CreateSession, wisdom:GetAssistant, wisdom:SendMessage en wisdom:GetNextMessage nodig voor de assistent en de sessies daarvan.
  • Controleer of het beveiligingsprofiel de applicatie toestaat en is gekoppeld aan de gepubliceerde versie van de orchestration agent waarnaar de flow verwijst.
  • Controleer of de KMS-sleutel en het resourcebeleid van het secret connect.amazonaws.com toegang verlenen.
  • Amazon Connect geeft de WebSocket-verbinding ongeveer 20 seconden om tot stand te komen. Controleer of de AccessUrl bereikbaar is vanuit AWS: wss://, de juiste agent-ID en geen netwerk-allowlist die in de weg staat.
  • Als je de verbinding via je eigen infrastructuur proxy’t, houd die proxy dan warm. Een koude serverless-instance kan langer duren dan het hand-off-venster, waardoor Amazon Connect opgeeft voordat ElevenLabs het request ziet.
  • Controleer of beide sessieattributen zijn ingesteld in het blok Get customer input: x-amz-lex:q-in-connect:ai-agent-arn met de gepubliceerde agent-ARN met versie en x-amz-lex:qic-audio-passthrough ingesteld op true.
  • Controleer of het beveiligingsprofiel dat de applicatie toestaat, is gekoppeld aan die agentversie.
  • Lees de vermelding van het blok in het flowlogboek; deze bevat de fout die Amazon Connect heeft aangetroffen.
  • Controleer of de AccessUrl wss:// gebruikt, de juiste agent-ID bevat en verwijst naar de regio waarin je workspace zich bevindt.
  • Controleer of de API-sleutel actief is, bij de workspace van de agent hoort en geen IP-beperkingen heeft.
  • Controleer of Amazon Connect-transport is ingeschakeld voor je workspace.

Zorg er in het Lex-blok voor dat de uitvoer Default naar het blok leidt dat $.Lex.SessionAttributes.Tool vergelijkt, en vergelijk met de waarden met hoofdletter Escalate en Complete.

Controleer of de collaborator is geconfigureerd met audioStreamingEnabled ingesteld op true. Met tekst- streaming stuurt Amazon Connect tekstbeurten en verwacht het tekstreacties, wat ElevenLabs niet ondersteunt; in de ElevenLabs-logboeken staat INIT_SESSION carries no audio configuration.

Amazon Connect levert de hierboven vermelde systeemattributen en ID’s van contacten. Aangepaste contact- attributen die in de flow zijn ingesteld, bereiken de agent niet; geef ze in plaats daarvan door via de webhook voor gespreksinitiatie. Als het eerste bericht of de prompt van de agent verwijst naar een variabele die nooit wordt meegegeven, mislukt de sessie bij het opstarten.