/* * 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.dto.dialogflow.conversation; import com.fasterxml.jackson.annotation.JsonInclude; import java.time.Instant; import java.util.Map; @JsonInclude(JsonInclude.Include.NON_NULL) public record ConversationEntryDTO( ConversationEntryEntity entity, ConversationEntryType type, Instant timestamp, String text, Map parameters, String canal ) { public static ConversationEntryDTO forUser(String text) { return new ConversationEntryDTO( ConversationEntryEntity.USUARIO, ConversationEntryType.CONVERSACION, Instant.now(), text, null, null); } public static ConversationEntryDTO forUser(String text, Map parameters) { return new ConversationEntryDTO( ConversationEntryEntity.USUARIO, ConversationEntryType.CONVERSACION, Instant.now(), text, parameters, null); } public static ConversationEntryDTO forAgent(QueryResultDTO agentQueryResult) { String fulfillmentText = (agentQueryResult != null && agentQueryResult.responseText() != null) ? agentQueryResult.responseText() : ""; Map parameters = (agentQueryResult != null) ? agentQueryResult.parameters() : null; return new ConversationEntryDTO( ConversationEntryEntity.AGENTE, ConversationEntryType.CONVERSACION, Instant.now(), fulfillmentText, parameters, null ); } public static ConversationEntryDTO forAgentWithMessage(String text) { return new ConversationEntryDTO( ConversationEntryEntity.AGENTE, ConversationEntryType.CONVERSACION, Instant.now(), text, null, null ); } public static ConversationEntryDTO forSystem(String text) { return new ConversationEntryDTO( ConversationEntryEntity.SISTEMA, ConversationEntryType.CONVERSACION, Instant.now(), text, null, null ); } public static ConversationEntryDTO forSystem(String text, Map parameters) { return new ConversationEntryDTO( ConversationEntryEntity.SISTEMA, ConversationEntryType.CONVERSACION, Instant.now(), text, parameters, null ); } public static ConversationEntryDTO forLlmConversation(String text) { return new ConversationEntryDTO( ConversationEntryEntity.LLM, ConversationEntryType.CONVERSACION, Instant.now(), text, null, null ); } public static ConversationEntryDTO forLlmConversation(String text, Map parameters) { return new ConversationEntryDTO( ConversationEntryEntity.LLM, ConversationEntryType.CONVERSACION, Instant.now(), text, parameters, null ); } }