ChatbotController.php 1.0 KB

1234567891011121314151617181920212223242526272829303132333435
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Services\GeminiService;
  4. use Illuminate\Http\JsonResponse;
  5. use Illuminate\Http\Request;
  6. use Illuminate\Support\Facades\Auth;
  7. class ChatbotController extends Controller
  8. {
  9. public function __construct(
  10. private readonly GeminiService $geminiService,
  11. ) {}
  12. public function message(Request $request): JsonResponse
  13. {
  14. $validated = $request->validate([
  15. 'message' => ['required', 'string', 'max:1000'],
  16. 'history' => ['sometimes', 'array', 'max:20'],
  17. 'history.*.role' => ['required_with:history', 'string', 'in:user,model'],
  18. 'history.*.text' => ['required_with:history', 'string', 'max:1000'],
  19. ]);
  20. $user = Auth::user();
  21. $reply = $this->geminiService->sendMessage(
  22. message: $validated['message'],
  23. userType: $user->type,
  24. history: $validated['history'] ?? [],
  25. );
  26. return $this->successResponse(payload: ['reply' => $reply]);
  27. }
  28. }