Dinaup - Base de Conocimientos Help

WebHook .NET

Introducción

La librería te permite interactuar con los datos de Dinaup de forma asíncrona y segura, ofreciendo métodos para:

  • Verificar la conexión con el servidor (Ping).

  • Obtener información sobre la sesión o el usuario (Whoami).

  • Generar documentos dinámicos (GetDynamicDocument).

  • Obtener informes con filtrado y paginación (GetReport).

  • Escribir registros en las secciones (WriteOperation).

Configuración Inicial

Requisitos

  • Proyecto .NET 9+

  • Tener un Token y un Server ID válidos para la API de Dinaup.

  • Conexión a la URL base: https://webhook.dinaup.com.

Creación del Cliente

Para empezar a usar la librería, crea una instancia de Dinaup.WeebHook:

using System; using System.Net.Http; using System.Threading.Tasks; using System.Collections.Generic; namespace EjemploDinaup { class Program { static async Task Main(string[] args) { // Crea el cliente con la URL base, el token y el server ID DinaupWebHookClientC client = new DinaupWebHookClientC( "https://webhook.dinaup.com", "tu-token-de-autenticacion", "tu-server-id" ); // Aquí podrás llamar a los métodos de la API await EjemploPing(client); } static async Task EjemploPing(DinaupWebHookClientC client) { string respuestaPing = await client.PingAsync(); Console.WriteLine("Ping: " + respuestaPing); } } }

Métodos Principales

PingAsync

Verifica si el servicio está disponible.

static async Task EjemploPing(DinaupWebHookClientC client) { string respuestaPing = await client.PingAsync(); Console.WriteLine("Ping: " + respuestaPing); }

WhoamiAsync

Obtiene información sobre el usuario o la sesión actual:

static async Task EjemploWhoami(DinaupWebHookClientC client) { string identidad = await client.WhoamiAsync(); Console.WriteLine("Identidad: " + identidad); }

GetDynamicDocumentAsync

Genera un documento dinámico a partir de un ID y un diccionario de parámetros:

static async Task EjemploDynamicDocument(DinaupWebHookClientC client) { var parametros = new Dictionary<string, string> { { "Texto", "Hola Mundo" } }; string contenidoDocumento = await client.GetDynamicDocumentAsync( "9ea36ade-05f4-4abb-abb4-3bf76065494c", parametros ); Console.WriteLine("Contenido del Documento: " + contenidoDocumento); }

GetReportAsync

Obtiene un informe (con paginación y/o filtros si es necesario). Retorna un objeto Report:

static async Task EjemploReport(DinaupWebHookClientC client) { var filtros = new Dictionary<string, string> { { "ValorASumar", "2" } }; Report reporte = await client.GetReportAsync( "d7ddd2ae-8aed-4b23-a866-ab310da969f4", page: 1, resultsPerPage: 20, withFiles: false, values: filtros, safeColumnsName: true ); Console.WriteLine($"Página {reporte.currentPage} de {reporte.totalPages}"); Console.WriteLine($"Total de resultados: {reporte.totalResults}"); // Accede a los datos foreach (var fila in reporte.data) { // Cada fila es un Dictionary<string, string> // Ejemplo de lectura de campo: if (fila.ContainsKey("CampoEjemplo")) { Console.WriteLine("CampoEjemplo: " + fila["CampoEjemplo"]); } } }

WriteOperationAsync (Escritura de Datos)

Existen distintas sobrecargas para enviar datos a Dinaup (un registro simple, registro + lista asociada o lotes).

a) Escritura Simple (Un registro)

static async Task EjemploEscrituraSimple(DinaupWebHookClientC client) { var registro = new Dictionary<string, string> { { "TextoPrincipal", Guid.NewGuid().ToString() }, { "ValorEntero", "15" }, { "CampoDecimal", "0.85" } }; string resultado = await client.WriteOperationAsync( "section-id-de-prueba", "id", false, // scripts: si deseas ejecutar scripts del servidor ponlo en true registro ); Console.WriteLine("Resultado escritura simple: " + resultado); }

b) Escritura con DataWithList (Registro + Lista)

La clase DataWithList permite incluir un objeto principal y una lista asociada, por ejemplo, para detalles de un pedido:

static async Task EjemploEscrituraConLista(DinaupWebHookClientC client) { // Registro principal var registroPrincipal = new Dictionary<string, string> { { "TextoPrincipal", Guid.NewGuid().ToString() }, { "ValorEntero", "20" }, { "CampoDecimal", "0.95" } }; // Lista de elementos relacionados var listaElementos = new List<Dictionary<string, string>>(); for (int i = 1; i <= 5; i++) { var item = new Dictionary<string, string> { { "TextoPrincipal", "Item " + i }, { "ValorDePrueba", "Prueba " + i }, { "PruebaNumerica", i.ToString() } }; listaElementos.Add(item); } var dataConLista = new DataWithList { Main = registroPrincipal, List = listaElementos }; string resultado = await client.WriteOperationAsync( "section-id-de-prueba", "id", false, dataConLista ); Console.WriteLine("Resultado escritura con lista: " + resultado); }

c) Escritura en Lote (Múltiples registros)

Si necesitas enviar varios registros o varios DataWithList en una sola llamada:

static async Task EjemploEscrituraEnLote(DinaupWebHookClientC client) { var loteOperaciones = new List<DataWithList>(); for (int j = 1; j <= 5; j++) { var registroPrincipal = new Dictionary<string, string> { { "TextoPrincipal", Guid.NewGuid().ToString() }, { "ValorEntero", (10 + j).ToString() }, { "CampoDecimal", (0.5 + j / 100.0).ToString() } }; var listaRelacionada = new List<Dictionary<string, string>>(); for (int i = 1; i <= 3; i++) { var item = new Dictionary<string, string> { { "TextoPrincipal", "Item " + i }, { "ValorDePrueba", "Prueba " + i }, { "PruebaNumerica", i.ToString() } }; listaRelacionada.Add(item); } var dataItem = new DataWithList { Main = registroPrincipal, List = listaRelacionada }; loteOperaciones.Add(dataItem); } string resultadoLote = await client.WriteOperationAsync( "section-id-de-prueba", "id", false, loteOperaciones ); Console.WriteLine("Resultado escritura en lote: " + resultadoLote); }

Ejemplo Completo

using System; using System.Threading.Tasks; using System.Collections.Generic; namespace EjemploDinaup { class Program { static async Task Main(string[] args) { // Instancia del cliente var client = new DinaupWebHookClientC( "https://webhook.dinaup.com", "tu-token", "tu-server-id" ); // 1) Verificar conexión Console.WriteLine("Ping:"); Console.WriteLine(await client.PingAsync()); // 2) Obtener identidad Console.WriteLine("Whoami:"); Console.WriteLine(await client.WhoamiAsync()); // 3) Generar documento dinámico var parametros = new Dictionary<string, string> { {"Texto", "Hola Mundo"} }; string doc = await client.GetDynamicDocumentAsync("9ea36ade-05f4-4abb-abb4-3bf76065494c", parametros); Console.WriteLine("Documento dinámico: " + doc); // 4) Obtener informe var reporte = await client.GetReportAsync("d7ddd2ae-8aed-4b23-a866-ab310da969f4", 1, 20, false); Console.WriteLine($"Informe: Página {reporte.currentPage} de {reporte.totalPages}. Resultados: {reporte.totalResults}"); // 5) Escritura simple var registro = new Dictionary<string, string> { { "TextoPrincipal", Guid.NewGuid().ToString() }, { "ValorEntero", "15" }, { "CampoDecimal", "0.85" } }; string resultado = await client.WriteOperationAsync("section-id-de-prueba", "id", false, registro); Console.WriteLine("Escritura simple: " + resultado); // 6) Escritura con lista await EjemploEscrituraConLista(client); } private static async Task EjemploEscrituraConLista(DinaupWebHookClientC client) { var registroPrincipal = new Dictionary<string, string> { { "TextoPrincipal", Guid.NewGuid().ToString() }, { "ValorEntero", "20" }, { "CampoDecimal", "1.05" } }; var listaElementos = new List<Dictionary<string, string>>(); for (int i = 1; i <= 5; i++) { var item = new Dictionary<string, string> { { "TextoPrincipal", "Item " + i }, { "ValorDePrueba", "Prueba " + i }, { "PruebaNumerica", i.ToString() } }; listaElementos.Add(item); } var dataConLista = new DataWithList { Main = registroPrincipal, List = listaElementos }; string resultado = await client.WriteOperationAsync("section-id-de-prueba", "id", false, dataConLista); Console.WriteLine("Resultado escritura con lista: " + resultado); } } }
Last modified: 04 February 2025