UPDATE 04-febrero
This commit is contained in:
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user