""" Copyright 2025 Google. This software is provided as-is, without warranty or representation for any use or purpose. Your use of it is subject to your agreement with Google. Conversation API endpoints. """ import logging from fastapi import APIRouter, Depends, HTTPException from ..models import ExternalConvRequestDTO, DetectIntentResponseDTO from ..services import ConversationManagerService from ..dependencies import get_conversation_manager logger = logging.getLogger(__name__) router = APIRouter(prefix="/api/v1/dialogflow", tags=["conversation"]) @router.post("/detect-intent", response_model=DetectIntentResponseDTO) async def detect_intent( request: ExternalConvRequestDTO, conversation_manager: ConversationManagerService = Depends( get_conversation_manager ), ) -> DetectIntentResponseDTO: """ Detect user intent and manage conversation. Args: request: External conversation request from client Returns: Dialogflow detect intent response """ try: logger.info("Received detect-intent request") response = await conversation_manager.manage_conversation(request) logger.info("Successfully processed detect-intent request") return response except ValueError as e: logger.error(f"Validation error: {str(e)}", exc_info=True) raise HTTPException(status_code=400, detail=str(e)) except Exception as e: logger.error(f"Error processing detect-intent: {str(e)}", exc_info=True) raise HTTPException(status_code=500, detail="Internal server error")