AI Voice Agent Integration with Amazon Connect: Six Patterns and How to Choose
The six ways to connect an AI voice agent to Amazon Connect, from a native Connect AI agent to an external agent over A2A, with the setup, limits, security and human handoff for each.
By Naeem Akhtar · 15 min read
In short
- An AI voice agent attaches to Amazon Connect at the contact flow. There are six patterns: a native Connect AI agent, a Lex or Bedrock bot, Lambda calls from the flow, live media streaming to Kinesis, an external agent over A2A, and a transfer to an external voice system.
- Only some patterns carry the conversation. Lambda from the flow is for lookups and writes, and Kinesis streaming sends audio out of Connect without carrying a reply back, so both usually sit beside another pattern.
- The A2A integration is the route for third-party and custom agents. It needs the Connect Customer tier, a Lex bot with the Q in Connect intent, API-only setup, a bearer key in Secrets Manager and trace data from the agent.
- Every pattern needs a tested path back to a human, and a fallback for when the agent or its endpoint fails.
What integrating with Amazon Connect means
Amazon Connect owns the phone number, the queue, routing, recording and the human agent desktop. An AI voice agent is a separate layer that holds the conversation. Integration is the set of hooks that lets the agent sit between the caller and your queues: the contact flow decides when the agent takes the call, what it can see, and where the call goes when the agent is done or fails.
That makes the contact flow the integration point for all six patterns below, however different they look. The patterns differ in who handles the audio, who provides speech recognition and the voice, how much logic you host yourself, and how much of the setup is console clicks versus API calls. If you are still deciding whether to build, buy or mix, read the build, buy or both section of AI Voice Agent for Amazon Connect: Architecture and Build Guide first.
The six patterns at a glance
| Pattern | Who talks to the caller | Where the logic runs | Setup | Main limit |
|---|---|---|---|---|
| 1. Native Connect AI agent | Connect, using agentic voice | Inside Connect, with tools you attach | Console and flow blocks | Within Connect's agent, tool and security-profile model |
| 2. Lex or Bedrock bot in the flow | Connect, through a Lex bot | Lex intents with Lambda fulfilment, or a Bedrock agent | Console and flow blocks | Intent design is rigid; extra latency with a Bedrock agent |
| 3. Lambda from the flow | Whatever pattern the flow is already using | Your Lambda function | Flow block plus Lambda | 8 seconds synchronous, 60 seconds asynchronous |
| 4. Live media streaming to Kinesis | Not applicable: audio goes out only | Your service reads the stream | Enable streaming, then build a consumer | One-way feed; no reply path back to the caller |
| 5. External agent over A2A | Connect (text) or the external agent (audio) | The external agent, hosted by you or a vendor | API only | Connect Customer tier; trace data required; quotas apply |
| 6. External voice transfer | The external voice system | The external system | Quota request, connector, flow block | The call leaves Connect while the external system holds it |
Patterns 1, 2 and 5 carry the conversation. Pattern 3 adds actions to any of them. Pattern 4 adds listening. Pattern 6 hands the whole call to another system. Most production designs combine two or three of these.
Pattern 1: a native Connect AI agent in the flow
This is the route AWS recommends for new builds. A Lex V2 bot with the Q in Connect intent receives each caller turn from a Get customer input block and passes it to a Connect AI agent. The agent reasons over the conversation, calls the tools you attach (including MCP tools), and uses its Complete or Escalate tools to send the contact back down the matching path in the flow. Speech recognition and the voice come from Amazon Connect agentic voice, which AWS describes as the default voice provider on the Connect Customer tier.
- Create or enable the Connect AI agent and attach its tools.
- Create a Lex V2 bot with the Q in Connect intent and associate it with your instance. That intent cannot share a locale with the QnA or Bedrock agent intents.
- In the flow, add a Set voice block that selects Amazon Connect agentic voice, then a Get customer input block that calls the bot.
- Wire the Complete and Escalate paths: complete goes on to the next step, escalate goes to a human queue.
- Set barge-in and end-of-turn behaviour with Lex session attributes where a slot needs it.
Choose this when the call is lookups, FAQs or short multi-step self-service and you want the shortest path to a pilot. The trade-off is that you work inside Connect's model, including a 30-second limit on each MCP tool call. The full console walkthrough is in How to Add an AI Voice Agent to Amazon Connect, and the voice choices are in Amazon Connect Custom Voice: Every Voice Option.
Pattern 2: a Lex or Bedrock bot in the flow
Before agentic self-service, this was the standard pattern, and it still suits teams that already have Lex bots or Bedrock agents. The flow's Get customer input block hands the turn to a Lex bot. The bot matches an intent, fills slots, and either answers directly or calls a Lambda fulfilment function. A Bedrock agent can sit behind the bot through its own intent type when you want model-driven reasoning for part of the conversation.
The strengths are tight control of fixed steps and familiar tooling. The weaknesses are intent design that gets rigid as the call grows, and the extra latency a Bedrock agent adds. AWS describes the earlier legacy self-service as no longer receiving new features, so new builds should start with pattern 1 unless there is a reason not to. The detailed comparison is in Amazon Lex vs AI Agent in Amazon Connect.
Pattern 3: calling Lambda from the flow
An AWS Lambda function block in the flow calls your function mid-call and returns data you can store in contact attributes. It is the simplest way to add a CRM lookup, a booking check or a case write to any other pattern. It does not carry a conversation: the function receives the contact data, does one job and returns.
- Add the function to your Connect instance first, then select it in the block.
- Synchronous mode waits for the result, with a timeout of up to 8 seconds. Asynchronous mode moves on at once, with up to 60 seconds, and you load the result later with a Load Lambda result action.
- A throttled or failed call is retried, up to three times within the timeout, before the contact goes down the Error branch. Synchronous mode also has a Timeout branch.
- Set response validation to STRING_MAP for a flat map of string values, or JSON when you need nested data.
def lambda_handler(event, context):
contact = event["Details"]["ContactData"]
caller = contact["CustomerEndpoint"]["Address"]
record = lookup_customer(caller) # your CRM or database call; keep it fast
# With response validation set to STRING_MAP, return flat string values
return {
"customer_found": "true" if record else "false",
"customer_name": record["name"] if record else "",
"open_cases": str(record["open_cases"]) if record else "0",
"call_id": contact["ContactId"],
}Because the flow waits at most 8 seconds, put any slow work behind a fast acknowledgement, run it asynchronously, or give the agent a tool for it instead. Tool calls made by a Connect AI agent have their own limits, described under pattern 1. Use the same rules as any tool layer: validate inputs, make writes idempotent with the contact ID, and return a short reason on failure.
Pattern 4: live media streaming to Kinesis Video Streams
Connect can send call audio to Kinesis Video Streams. Customer speech and what the customer hears are on separate tracks, at an 8 kHz sampling rate, with one stream per active call. Your service reads the stream to run real-time transcription, sentiment, compliance monitoring or a supervisor view.
This feed runs one way: audio goes out of Connect, but nothing in it carries a reply back to the caller. So it is a listening pattern, not a conversation pattern, and it normally sits beside patterns 1, 2 or 5. Plan for the operational side: keep the streams Connect creates, set a retention period, request a Kinesis Video Streams quota increase if you expect many concurrent calls, and give the roles that read the data access to Kinesis Video Streams and AWS KMS.
Pattern 5: an external agent over A2A
This is the route for third-party platforms and custom agents. Your Connect AI agent brings in an outside agent during a live contact using the Agent-to-Agent (A2A) protocol, an open standard that AWS extends for voice streaming, session continuity and observability. The external agent can be hosted by a vendor, by you, or on Amazon Bedrock AgentCore.
| Mode | Who talks to the caller | Transport | How it ends |
|---|---|---|---|
| Handle actions behind the scenes (delegation) | Your Connect AI agent | Text; a new connection per invocation | The collaborator returns a result |
| Talk to the customer, text | The external agent; Connect converts speech to text and back | Secure WebSocket, or HTTPS JSON-RPC | The agent sends FINISH with COMPLETE or ESCALATE |
| Talk to the customer, audio | The external agent, with its own voice | Secure WebSocket only, 16-bit mono PCM at 8, 16 or 24 kHz | The agent sends FINISH with COMPLETE or ESCALATE |
Setup is API only, and every request is SigV4 signed. In outline, you store the agent's API key in Secrets Manager under a customer managed KMS key, register the agent's endpoint as an AppIntegrations application of type A2A_SERVER, associate it with your instance, add it as a collaborator on your Connect AI agent, allow it in the agent's security profile, and publish a new version of the agent.
aws appintegrations create-application \
--name my-agent \
--namespace my-agent-ns \
--application-source-config '{"ExternalUrlConfig":{"AccessUrl":"wss://agent.example.com"}}' \
--application-type A2A_SERVER \
--auth-config '{"AuthType":"API_KEY","CredentialProviderIdentifier":"SECRET_ARN"}' \
--region REGIONSeveral constraints decide whether this fits:
- The instance must be on the Connect Customer tier, not Customer Basic, and it needs a Lex V2 bot with the Q in Connect intent.
- Audio streaming needs immediate handoff, and the audio collaborator must be the only collaborator on its Connect AI agent. The orchestrating agent can have no orchestration prompt or guardrail, and its only tools are Complete (required) and Escalate. The bot locale uses Amazon Nova Sonic speech-to-speech with a single Q in Connect intent, and AWS asks you to validate latency and audio quality with your account team before production.
- Quotas default to 5 collaborators per AI agent, 10 handoffs per customer turn and 5 concurrent outbound third-party connections per instance. All are adjustable.
- Connect passes the conversation history and the contact and instance ARNs, plus the caller and system addresses and channel only if the security profile grants the Access Contact Control Panel permission. It does not pass custom contact attributes.
- The external agent must send trace data for every turn. Connect disables endpoints that do not, and stops starting new collaborations with them.
If the connection drops during a voice session, Connect reconnects once. A second drop, or a failed task, ends the collaboration and sends the contact down the Error branch of the flow, which is where your fallback belongs. Vendors package this integration in their own docs, and some list it as limited availability, so check current status with the vendor before you plan around it.
Pattern 6: external voice transfer
AWS documents external voice transfer as a way to move calls from Connect to an external voice system, originally aimed at on-premise contact centers. Some voice-agent vendors use the same mechanism to take the call into their own telephony and voice stack. You request a service quota increase for external voice transfer connectors, create a connector under External voice systems in the console, and then use a Transfer to phone number block that targets the external voice system instead of a number. The connector can be set statically or chosen dynamically, and AWS shows passing a customer identifier through user-to-user information.
The strength is that the vendor's stack can run its own voice pipeline. The cost is that the call leaves Connect while the external system holds it, so you lose some Connect-side visibility and need to plan what context travels with the transfer and how the call returns. Vendor guides recommend resuming the flow after the external system disconnects so the contact can continue in Connect. Treat that as vendor guidance and test it in your own flow.
Choosing between the patterns
| If you need | Start with | Add |
|---|---|---|
| The shortest path to a pilot for lookups and FAQs | Pattern 1 | Pattern 3 for CRM lookups |
| To reuse existing Lex bots or Bedrock agents | Pattern 2 | Pattern 3 for actions |
| Mid-call CRM, booking or case actions | Any conversation pattern | Pattern 3, or agent tools in pattern 1 |
| Real-time transcripts, analytics or monitoring | Any conversation pattern | Pattern 4 |
| A third-party platform or your own custom agent with its own reasoning | Pattern 5 | Pattern 3 and 4 as needed |
| A vendor's own telephony and voice stack | Pattern 6 | A tested return path to Connect |
| A mix of simple and complex calls | Pattern 1 for simple calls | Pattern 5 for the complex ones |
Whichever you choose, check Region and compliance availability for each feature and for any vendor, because not every capability is offered in every AWS Region or in GovCloud.
Handing back to a human in every pattern
| Pattern | How the call reaches a person | What travels with it |
|---|---|---|
| 1. Native Connect AI agent | The agent's Escalate tool sends the contact down the flow's Escalate path to a queue | What you store in contact attributes, plus the session context you pass on |
| 2. Lex or Bedrock bot | A fallback or transfer intent routes to a queue from the flow | Slot values and anything you set as contact attributes |
| 3. Lambda from the flow | The Error or Timeout branch routes to a queue | The contact's existing attributes; make the branch say why |
| 4. Kinesis streaming | Unchanged: it is a listener, not the owner of the call | Not applicable |
| 5. External agent over A2A | FINISH with ESCALATE returns control to the Connect AI agent, which uses Escalate | A reason from the external agent; Connect merges its history into the session |
| 6. External voice transfer | The external system returns the call, or transfers it itself | Only what the connector and your flow pass along; test it |
A caller should never reach dead air. Build the Error branch of every flow block that touches the agent so that a failed endpoint, a slow function or a dropped connection ends in a human queue with a spoken explanation.
Security and permissions across the patterns
- Least privilege for Lambda: add only the functions the flow needs to the instance, and give each function an execution role that reaches only the systems it must.
- For A2A, use a customer managed KMS key for the secret, with a policy that lets Connect decrypt only through Secrets Manager. AWS managed keys do not work for this. Restrict the secret's resource policy to your account and instance.
- Allow the external agent explicitly in the Connect AI agent's security profile, and grant Access Contact Control Panel only if the agent should see the caller and system addresses.
- For Kinesis streams, limit read access to the roles that need it, and treat the audio as sensitive data with a retention period.
- Keep transcripts and recordings inside your account boundary, redact payment and health details, and confirm consent and disclosure rules for your jurisdiction with counsel.
Failure modes to test before launch
| What fails | What happens | What to build |
|---|---|---|
| Lambda is slow or throttled | The flow retries, then takes the Timeout or Error branch | A spoken holding line and a fallback path; async for slow work |
| The external agent endpoint is down | Connect retries the connection once, then the contact goes to the Error branch | A flow branch that routes to a human queue with a clear message |
| The agent's trace data is missing | Connect disables the endpoint for new contacts | Trace checks in your deployment pipeline and an alert if collaborations stop |
| The agent finishes with ESCALATE | Control returns to the Connect AI agent with a reason | Instructions that tell it how to handle each reason, and an Escalate path that reaches a person |
| The caller interrupts during audio streaming | The agent must send an interruption event so Connect flushes buffered audio | Interruption tests with real accents and noise |
| A secret or key policy is wrong | Connect cannot read the secret and collaboration fails at runtime | A smoke test contact after every change to keys, policies or security profiles |
Run each of these on a test number before any live traffic, and add them to the regression set you re-run on every change. How to Measure AI Voice Agent Latency in Amazon Connect covers how to time the turns once the integration works.
Where Eveonix fits
We build custom AI voice agents on Amazon Connect, AWS Bedrock and Nova Sonic, and choose the integration pattern per call type rather than per project. Our multi-tenant intake agent for Bracken & Cole LLP answers 100% of intake calls day or night, and the firm saw a 30% increase in lead conversion rate. Read the case study, or see the AI voice agent development service if you would like a team to build and integrate yours.
Frequently asked questions
What is the best way to integrate an AI voice agent with Amazon Connect?
For lookups, FAQs and short self-service, a native Connect AI agent attached through a Lex bot with the Q in Connect intent is the fastest route and the one AWS recommends for new builds. For a third-party or custom agent with its own reasoning or voice, use the agent-to-agent integration. Most real systems add Lambda calls for business actions.
Can I connect my own AI agent to Amazon Connect?
Yes. An agent that implements the A2A protocol with Connect's extensions can be registered as an external collaborator and hosted anywhere, including Amazon Bedrock AgentCore. It needs the Connect Customer tier, a secure WebSocket or HTTPS endpoint, an API key stored in Secrets Manager and trace data for every turn.
Does Amazon Connect work with third-party AI voice agents?
Yes, through the A2A integration or an external voice transfer, depending on the vendor. Vendors such as ElevenLabs document a Connect integration, and some describe it as limited availability, so confirm current status and Region support with the vendor.
Can a Lambda function run the whole voice conversation?
No. The Lambda block in a flow waits at most 8 seconds in synchronous mode and 60 seconds in asynchronous mode, and it returns data rather than holding a conversation. Use it for lookups and writes alongside a conversation pattern.
Can I stream Amazon Connect audio to my own service and reply to the caller?
Live media streaming sends call audio to Kinesis Video Streams for your service to read, but it is a one-way feed with no reply path. To speak to the caller from your own agent, use the A2A audio streaming integration or an external voice transfer.
How do I hand a call from the AI agent to a human?
Use the agent's Escalate path in the contact flow, which routes to a human queue. For an external agent, it sends a FINISH event with ESCALATE and a reason, and the Connect AI agent returns the contact to the flow. Always configure the Error branch too, so a failure also reaches a person.
What are the limits of the A2A integration with Amazon Connect?
By default, 5 collaborators per AI agent, 10 handoffs per customer turn and 5 concurrent outbound third-party connections per instance, all adjustable. Collaborators cannot have their own collaborators, only one collaborator talks to the caller at a time, and audio streaming requires immediate handoff with the audio agent as the only collaborator.
Need help with AI Voice Agents? Talk to the engineers.
Tell us what you want to build. You'll get a straight answer on scope, approach and cost from the people who do the work.
Keep reading
Related guides
Voice AI
AI Voice Agent for Amazon Connect: Architecture and Build Guide
A practical guide to building an AI voice agent on Amazon Connect — the build options, the call flow, what drives cost, and the mistakes that sink pilots.
17 min read
Voice AI
How to Add an AI Voice Agent to Amazon Connect: Step-by-Step Setup Guide
Every step to put an AI voice agent on a phone number in Amazon Connect: instance, number, orchestrator AI agent, tools, bot, voice, contact flow and a test call, checked against the current AWS documentation.
15 min read
Voice AI
Amazon Connect Custom Voice: Every Voice Option for an AI Voice Agent
What 'custom voice' can mean in Amazon Connect, and how to set up each option: agentic voice, Amazon Polly, Nova Sonic, ElevenLabs and Brand Voice, with the security setup and the traps that cost time.
11 min read