Handling different session ids.
This commit is contained in:
@@ -21,11 +21,7 @@ from fastapi import BackgroundTasks, FastAPI, HTTPException, Request, Response
|
|||||||
from fastapi.middleware.cors import CORSMiddleware
|
from fastapi.middleware.cors import CORSMiddleware
|
||||||
from fastapi.responses import RedirectResponse
|
from fastapi.responses import RedirectResponse
|
||||||
from loguru import logger
|
from loguru import logger
|
||||||
from pipecat.transports.smallwebrtc.request_handler import (
|
from pipecat_ai_small_webrtc_prebuilt.frontend import SmallWebRTCPrebuiltUI
|
||||||
IceCandidate,
|
|
||||||
SmallWebRTCPatchRequest,
|
|
||||||
SmallWebRTCRequest,
|
|
||||||
)
|
|
||||||
|
|
||||||
load_dotenv(override=True)
|
load_dotenv(override=True)
|
||||||
|
|
||||||
@@ -34,7 +30,7 @@ app = FastAPI()
|
|||||||
# Add CORS middleware
|
# Add CORS middleware
|
||||||
app.add_middleware(
|
app.add_middleware(
|
||||||
CORSMiddleware,
|
CORSMiddleware,
|
||||||
allow_origins=["http://localhost:5173", "http://127.0.0.1:5173"], # Add your frontend URL
|
allow_origins=["*"], # Add your frontend URL
|
||||||
allow_credentials=True,
|
allow_credentials=True,
|
||||||
allow_methods=["*"],
|
allow_methods=["*"],
|
||||||
allow_headers=["*"],
|
allow_headers=["*"],
|
||||||
@@ -50,14 +46,16 @@ bedrock = boto3.client("bedrock-agentcore")
|
|||||||
# You can find this inside .bedrock_agentcore.yaml
|
# You can find this inside .bedrock_agentcore.yaml
|
||||||
AGENT_RUNTIME_ARN = os.getenv("AGENT_RUNTIME_ARN")
|
AGENT_RUNTIME_ARN = os.getenv("AGENT_RUNTIME_ARN")
|
||||||
|
|
||||||
|
# Mount the frontend at /
|
||||||
|
app.mount("/client", SmallWebRTCPrebuiltUI)
|
||||||
|
|
||||||
|
|
||||||
@app.get("/", include_in_schema=False)
|
@app.get("/", include_in_schema=False)
|
||||||
async def root_redirect():
|
async def root_redirect():
|
||||||
return RedirectResponse(url="/client/")
|
return RedirectResponse(url="/client/")
|
||||||
|
|
||||||
|
|
||||||
@app.post("/api/offer")
|
async def post_offer(request: Request, session_id: str):
|
||||||
async def offer(request: Request):
|
|
||||||
"""Handle WebRTC offer requests via SmallWebRTCRequestHandler."""
|
"""Handle WebRTC offer requests via SmallWebRTCRequestHandler."""
|
||||||
|
|
||||||
data = await request.json()
|
data = await request.json()
|
||||||
@@ -65,8 +63,7 @@ async def offer(request: Request):
|
|||||||
agentRuntimeArn=AGENT_RUNTIME_ARN,
|
agentRuntimeArn=AGENT_RUNTIME_ARN,
|
||||||
contentType="application/json",
|
contentType="application/json",
|
||||||
payload=json.dumps(data),
|
payload=json.dumps(data),
|
||||||
# TODO: create a custom randon id
|
runtimeSessionId=session_id,
|
||||||
runtimeSessionId="user-123456-conversation-111115555",
|
|
||||||
)
|
)
|
||||||
|
|
||||||
answer_sdp = None
|
answer_sdp = None
|
||||||
@@ -103,6 +100,7 @@ async def offer(request: Request):
|
|||||||
|
|
||||||
return answer_sdp
|
return answer_sdp
|
||||||
|
|
||||||
|
|
||||||
@app.post("/start")
|
@app.post("/start")
|
||||||
async def rtvi_start(request: Request):
|
async def rtvi_start(request: Request):
|
||||||
"""Mimic Pipecat Cloud's /start endpoint."""
|
"""Mimic Pipecat Cloud's /start endpoint."""
|
||||||
@@ -152,8 +150,8 @@ async def proxy_request(
|
|||||||
|
|
||||||
if path.endswith("api/offer"):
|
if path.endswith("api/offer"):
|
||||||
try:
|
try:
|
||||||
if request.method == HTTPMethod.POST.value:
|
if request.method == HTTPMethod.POST.value:
|
||||||
return await offer(request)
|
return await post_offer(request, session_id)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Failed to parse WebRTC request: {e}")
|
logger.error(f"Failed to parse WebRTC request: {e}")
|
||||||
return Response(content="Invalid WebRTC request", status_code=400)
|
return Response(content="Invalid WebRTC request", status_code=400)
|
||||||
|
|||||||
Reference in New Issue
Block a user