Integraciones
SDK de Node.js
El paquete oficial @infinianalytics/node-sdk envuelve la API de eventos de InfiniAnalytics en llamadas a métodos sencillas que nunca rompen el flujo de control de tu automatización.
Instalación
Instálalo desde npm:
npm install @infinianalytics/node-sdk
Requiere Node.js 18+ (usa el fetch nativo). No necesita dependencias externas.
Inicialización
Crea una instancia de InfiniAnalyticsClient una vez por proceso, pasando tu token de organización, y luego llama a startExecution con el UUID de la automatización que copiaste del dashboard de InfiniAnalytics:
import { InfiniAnalyticsClient } from "@infinianalytics/node-sdk";
const client = new InfiniAnalyticsClient({
token: "your_organization_token",
});
const execution = await client.startExecution({
automationId: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
description: "Starting the process",
});Si no pasas un executionId, se genera uno automáticamente a partir de new Date().toISOString(). Pasa el tuyo propio si necesitas correlacionar la ejecución con un ID de tu propio sistema.
token: process.env.INFINI_TOKEN.Métodos
Llama a estos métodos sobre el execution devuelto por startExecution:
| Método | Cuándo usarlo |
|---|---|
client.startExecution({ automationId, description? }) | Registra el evento START y devuelve un execution - llámalo una vez al principio de la ejecución. |
execution.event({ description? }) | Registra un EVENT intermedio - llámalo tantas veces como necesites para registrar el progreso. |
execution.warning({ description? }) | Registra un WARNING - un problema no crítico que merece la pena señalar sin hacer fallar la ejecución. |
execution.end({ description? }) | Registra el evento END - llámalo una vez al completarse con éxito. |
execution.error({ description?, errorId?, errorDescription? }) | Registra un ERROR - marca la ejecución como fallida. Llámalo desde dentro de un bloque catch. |
Ejemplo de Uso
import { InfiniAnalyticsClient } from "@infinianalytics/node-sdk";
const client = new InfiniAnalyticsClient({
token: process.env.INFINI_TOKEN,
});
const execution = await client.startExecution({
automationId: "your-uuid",
description: "Invoice processing started",
});
const invoices = await fetchInvoices();
await execution.event({ description: `Fetched ${invoices.length} invoices` });
for (const inv of invoices) {
await process(inv);
}
await execution.end({ description: `Processed ${invoices.length} invoices successfully` });Gestión de Errores
Llama a execution.error() desde dentro de un bloque catch para que todo fallo quede registrado:
const execution = await client.startExecution({
automationId,
description: "Processing started",
});
try {
const result = await riskyOperation();
await execution.end({ description: "Completed successfully" });
} catch (ex) {
await execution.error({
description: "Validation failed",
errorId: "VALIDATION_ERROR",
error: ex, // errorDescription is derived automatically from the exception
});
throw ex;
}null en vez de rechazar la promesa - una conexión rota con InfiniAnalytics nunca romperá tu automatización.token - sí lanza de forma síncrona desde el constructor. Eso es un error de programación, no un fallo de comunicación.Comprobar Conectividad
const reachable = await client.ping();
Resuelve a truecuando la API es alcanzable, falseen caso contrario (nunca lanza excepciones).
API de Bajo Nivel
Si necesitas control total sobre el payload, o quieres reenviar tu propio automationId/executionId en cada llamada en vez de usar el execution devuelto, usa client.register() directamente:
await client.register({
automation_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
execution_id: "2025-03-03T15:32:17.571Z",
event: "START",
description: "Starting the execution",
});Referencia en npm
La documentación completa del paquete y el changelog están disponibles en npm:
Ver en npm