Configurar la función
Comencemos a codificar el microservicio. El directorio de funciones, en este caso functions/counter_based_alert_function, contiene:
- El archivo principal de función index.js
- El archivo de configuración catalyst-config.json
- Módulos de Node
- Archivos de dependencias package.json y package-lock.json.
Agregaremos código en el archivo index.js. Puedes usar cualquier IDE de tu elección para configurar la función.
Copia el código que se muestra a continuación y pégalo en index.js y guarda el archivo.
const catalyst = require("zcatalyst-sdk-node");
module.exports = async(context, basicIO) => {
try {
const 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.
const 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.
let featureName = basicIO.getArgument("feature_name");
let mailCountThreshold = basicIO.getArgument("mail_count_threshold");
let app = catalyst.initialize(context);
let value = null;
let cache = app.cache();
let segment = cache.segment();
let cachePromise = segment.getValue("COUNTER_" + featureName);
await cachePromise.then((entity) => {
value = entity;
}).catch((err) => {
throw err;
});
if (value == null) {
await segment.put("COUNTER_" + featureName,1,1);
} else {
let count = parseInt(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
await segment.put("COUNTER_" + featureName,count,1);
// Si el conteo actual es mayor que el valor umbral, entonces se envía una alerta por correo al receptor configurado arriba
if (count > parseInt(mailCountThreshold)) {
//Crea un objeto de configuración con la configuración del correo
let config = {
from_email: FROM_EMAIL,
to_email: [TO_EMAIL],
subject: 'Alert!',
content: "Count exceeded the threshold limit for the feature:" +featureName,
};
//Envía el correo pasando el objeto de configuración
let email = app.email();
let mailPromise = email.sendMail(config);
await mailPromise.then((mailObject) => {
console.log("Email Alert Sent");
})
.catch((err) => {
throw err;
});
}
}
// Maneja el código de estado 200
basicIO.setStatus(200);
basicIO.write("The function executed successfully");
} catch (error) {
console.log("Exception occurred while processing",error.toString()); //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");
}
context.close(); //fin de la aplicación
};
Funcionamiento de la función Basic I/O
Como se discutió en la Introducción, la función obtiene las entradas para 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é.
Si el valor actual del contador es mayor que el límite umbral especificado por el usuario, la alerta por correo se enviará a la dirección definida en el código. Esta información también se envía a Catalyst Logs con un mensaje apropiado. Puedes verificar esto desde Logs bajo la sección Monitor en la consola de Catalyst.
El directorio de funciones ahora está configurado.
Última actualización 2026-03-20 21:51:56 +0530 IST