UPDATE 04-febrero

This commit is contained in:
PAVEL PALMA
2026-02-04 17:46:47 -06:00
parent bc564c5c8c
commit 3c1c1a246a

View File

@@ -63,15 +63,27 @@ public class DialogflowResponseMapper {
String responseText = responseTextBuilder.toString().trim();
Map<String, Object> parameters = Collections.emptyMap();
Map<String, Object> parameters = new LinkedHashMap<>(); // Inicializamos vacío para evitar NPEs después
if (dfQueryResult.hasParameters()) {
parameters = dfQueryResult.getParameters().getFieldsMap().entrySet().stream()
.collect(Collectors.toMap(
Map.Entry::getKey,
entry -> ProtobufUtil.convertProtobufValueToJavaObject(entry.getValue()),
(oldValue, newValue) -> oldValue, // In case of duplicate keys, keep the old value
LinkedHashMap::new // Preserve insertion order
));
// Usamos un forEach en lugar de Collectors.toMap para tener control total sobre nulos
dfQueryResult.getParameters().getFieldsMap().forEach((key, value) -> {
try {
Object convertedValue = ProtobufUtil.convertProtobufValueToJavaObject(value);
// Si el valor convertido es nulo, decidimos qué hacer.
// Lo mejor es poner un String vacío o ignorarlo para que no explote tu lógica.
if (convertedValue != null) {
parameters.put(key, convertedValue);
} else {
logger.warn("El parámetro '{}' devolvió un valor nulo al convertir. Se ignorará.", key);
// Opcional: parameters.put(key, "");
}
} catch (Exception e) {
logger.error("Error convirtiendo el parámetro '{}' de Protobuf a Java: {}", key, e.getMessage());
}
});
logger.debug("Extracted parameters: {} for session: {}", parameters, sessionId);
} else {
logger.debug("No parameters found in QueryResult for session: {}. Using empty map.", sessionId);