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:

bash
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:

csharp
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.

Nunca escribas el token de tu organización directamente en el código fuente. Léelo de una variable de entorno, por ejemplo 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étodoCuá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:

csharp
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.

csharp
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;
}
Un fallo de comunicación con InfiniAnalytics (un problema de red, un timeout o un error de la API) nunca lanza una excepción: el método lo anota en el log y devuelve 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:

csharp
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