/* * 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. */ package com.example.controller; import com.example.dto.dialogflow.base.DetectIntentResponseDTO; import com.example.dto.quickreplies.QuickReplyScreenRequestDTO; import com.example.service.quickreplies.QuickRepliesManagerService; import jakarta.validation.Valid; import java.util.Map; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import reactor.core.publisher.Mono; @RestController @RequestMapping("/api/v1/quick-replies") public class QuickRepliesController { private static final Logger logger = LoggerFactory.getLogger(QuickRepliesController.class); private final QuickRepliesManagerService quickRepliesManagerService; public QuickRepliesController(QuickRepliesManagerService quickRepliesManagerService) { this.quickRepliesManagerService = quickRepliesManagerService; } @PostMapping("/screen") public Mono startSessionAndGetReplies(@Valid @RequestBody QuickReplyScreenRequestDTO request) { return quickRepliesManagerService.startQuickReplySession(request) .doOnSuccess(response -> logger.info("Successfully processed quick reply request")) .doOnError(error -> logger.error("Error processing quick reply request: {}", error.getMessage(), error)); } }