diff --git a/src/main/java/com/example/mapper/messagefilter/ConversationContextMapper.java b/src/main/java/com/example/mapper/messagefilter/ConversationContextMapper.java index 9f6ce8f..811723f 100644 --- a/src/main/java/com/example/mapper/messagefilter/ConversationContextMapper.java +++ b/src/main/java/com/example/mapper/messagefilter/ConversationContextMapper.java @@ -74,6 +74,14 @@ public class ConversationContextMapper { text += " " + entry.parameters().toString(); } + if (entry.type() == MessageType.AGENT) { + text = cleanAgentMessage(text); + } + return text; } + + private String cleanAgentMessage(String message) { + return message.replaceAll("\\s*\\{.*\\}\\s*$", "").trim(); + } } \ No newline at end of file diff --git a/src/test/java/com/example/mapper/messagefilter/ConversationContextMapperTest.java b/src/test/java/com/example/mapper/messagefilter/ConversationContextMapperTest.java new file mode 100644 index 0000000..b5d51b0 --- /dev/null +++ b/src/test/java/com/example/mapper/messagefilter/ConversationContextMapperTest.java @@ -0,0 +1,94 @@ +package com.example.mapper.messagefilter; + +import org.junit.jupiter.api.Test; +import java.lang.reflect.Method; +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class ConversationContextMapperTest { + + @Test + public void testCleanAgentMessage() throws Exception { + ConversationContextMapper mapper = new ConversationContextMapper(); + Method method = ConversationContextMapper.class.getDeclaredMethod("cleanAgentMessage", String.class); + method.setAccessible(true); + + String input = "Agent: ¡Seguro, déjame buscarlo para ti! 😉 El 'mejor' banco es " + + "subjetivo y depende de sus necesidades financieras personales. Para determinar " + + "cuál es el más adecuado para usted, considere los siguientes factores:\n" + + "* **Comisiones y cargos**: Evalúe las tarifas por mantenimiento de cuenta, " + + "transferencias, retiros en cajeros automáticos de otras redes, y otros servicios.\n" + + "* **Tasas de interés**: Compare las tasas de interés ofrecidas en cuentas de " + + "ahorro, depósitos a plazo fijo y préstamos.\n" + + "* **Servicios y productos**: Verifique si el banco ofrece los productos que " + + "necesita, como cuentas corrientes, cuentas de ahorro, tarjetas de crédito, " + + "hipotecas, inversiones, etc.\n" + + "* **Accesibilidad y conveniencia**: Considere la ubicación de sucursales y " + + "cajeros automáticos, la calidad de la banca en línea y móvil, y el servicio al " + + "cliente.\n" + + "* **Tecnología**: Evalúe la facilidad de uso de sus plataformas digitales, la " + + "seguridad y las herramientas de gestión financiera que ofrecen.\n" + + "**Ejemplo**: Si usted realiza muchas transacciones en línea y rara vez visita una " + + "sucursal, un banco con una excelente aplicación móvil y bajas comisiones por " + + "transacciones digitales podría ser ideal. Si, por el contrario, prefiere la " + + "atención personalizada, un banco con una red de sucursales amplia y un buen " + + "servicio al cliente presencial sería más adecuado.\n" + + "**Siguientes pasos**: Le recomendamos investigar y comparar al menos tres bancos " + + "diferentes basándose en sus prioridades financieras. Revise sus sitios web, lea " + + "las condiciones de sus productos y, si es posible, consulte opiniones de otros " + + "usuarios para tomar una decisión informada. \n" + + "{response=El 'mejor' banco es subjetivo y depende de sus necesidades financieras " + + "personales. Para determinar cuál es el más adecuado para usted, considere los " + + "siguientes factores:* **Comisiones y cargos**: Evalúe las tarifas por " + + "mantenimiento de cuenta, transferencias, retiros en cajeros automáticos de " + + "otras redes, y otros servicios.* **Tasas de interés**: Compare las tasas de " + + "interés ofrecidas en cuentas de ahorro, depósitos a plazo fijo y préstamos." + + "* **Servicios y productos**: Verifique si el banco ofrece los productos que " + + "necesita, como cuentas corrientes, cuentas de ahorro, tarjetas de crédito, " + + "hipotecas, inversiones, etc.* **Accesibilidad y conveniencia**: Considere la " + + "ubicación de sucursales y cajeros automáticos, la calidad de la banca en línea y " + + "móvil, y el servicio al cliente.* **Tecnología**: Evalúe la facilidad de uso " + + "de sus plataformas digitales, la seguridad y las herramientas de gestión " + + "financiera que ofrecen.**Ejemplo**: Si usted realiza muchas transacciones en línea " + + "y rara vez visita una sucursal, un banco con una excelente aplicación móvil y " + + "bajas comisiones por transacciones digitales podría ser ideal. Si, por el " + + "contrario, prefiere la atención personalizada, un banco con una red de " + + "sucursales amplia y un buen servicio al cliente presencial sería más adecuado." + + "**Siguientes pasos**: Le recomendamos investigar y comparar al menos tres bancos " + + "diferentes basándose en sus prioridades financieras. Revise sus sitios web, lea " + + "las condiciones de sus productos y, si es posible, consulte opiniones de otros " + + "Gente, tomen una decisión informada., telefono=123456789, pregunta_nueva=NO, " + + "usuario_id=user_by_phone_123456789, historial=que son las capsulas?cual es la mejor " + + "para mi?, query_inicial=Cual es el mejor banco?, canal=sigma, " + + "$request.generative.confirmacion_ayuda=¡Seguro, déjame buscarlo para ti! 😉, " + + "query=Cual es el mejor banco?, webhook_success=true, " + + "$request.generative.respuesta_algo_mas=¿Te puedo echar la mano con otra cosa? ¡Tú dime! 😎, " + + "conversacion_notificacion=false, nickname=John Doe, notificacion= }"; + + String expected = "Agent: ¡Seguro, déjame buscarlo para ti! 😉 El 'mejor' banco es " + + "subjetivo y depende de sus necesidades financieras personales. Para determinar " + + "cuál es el más adecuado para usted, considere los siguientes factores:\n" + + "* **Comisiones y cargos**: Evalúe las tarifas por mantenimiento de cuenta, " + + "transferencias, retiros en cajeros automáticos de otras redes, y otros servicios.\n" + + "* **Tasas de interés**: Compare las tasas de interés ofrecidas en cuentas de " + + "ahorro, depósitos a plazo fijo y préstamos.\n" + + "* **Servicios y productos**: Verifique si el banco ofrece los productos que " + + "necesita, como cuentas corrientes, cuentas de ahorro, tarjetas de crédito, " + + "hipotecas, inversiones, etc.\n" + + "* **Accesibilidad y conveniencia**: Considere la ubicación de sucursales y " + + "cajeros automáticos, la calidad de la banca en línea y móvil, y el servicio al " + + "cliente.\n" + + "* **Tecnología**: Evalúe la facilidad de uso de sus plataformas digitales, la " + + "seguridad y las herramientas de gestión financiera que ofrecen.\n" + + "**Ejemplo**: Si usted realiza muchas transacciones en línea y rara vez visita una " + + "sucursal, un banco con una excelente aplicación móvil y bajas comisiones por " + + "transacciones digitales podría ser ideal. Si, por el contrario, prefiere la " + + "atención personalizada, un banco con una red de sucursales amplia y un buen " + + "servicio al cliente presencial sería más adecuado.\n" + + "**Siguientes pasos**: Le recomendamos investigar y comparar al menos tres bancos " + + "diferentes basándose en sus prioridades financieras. Revise sus sitios web, lea " + + "las condiciones de sus productos y, si es posible, consulte opiniones de otros " + + "usuarios para tomar una decisión informada."; + String result = (String) method.invoke(mapper, input); + assertEquals(expected, result); + } +}