AI News HubLIVE
站內改寫3 分鐘閱讀

使用Amazon Bedrock AgentCore和Amazon Nova 2 Sonic構建餐廳電話AI接待員

本文演示瞭如何構建一個語音點餐系統,使用Amazon Bedrock AgentCore和Amazon Nova 2 Sonic,處理從問候到確認的整個點餐流程。系統通過模型上下文協議(MCP)連接餐廳後端,並利用AWS CDK部署,通過ECS Fargate上的SIP網關橋接電話呼叫。

來源AWS Machine Learning Blog作者: Sergio Barraza

餐廳每處地點平均每月錯過150通電話,其中約60%是顧客試圖下單或預訂餐桌。這些電話大多在晚餐時段打入,此時接待員正忙於引導客人入座,服務員在翻枱,電話往往被忽略。讓人從餐廳現場抽身接電話並不能真正解決問題,反而會惡化兩方面體驗。雖然添加應用或網站有助於偏好在線下單的顧客,但對只想打電話的人無濟於事。

本文展示如何構建一個語音點餐系統,該系統能接聽電話並從問候到確認完成整個訂單流程。系統使用Amazon Bedrock AgentCore來託管和運行代理,Amazon Nova 2 Sonic實現實時語音交互,並通過模型上下文協議(MCP)連接餐廳後端。本指南涵蓋使用AWS Cloud Development Kit(AWS CDK)部署完整堆棧,以及通過Amazon Elastic Container Service(Amazon ECS)和AWS Fargate上的會話發起協議(SIP)網關將電話呼叫橋接到代理。此外,系統會在電話振鈴期間預熱代理會話,因此呼叫者永遠不會聽到靜音。

解決方案概述 系統分為三層。電話層處理電話相關事項:音頻通過電話網絡而非瀏覽器傳輸,系統通過電話號碼而非登錄信息識別呼叫者。SIP網關通過簽名WebSocket連接將音頻流傳輸到代理層,代理層使用Amazon Nova 2 Sonic進行對話。代理通過MCP工具訪問後端層,後端層包含菜單、購物車、訂單和位置信息。這種分層設計使得訂單邏輯獨立於調用渠道,新渠道(如移動應用或自助終端)可以連接到同一代理而無需重寫後端。由於MCP是連接代理與外部工具的開源標準,後端可以在不影響代理的情況下更改。代理支持文本和音頻作為輸入輸出,在單個雙向流中處理轉錄、輪流發言和打斷。

部署解決方案時,電話側使用Amazon Chime SDK Voice Connector提供SIP中繼和免費號碼,接收來電。Amazon ECS on AWS Fargate運行SIP網關,後端為Network Load Balancer。代理層中,AgentCore Runtime託管對話邏輯,每個呼叫在獨立微VM中運行以確保隔離。Amazon Nova 2 Sonic處理語音到語音交互。AgentCore Gateway將後端API暴露為MCP工具,代理可以發現並按名稱調用。後端層使用Amazon API Gateway前端REST端點,通過AWS Identity and Access Management(IAM)保護安全。AWS Lambda運行菜單、購物車、訂單和位置查詢的業務邏輯。Amazon DynamoDB存儲數據,Amazon Location Service處理地理編碼和路線計算。Amazon Elastic Container Registry(Amazon ECR)、AWS CodeBuild和Amazon Simple Storage Service(Amazon S3)構建並存儲代理容器鏡像。

架構圖 解決方案分為四個部分。第一部分部署餐廳後端基礎設施:Amazon DynamoDB存儲客户、訂單、菜單、購物車和位置數據,Amazon Location Service處理地址和路線,AWS Lambda執行業務邏輯,Amazon API Gateway以IAM授權對外暴露。第二部分創建AgentCore Gateway,設置IAM權限,並將後端端點配置為代理可訪問的MCP工具,這一層解耦了代理與後端。第三部分配置代理:創建Amazon ECR倉庫,使用Amazon S3和AWS CodeBuild構建並推送容器鏡像,然後部署AgentCore Runtime,同時部署支持個性化呼叫的組件,包括提示渲染Lambda函數和存儲提示模板及客户識別密鑰的AWS Systems Manager Parameter Store條目。第四部分提供電話路徑:設置Amazon Chime SDK Voice Connector和免費號碼、SIP媒體應用Lambda(決定如何處理來電)、共享Amazon Virtual Private Cloud(Amazon VPC)以及在Amazon ECS on AWS Fargate上運行的SIP網關(drachtio-server),後接Network Load Balancer。網關在Chime SDK Voice Connector和AgentCore Runtime之間橋接呼叫。

呼叫流程 當呼叫者撥打免費號碼時,Amazon Chime SDK Voice Connector應答並調用SIP媒體應用Lambda。Lambda計算會話標識符,向AgentCore Runtime發送預熱請求以便在振鈴期間準備會話,然後指示Voice Connector將呼叫橋接到ECS Fargate上的SIP網關,並傳遞會話標識符。SIP網關使用同一會話標識符打開到AgentCore Runtime的SigV4簽名WebSocket,呼叫連接到預熱會話,呼叫者音頻流向代理,代理音頻返回給呼叫者。代理使用Amazon Nova 2 Sonic進行對話,並通過AgentCore Gateway在需要菜單、購物車、訂單或位置數據時調用後端工具。

部署前提條件包括擁有AWS賬户、在部署區域啓用Amazon Bedrock模型訪問(Amazon Nova 2 Sonic)、申請Amazon Chime SDK PSTN Audio訪問及電話號碼配額增加、安裝Node.js 24+、AWS CLI 2.x、git,並引導AWS CDK。完整解決方案可在GitHub示例倉庫中找到。克隆倉庫並運行預檢腳本後,使用部署腳本(例如./scripts/deploy-all.sh --deploymentPrefix qsr-tel)按順序部署各堆棧。腳本會播種示例菜單和位置數據,以便測試。部署完成後會打印可撥打的號碼。

SIP網關的工作原理是將來電轉換為代理可讀寫的媒體流。Amazon Chime SDK Voice Connector接收來電並調用SIP媒體應用Lambda,該Lambda返回橋接指令。SIP網關運行在ECS Fargate上,使用drachtio-server進行SIP信令,節點.js橋接處理音頻轉換。這種設計使代理無需瞭解電話網絡細節,從而保持渠道無關性。