Building a restaurant telephony AI host with Amazon Bedrock AgentCore and Amazon Nova 2 Sonic Amazon Web Services (AWS) has released a solution for building a restaurant telephony AI host using Amazon Bedrock AgentCore and Amazon Nova 2 Sonic, which answers phone calls, takes orders, and books tables to address the average 150 missed calls per month per restaurant location. The system uses a SIP gateway on Amazon ECS and AWS Fargate to bridge phone calls into the agent, with Amazon Nova 2 Sonic handling real-time speech and the Model Context Protocol connecting to a restaurant backend. The architecture includes Amazon Chime SDK Voice Connector for telephony, AgentCore Runtime for conversation logic, and AWS Lambda, DynamoDB, and Amazon Location Service for backend operations. Artificial Intelligence https://aws.amazon.com/blogs/machine-learning/ Building a restaurant telephony AI host with Amazon Bedrock AgentCore and Amazon Nova 2 Sonic Restaurants miss an average of 150 phone calls per location every month, and about 60 percent of those are customers trying to place an order or book a table. Most of these calls come in during dinner service, exactly when the host is seating guests, servers are turning tables, and the phone becomes an afterthought. Pulling someone off the floor to answer doesn’t fix the problem. It only makes two experiences worse. Adding an app or a website helps customers who prefer to order online, but it does nothing for the person who only wants to call. In this post, we show you how to build a voice ordering system that answers a phone number and takes the order from greeting to confirmation. The system uses Amazon Bedrock AgentCore https://aws.amazon.com/bedrock/agentcore/ to host and run the agent and Amazon Nova 2 Sonic https://aws.amazon.com/nova/ for real-time speech, connected to a restaurant backend through the Model Context Protocol MCP https://modelcontextprotocol.io/ . The walkthrough covers deploying the full stack with AWS Cloud Development Kit AWS CDK https://aws.amazon.com/cdk/ and bridging a phone call into the agent through a Session Initiation Protocol SIP gateway on Amazon Elastic Container Service Amazon ECS https://aws.amazon.com/ecs/ and AWS Fargate https://aws.amazon.com/fargate/ . It also warms the agent session while the phone is still ringing, so the caller never hears dead air. Solution overview The system has three layers. The telephony layer handles phone-specific concerns. Audio arrives over the phone network rather than a browser, and the system identifies the caller by phone number rather than by a login. A SIP gateway streams that audio to the agent layer over a signed WebSocket connection, where the agent runs the conversation with Amazon Nova 2 Sonic. The agent reaches the backend layer through MCP tools. The backend holds the menu, carts, orders, and locations. Keeping these layers apart means the ordering logic stays independent from the channel that calls it. A new channel like a mobile app or a kiosk can connect to the same agent without rewriting the backend. And because MCP is an open standard for connecting an agent to external tools, the backend can change without touching the agent. The agent supports both text and audio as input and output, handling transcription, turn-taking, and interruptions in a single bidirectional stream. The solution deploys the following: On the telephony side, Amazon Chime SDK Voice Connector https://aws.amazon.com/chime/chime-sdk/ provides the SIP trunk and toll-free number that accepts inbound calls. Amazon ECS on AWS Fargate runs the SIP gateway behind a Network Load Balancer https://aws.amazon.com/elasticloadbalancing/network-load-balancer/ . For the agent layer, AgentCore Runtime hosts the conversation logic, with each call running in its own microVM for isolation. Amazon Nova 2 Sonic handles the speech-to-speech interaction. AgentCore Gateway exposes the backend APIs as MCP tools the agent can discover and call by name. The backend layer uses Amazon API Gateway https://aws.amazon.com/api-gateway/ to front REST endpoints secured by AWS Identity and Access Management IAM https://aws.amazon.com/iam/ . AWS Lambda https://aws.amazon.com/lambda/ runs the business logic for menus, carts, orders, and location lookups. Amazon DynamoDB https://aws.amazon.com/dynamodb/ stores the data, and Amazon Location Service https://aws.amazon.com/location/ handles geocoding and route calculation. Amazon Elastic Container Registry Amazon ECR https://aws.amazon.com/ecr/ , AWS CodeBuild https://aws.amazon.com/codebuild/ , and Amazon Simple Storage Service Amazon S3 https://aws.amazon.com/s3/ build and store the agent container image. Architecture diagram The following diagram shows the solution, which is organized into four sections. The restaurant’s backend infrastructure deploys first in Section A. Amazon DynamoDB holds the customer, order, menu, cart, and location data, and Amazon Location Service handles addresses and routing. AWS Lambda runs the business logic, and Amazon API Gateway exposes it externally with IAM authorization. Resources deploy in dependency order. Section B creates the AgentCore Gateway, sets up its IAM permissions, and configures the gateway to expose the backend endpoints as agent-accessible MCP tools. This is the layer that decouples the agent from the backend. Without it, adding or changing a tool would require redeploying the agent itself. Section C provisions the agent. It creates the Amazon ECR repository and uses Amazon S3 and AWS CodeBuild to build and push the container image. It then deploys AgentCore Runtime. It also deploys the supporting pieces that let the agent personalize each call, including a prompt-renderer Lambda function and a set of AWS Systems Manager Parameter Store https://aws.amazon.com/systems-manager/ entries that hold the prompt templates and a secret used for caller identification. Section D provisions the phone path. It sets up the Amazon Chime SDK Voice Connector and a toll-free number, a SIP Media Application Lambda that decides what to do with an incoming call, a shared Amazon Virtual Private Cloud Amazon VPC https://aws.amazon.com/vpc/ , and the SIP gateway drachtio-server https://github.com/drachtio/drachtio-server , which runs on Amazon ECS on AWS Fargate behind a Network Load Balancer. The gateway bridges the calls between the Chime SDK Voice Connector and AgentCore Runtime. The numbered callouts in the preceding diagram trace the solution end to end: - A call is initiated to the phone number provisioned by Amazon Chime SDK, either by a customer or forwarded from another line. - Amazon Chime SDK answers the call and invokes AWS Lambda to set up the bridge. - The Lambda creates a session identifier and opens a connection to AgentCore Runtime to warm up the microVM, which avoids a cold start when media streaming begins. - After a successful response from the Lambda, Amazon Chime SDK initiates a bridge action against the Network Load Balancer by sending a SIP invite over TCP port 5060. - The SIP service running on AWS Fargate accepts the invite and allocates a free port in the Real-time Transport Protocol RTP service on the same container to receive media on the assigned public IP address. - The RTP service receives the media on the UDP port from the Voice Connector and connects to the AgentCore Runtime WebSocket to begin media translation, using the same session identifier created by the SIP Media Application handler. - AgentCore Runtime invokes an AWS Lambda function to build the system prompt, stored on AWS Systems Manager Parameter Store, based on the session identifier and the customer’s Amazon DynamoDB record. - AgentCore Runtime creates a session with Amazon Nova 2 Sonic and greets the customer over the established connection, following the system prompt instructions. - AgentCore Runtime lists and calls the available tools from AgentCore Gateway using the MCP protocol. - AWS CDK deploys the solution to Amazon S3, triggering AWS CodeBuild to build the container images and store them in Amazon ECR. AgentCore Runtime and AWS Fargate use these images to deploy the agent and the SIP and RTP servers. Amazon CloudWatch https://aws.amazon.com/cloudwatch/ provides centralized monitoring, logging, and alerting across all services, and all data at rest is encrypted using AWS Key Management Service AWS KMS . Callouts 1–9 happen during a single phone call, callout 10 covers how the solution deploys the SIP server and AgentCore Runtime, and callout 11 covers how it’s monitored and secured. The following section sets deployment and operations aside and gets closer to the call itself. Inbound call flow This section follows one call from the caller’s side from the first ring to the spoken reply. It is the same runtime path as callouts 1–9 in the preceding architecture diagram. The following diagram shows it as a sequence so the order of events is more straightforward to see. The numbered steps in the preceding diagram correspond to these stages of the call: - The caller dials the toll-free number and Amazon Chime SDK Voice Connector answers. - The Voice Connector invokes the SIP Media Application Lambda, which computes a session identifier for the call. - The Lambda sends a warmup request to AgentCore Runtime, so the agent prepares its session while the phone is still ringing. - The Lambda tells the Voice Connector to bridge the call to the SIP gateway on Amazon ECS on AWS Fargate, passing the session identifier along. - The SIP gateway opens a SigV4-signed WebSocket to AgentCore Runtime using that same session identifier. The call attaches to the warmed session, caller audio flows to the agent, and the agent’s audio flows back to the caller. - The agent runs the conversation with Amazon Nova 2 Sonic and calls backend tools through AgentCore Gateway when it needs menu, cart, order, or location data. Prerequisites Before you begin, verify that you have the following in place: - An AWS account https://signin.aws.amazon.com/signup?request type=register . - Amazon Bedrock model access for Amazon Nova 2 Sonic in the AWS Region where you deploy, requested on the model access page in the Amazon Bedrock console https://console.aws.amazon.com/bedrock/ . - Amazon Chime SDK PSTN Audio access, with a phone-number quota increase requested in the Amazon Chime SDK console https://console.aws.amazon.com/chime-sdk/ if you have never ordered a number in this account. Node.js https://nodejs.org/ 24.x or later. AWS Command Line Interface AWS CLI https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html 2.x configured with credentials. git https://git-scm.com/ to clone the repository.- AWS CDK bootstrapped in your target account and Region npx cdk bootstrap aws://