Sim

Función

El bloque Función te permite ejecutar código JavaScript o TypeScript personalizado en tus flujos de trabajo. Úsalo para transformar datos, realizar cálculos o implementar lógica personalizada que no está disponible en otros bloques.

Bloque de función con editor de código

Descripción general

El bloque Función te permite:

Transformar datos: Convertir formatos, analizar texto, manipular arrays y objetos

Realizar cálculos: Operaciones matemáticas, estadísticas, cálculos financieros

Implementar lógica personalizada: Condicionales complejos, bucles y algoritmos

Procesar datos externos: Analizar respuestas, formatear solicitudes, gestionar autenticación

Cómo funciona

El bloque Función ejecuta tu código en un entorno seguro y aislado:

  1. Recibir entrada: Accede a los datos de bloques anteriores a través del objeto input
  2. Ejecutar código: Ejecuta tu código JavaScript/Python
  3. Devolver resultados: Usa return para pasar datos al siguiente bloque
  4. Manejar errores: Gestión de errores y registro integrados

Ejecución remota (E2B)

  • Lenguajes: Ejecuta JavaScript y Python en un sandbox E2B aislado.
  • Cómo activarlo: Activa “Ejecución de código remoto” en el bloque Función.
  • Cuándo usarlo: Lógica más pesada, bibliotecas externas o código específico de Python.
  • Rendimiento: Más lento que JS local debido al inicio del sandbox y la sobrecarga de red.
  • Notas: Requiere E2B_API_KEY si se ejecuta localmente. Para la menor latencia, usa JS nativo local (Modo rápido).

Entradas y salidas

  • Código: Tu código JavaScript/Python para ejecutar

  • Tiempo de espera: Tiempo máximo de ejecución (por defecto 30 segundos)

  • Datos de entrada: Todas las salidas de bloques conectados disponibles a través de variables

  • function.result: El valor devuelto por tu función

  • function.stdout: Salida de console.log() de tu código

Casos de uso de ejemplo

Pipeline de procesamiento de datos

Escenario: Transformar respuesta de API en datos estructurados

  1. El bloque de API obtiene datos brutos del cliente
  2. El bloque de función procesa y valida los datos
  3. El bloque de función calcula métricas derivadas
  4. El bloque de respuesta devuelve resultados formateados

Implementación de lógica de negocio

Escenario: Calcular puntuaciones y niveles de fidelidad

  1. El agente recupera el historial de compras del cliente
  2. El bloque de función calcula métricas de fidelidad
  3. El bloque de función determina el nivel del cliente
  4. El bloque de condición enruta según el nivel

Validación y limpieza de datos

Escenario: Validar y limpiar la entrada del usuario

  1. Entrada del usuario recibida desde el envío del formulario
  2. El bloque de función valida el formato de correo electrónico y números de teléfono
  3. El bloque de función limpia y normaliza los datos
  4. El bloque de API guarda los datos validados en la base de datos

Ejemplo: Calculadora de puntuación de fidelidad

loyalty-calculator.js
// Process customer data and calculate loyalty score
const { purchaseHistory, accountAge, supportTickets } = <agent>;

// Calculate metrics
const totalSpent = purchaseHistory.reduce((sum, purchase) => sum + purchase.amount, 0);
const purchaseFrequency = purchaseHistory.length / (accountAge / 365);
const ticketRatio = supportTickets.resolved / supportTickets.total;

// Calculate loyalty score (0-100)
const spendScore = Math.min(totalSpent / 1000 * 30, 30);
const frequencyScore = Math.min(purchaseFrequency * 20, 40);
const supportScore = ticketRatio * 30;

const loyaltyScore = Math.round(spendScore + frequencyScore + supportScore);

return {
  customer: <agent.name>,
  loyaltyScore,
  loyaltyTier: loyaltyScore >= 80 ? "Platinum" : loyaltyScore >= 60 ? "Gold" : "Silver",
  metrics: { spendScore, frequencyScore, supportScore }
};

Mejores prácticas

  • Mantén las funciones enfocadas: Escribe funciones que hagan una sola cosa bien para mejorar la mantenibilidad y la depuración
  • Maneja los errores con elegancia: Usa bloques try/catch para manejar posibles errores y proporcionar mensajes de error significativos
  • Prueba casos extremos: Asegúrate de que tu código maneje correctamente entradas inusuales, valores nulos y condiciones límite
  • Optimiza el rendimiento: Ten en cuenta la complejidad computacional y el uso de memoria para grandes conjuntos de datos
  • Usa console.log() para depuración: Aprovecha la salida stdout para depurar y monitorear la ejecución de funciones
Función