Integraciones
SDK de .NET
El paquete oficial InfiniAnalytics.Sdk envuelve la API de eventos de InfiniAnalytics en llamadas a métodos simples que nunca interrumpen el flujo de tu automatismo.
Instalación
Instálalo desde NuGet con la línea de comandos de .NET, o búscalo en "Administrar paquetes NuGet" de Visual Studio:
dotnet add package InfiniAnalytics.Sdk
Funciona en .NET Framework 4.6.2 o superior y en cualquier plataforma compatible con .NET Standard 2.0 (.NET 6, 8, 9, 10...).
Inicialización
Crea un InfiniAnalyticsClient con el token de tu organización y reutilízalo en toda la aplicación. Después, inicia cada ejecución con StartExecutionAsync, pasando el UUID del automatismo que copiaste desde el panel de InfiniAnalytics:
using InfiniAnalytics;
var client = new InfiniAnalyticsClient("your_organization_token");
var execution = await client.StartExecutionAsync(
"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx");Si no pasas un executionId, se genera uno automáticamente con la fecha y hora actuales. Pasa un UUID (Guid.NewGuid().ToString()) si el automatismo puede ejecutarse varias veces a la vez, o tu propio ID si necesitas correlacionar la ejecución con tu sistema.
Environment.GetEnvironmentVariable("INFINI_TOKEN").Métodos
Llama a estos métodos sobre el Execution que devuelve StartExecutionAsync. Cada uno tiene una versión síncrona con el mismo nombre sin el sufijo Async, para cuando no puedes usar await:
| Método | Cuándo usarlo |
|---|---|
client.StartExecutionAsync(automationId, executionId, description) | Registra el evento START y devuelve el Execution. Llámalo una vez al principio de la ejecución. |
.EventAsync(description) | Registra un EVENT intermedio. Llámalo tantas veces como necesites para registrar el progreso. |
.WarningAsync(description) | Registra un WARNING: un problema no crítico que merece la pena señalar sin marcar la ejecución como fallida. |
.EndAsync(description) | Registra el evento END. Llámalo una vez al terminar la ejecución. |
.ErrorAsync(description, exception, errorId, errorDescription) | Registra un ERROR y la ejecución cuenta como fallida. Llámalo desde un bloque catch: si pasas la excepción, su tipo y mensaje se envían como detalle del error. |
Ejemplo de Uso
Un programa de consola completo (.NET 6 o superior). Sustituye FetchInvoices y ProcessInvoice por la lógica de tu automatismo:
using InfiniAnalytics;
var token = Environment.GetEnvironmentVariable("INFINI_TOKEN")
?? throw new InvalidOperationException("Set the INFINI_TOKEN environment variable");
var client = new InfiniAnalyticsClient(token);
var execution = await client.StartExecutionAsync(
"your-automation-uuid",
description: "Invoice processing started");
var invoices = FetchInvoices();
await execution.EventAsync($"Fetched {invoices.Count} invoices");
foreach (var invoice in invoices)
{
ProcessInvoice(invoice);
}
await execution.EndAsync($"Processed {invoices.Count} invoices successfully");
// Replace these two methods with your automation's own logic.
static List<string> FetchInvoices() => new List<string> { "INV-001", "INV-002", "INV-003" };
static void ProcessInvoice(string invoice) => Console.WriteLine($"Processing {invoice}");Gestión de Errores
Llama a ErrorAsync desde un bloque catch para que se registre cada fallo. Un ERROR no cierra la ejecución: puedes seguir registrando eventos y terminarla con EndAsync, y quedará como finalizada con error.
var execution = await client.StartExecutionAsync(automationId, description: "Processing started");
try
{
RiskyOperation();
await execution.EndAsync("Completed successfully");
}
catch (Exception ex)
{
await execution.ErrorAsync("Validation failed", ex, errorId: "VALIDATION_ERROR");
throw;
}null, y tu automatismo continúa. El SDK solo lanza excepciones por errores de tu propio código: si creas el cliente sin token o con una configuración no válida (una URL incorrecta o un timeout que no sea positivo), o si cancelas tú el CancellationToken.Por defecto, esos fallos se escriben en la salida de error estándar (Console.Error), que en muchas aplicaciones y robots no se ve. Para enviarlos a tu propio log, pasa un Logger al crear el cliente:
var client = new InfiniAnalyticsClient(new InfiniAnalyticsClientOptions
{
Token = token,
Logger = (level, message, exception) =>
Console.WriteLine($"[InfiniAnalytics {level}] {message} {exception?.Message}"),
});Código Fuente en GitHub
El código fuente, las versiones publicadas y la guía completa del SDK (configuración, logging y uso en plataformas RPA) están en GitHub:
Ver en GitHub