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).
WebHook es el método simplificado para interactuar con la api de Dinaup. Ideal para aplicaciones sencillas o con poca carga de trabajo. Las aplicaciones más exigentes deben usar Dinaup .NET que proporciona métodos avanzados.
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