I ristoranti perdono in media 150 chiamate al mese per sede, e circa il 60% di queste sono clienti che provano a ordinare o prenotare un tavolo, spesso proprio durante il servizio serale quando nessuno può rispondere. AWS propone una soluzione concreta: un sistema di ordini vocali che risponde a un numero di telefono e porta l’ordine dal saluto alla conferma, usando Amazon Bedrock AgentCore per ospitare l’agente, Amazon Nova 2 Sonic per il parlato in tempo reale e il Model Context Protocol (MCP) per collegare il backend del ristorante.
Tre layer disaccoppiati
L’architettura separa tre livelli. Il layer di telefonia gestisce le specificità della rete telefonica: l’audio arriva come pacchetti RTP su UDP, e il chiamante è identificato dal numero anziché da un login. Un SIP gateway trasmette l’audio all’agente su una connessione WebSocket firmata. Il layer dell’agente esegue la conversazione con Nova 2 Sonic. Il backend, raggiunto tramite tool MCP, contiene menu, carrelli, ordini e sedi. Tenere separati i layer significa che un nuovo canale (app o kiosk) può collegarsi allo stesso agente senza riscrivere il backend, e che il backend può cambiare senza toccare l’agente.
Sul lato telefonia, Amazon Chime SDK Voice Connector fornisce il SIP trunk e il numero toll-free; il SIP gateway (drachtio-server) gira su Amazon ECS con Fargate dietro un Network Load Balancer, in due task su due Availability Zone per l’alta disponibilità. La segnalazione passa dal load balancer, mentre l’audio scorre direttamente tra Voice Connector e task Fargate, tenendo il bilanciatore fuori dal percorso media. Il backend usa API Gateway, Lambda per la business logic, DynamoDB (cinque tabelle: clienti, ordini, menu, carrelli, sedi) e Amazon Location Service per geocoding e calcolo dei percorsi.
Nessun silenzio in linea
Il dettaglio più interessante è il warmup: una chiamata vocale non perdona i silenzi, e la parte lenta è il setup iniziale (risolvere il system prompt, aprire lo stream di Nova 2 Sonic, scoprire i tool MCP). La SIP Media Application Lambda invia quindi una richiesta di warmup ad AgentCore Runtime mentre il telefono sta ancora squillando: AgentCore alloca un microVM ed esegue il setup durante lo squillo, così quando il gateway apre il WebSocket con lo stesso session identifier l’agente è già pronto a parlare. Nova 2 Sonic gestisce accenti diversi, chiamate asincrone ai tool senza fermare la conversazione e le interruzioni del chiamante; per tenere viva la sessione durante un lookup lento, l’agente invia un frame silenzioso a intervalli brevi.
Identità e MCP
Il chiamante non fa login: il sistema usa un hash del numero di telefono con un segreto conservato in Parameter Store come session identifier, così il numero grezzo non compare nei log. Se l’hash corrisponde a un cliente noto, l’agente saluta per nome e può offrire l’ultimo ordine; altrimenti si ordina come guest. Gli autori avvertono però che non è verifica d’identità, e in produzione servirebbe un passaggio come un OTP via SMS. L’agente non chiama mai direttamente le Lambda: AgentCore Gateway espone gli endpoint come tool MCP invocabili per nome (menu, carrello, ordini, geocoding, ricerca sedi). Il tutto si distribuisce con AWS CDK, con codice di esempio su GitHub.
- Un sistema di ordini vocali su AgentCore e Nova 2 Sonic risponde al telefono e gestisce l’ordine, con telefonia, agente e backend disaccoppiati.
- Il warmup della sessione durante lo squillo evita il silenzio in linea; MCP collega l’agente al backend tramite tool invocabili per nome.
- L’identità del chiamante si basa su un hash del numero con segreto, non su un login, e non sostituisce una verifica d’identità.
Fonte: Building a restaurant telephony AI host with Amazon Bedrock AgentCore and Amazon Nova 2 Sonic — https://aws.amazon.com/blogs/machine-learning/building-a-restaurant-telephony-ai-host-with-amazon-bedrock-agentcore-and-amazon-nova-2-sonic/
Hai qualcosa da aggiungere? Unisciti alla discussione.