from fastapi.responses import JSONResponse from pydantic import BaseModel from typing import List, Dict, Any, Optional class MessageText(BaseModel): text: List[str] class Message(BaseModel): text: Optional[MessageText] = None payload: Optional[Dict[str, Any]] = None class FulfillmentResponse(BaseModel): messages: List[Message] class SessionInfo(BaseModel): parameters: Dict[str, Any] class DialogflowResponse(BaseModel): fulfillment_response: FulfillmentResponse sessionInfo: Optional[SessionInfo] = None def DialogFlowResponseAPI(text: List[str] = None, payload: Optional[Dict[str, Any]] = None, parameters: Optional[Dict[str, Any]] = None): messages = [] if text: messages.append(Message(text=MessageText(text=text))) if payload: messages.append(Message(payload=payload)) response_data = DialogflowResponse( fulfillment_response=FulfillmentResponse(messages=messages), sessionInfo=SessionInfo(parameters=parameters or {}) ) return JSONResponse(content=response_data.model_dump())