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(); 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()) { if (dfQueryResult.hasParameters()) {
parameters = dfQueryResult.getParameters().getFieldsMap().entrySet().stream() // Usamos un forEach en lugar de Collectors.toMap para tener control total sobre nulos
.collect(Collectors.toMap( dfQueryResult.getParameters().getFieldsMap().forEach((key, value) -> {
Map.Entry::getKey, try {
entry -> ProtobufUtil.convertProtobufValueToJavaObject(entry.getValue()), Object convertedValue = ProtobufUtil.convertProtobufValueToJavaObject(value);
(oldValue, newValue) -> oldValue, // In case of duplicate keys, keep the old value
LinkedHashMap::new // Preserve insertion order // 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); logger.debug("Extracted parameters: {} for session: {}", parameters, sessionId);
} else { } else {
logger.debug("No parameters found in QueryResult for session: {}. Using empty map.", sessionId); logger.debug("No parameters found in QueryResult for session: {}. Using empty map.", sessionId);