基于 Amazon Bedrock AgentCore 构建 WhatsApp 多模态订餐助手
- 作者

- 姓名
- Nino
- 职业
- Senior Tech Editor
对话式商务(Conversational Commerce)正从传统的关键词机器人向高度智能的多模态交互演进。在现代企业级应用中,客户希望在同一个交互通道(如 WhatsApp)上通过文本短讯、语音留言(Voice Notes)乃至实时语音通话(Voice Calls)无缝下订单。如何保证多模态输入的一致性,并在不同通道间无缝共享客户状态,成为 AI Agent 架构设计的核心瓶颈。
本文将深入拆解如何利用 Amazon Bedrock AgentCore 与 Amazon Nova 2 构建高可用、多模态的 WhatsApp 订餐助手。同时,我们还将展示如何通过结合 n1n.ai 等大模型 API 聚合平台实现多模型路由与高效容灾,确保企业级 AI 服务的稳定性与极低时延。
系统架构设计:接入层与 Agent 执行层的解耦
许多开发者在构建 WhatsApp AI 应用时,容易将 WhatsApp API 的回调逻辑与业务 Agent 引擎深度耦合,导致后续扩展语音或多模态时系统极难维护。生产级别的架构必须实现通信通道接入层、多模态转译层、** Agent 决策引擎以及统一持久化上下文**的完全解耦。
+-------------------------------------------------------------------------+
| WhatsApp Business API |
| (统一企业官方 WhatsApp 业务号码) |
+-------------------------------------------------------------------------+
|
v
+-------------------------------------------------------------------------+
| Webhook 接入网关 (FastAPI) |
| 格式标准化: 文本解析、语音文件下载、WebRTC 音频流 |
+-------------------------------------------------------------------------+
|
v
+-------------------------------------------------------------------------+
| Amazon Bedrock AgentCore & Nova 2 |
| (核心决策、意图识别与 Tool Calling 工具调用) |
| 通过 n1n.ai API 网关提供高可用备用路由机制 |
+-------------------------------------------------------------------------+
|
+------------------+------------------+
| |
v v
+-----------------------------------+ +-----------------------------------+
| 统一用户记忆与状态存储 | | 企业后端交易系统 |
| (DynamoDB Session 跨通道同步) | | (库存管理、ERP、支付结算) |
+-----------------------------------+ +-----------------------------------+
核心架构原则:
- 统一通道入口:无论用户发送文本、语音条还是发起语音电话,均通过同一个 WhatsApp 商业号码接入。
- 解耦的业务逻辑:Bedrock AgentCore 负责管理工具调用(如查询菜品库存、添加购物车、计算优惠与下单),无需关注输入是来自于语音还是文本。
- 跨模态共享记忆:通过统一的 Session 机制(如以 E.164 格式的用户手机号作为主键),客户可以通过文本挑选菜品,通过语音留言修改备注,最后通过电话确认配送地址。
逐步实现教程
第一步:构建 FastAPI Webhook 路由与标准化处理
WhatsApp Business API 会根据用户发送的内容返回不同的 JSON 数据包。下面的 Python 代码示例展示了如何使用 FastAPI 接收并标准化输入,再将其提交至 Amazon Bedrock AgentCore。在实际生产环境中,结合 n1n.ai 能够为系统提供稳定的多模型备用路由(如 DeepSeek-V3 或 Claude 3.5 Sonnet),避免因单一云厂商 API 限流而影响业务。
import os
import httpx
from fastapi import FastAPI, Request, BackgroundTasks
from pydantic import BaseModel
import boto3
app = FastAPI()
# 初始化 Amazon Bedrock Runtime 客户端
bedrock_agent = boto3.client('bedrock-agent-runtime', region_name='us-east-1')
# 配置 n1n.ai 备用网关参数
N1N_API_KEY = os.getenv("N1N_API_KEY")
N1N_ENDPOINT = "https://api.n1n.ai/v1/chat/completions"
async def invoke_bedrock_agent_with_fallback(session_id: str, prompt: str) -> str: