--- title: "Configurar la función Basic I/O" url: https://docs.catalyst.zoho.com/es/tutorials/microservice/java/configure-function/ description: "Construye un microservicio simple usando Catalyst Basic I/O Functions e intégralo con Zoho CRM para enviar alertas automáticas por correo electrónico basadas en contador cuando se crean más de un número específico de leads." last_updated: 2026-03-20T16:21:56Z service: All Services type: tutorial related_links: - name: "Functions" url: /es/serverless/help/functions/introduction - name: "Functions Directory" url: /es/cli/v1/project-directory-structure/functions-directory --- # Configurar la función Comencemos a codificar el microservicio. El [directorio de funciones](https://docs.catalyst.zoho.com/es/cli/v1/project-directory-structure/functions-directory), en este caso `functions/countfunction`, contiene: * El archivo principal de función `CountAlert.java` * El archivo de configuración `catalyst-config.json` * Los archivos de biblioteca JAR * Otras dependencias Agregaremos código en el archivo `CountAlert.java`. Puedes usar cualquier IDE de tu elección para configurar la función. > **Nota**: Por favor revisa el código proporcionado en esta sección para comprenderlo mejor. Copia el código que se muestra a continuación y pégalo en `CountAlert.java` y guarda el archivo. **CountAlert.java** ```java import com.catalyst.Context; import com.catalyst.basic.BasicIO; import com.catalyst.basic.ZCFunction; import com.zc.component.cache.ZCCache; import com.zc.component.mail.ZCMail; import com.zc.component.mail.ZCMailContent; import java.util.logging.Logger; import java.util.logging.Level; public class CountAlert implements ZCFunction { private static final Logger LOGGER = Logger.getLogger(CountAlert.class.getName()); private static final String FROM_EMAIL="emma@zylker.com"; // La dirección de correo electrónico del remitente. Reemplaza esto con la dirección de correo que configuraste en Mail. private static final String TO_EMAIL="brandon.cooper@zylker.com"; // Reemplaza esto con la dirección de correo electrónico a la que deseas que se envíe el correo de alerta. @Override public void runner(Context context, BasicIO basicIO) throws Exception { try { // Pasa el nombre de la funcionalidad que se obtuvo de la entrada como parámetro. El nombre de la funcionalidad puede ser 'CRM' o 'Desk'. String featureName = (String) basicIO.getParameter("feature_name"); // Pasa el conteo umbral que se obtuvo de la entrada como parámetro String mailCountThreshold = (String) basicIO.getParameter("mail_count_threshold"); // Obtiene el conteo actual para la funcionalidad desde el segmento predeterminado de Catalyst Cache String value = ZCCache.getInstance() .getCacheValue("COUNTER_" + featureName) .getValue(); // Si el valor es null, entonces el conteo se establece en 1. Esto se hace durante la primera ejecución para la funcionalidad. if (value == null) { ZCCache.getInstance() .putCacheValue("COUNTER_" + featureName, String.valueOf(1), 1l); } else { Integer count = Integer.valueOf(value); // Si el valor no es null, entonces el conteo se incrementa en 1. count++; // Escribe el valor del conteo en el segmento predeterminado de Catalyst cache ZCCache.getInstance().putCacheValue("COUNTER_"+featureName,count.toString(),1l); // Si el conteo actual es mayor que el valor umbral, entonces se envía una alerta por correo al receptor configurado arriba if (count > Integer.valueOf(mailCountThreshold)) { ZCMailContent content = ZCMailContent.getInstance(); content.setFromEmail(FROM_EMAIL); content.setSubject("Alert!"); content.setContent("Count exceeded the threshold limit for the feature:" +featureName); content.setToEmail(TO_EMAIL); ZCMail.getInstance() .sendMail(content); LOGGER.log(Level.INFO, "Email alert sent");//Escrito en los logs. Puedes ver este log desde Logs bajo la sección Monitor en la consola } } // Maneja el código de estado 200 basicIO.setStatus(200); basicIO.write("The function executed successfully"); }catch(Exception e) { LOGGER.log(Level.SEVERE,"Exception occurred while processing",e); //Escrito en los logs. Puedes ver este log desde Logs bajo la sección Monitor en la consola // Maneja el código de estado 500, cuando ocurre una excepción basicIO.setStatus(500); basicIO.write("Error in the function execution"); } } } ``` > **Nota**: Antes de continuar con el siguiente paso, asegúrate de reemplazar los valores de `FROM_EMAIL` en la línea **14** y `TO_EMAIL` en la **16** en el código como se indica. ### Funcionamiento de la función Basic I/O Como se discutió en la Introducción, la función obtiene las entradas para las variables `feature_name` y `mail_count_threshold` del usuario a través de la API, cuando se invoca. Obtiene el valor actual del contador desde la caché y luego lo incrementa en 1 después de cada invocación. Luego escribe el nuevo valor del contador en la caché. > **Nota:** Dado que estamos usando el segmento predeterminado en Catalyst Cache, no necesitamos configurarlo. Puedes aprender más sobre esto desde la [página de ayuda de Cache](https://docs.catalyst.zoho.com/es/cloud-scale/help/cache/introduction). Si el valor actual del contador es mayor que el límite umbral especificado por el usuario, la alerta por correo se envía a la dirección definida en el código. Esta información también se envía a [Catalyst Logs](https://docs.catalyst.zoho.com/es/devops/help/logs/introduction) con un mensaje apropiado. Puedes verificar esto desde *Logs* bajo la sección *Monitor* en la consola de Catalyst.