Asterisk.Core.Responses
1.0.0
dotnet add package Asterisk.Core.Responses --version 1.0.0
NuGet\Install-Package Asterisk.Core.Responses -Version 1.0.0
<PackageReference Include="Asterisk.Core.Responses" Version="1.0.0" />
<PackageVersion Include="Asterisk.Core.Responses" Version="1.0.0" />
<PackageReference Include="Asterisk.Core.Responses" />
paket add Asterisk.Core.Responses --version 1.0.0
#r "nuget: Asterisk.Core.Responses, 1.0.0"
#:package Asterisk.Core.Responses@1.0.0
#addin nuget:?package=Asterisk.Core.Responses&version=1.0.0
#tool nuget:?package=Asterisk.Core.Responses&version=1.0.0
Asterisk.Core.Responses
Introducción
Asterisk.Core.Responses es una biblioteca ligera de C# que proporciona las clases base y tipadas para manejar las respuestas del Asterisk Manager Interface (AMI).
Este paquete se enfoca en recibir, deserializar y tipar la información devuelta por el servidor Asterisk tras la ejecución de una acción (Action). Al utilizar clases específicas como LoginResponse o PingResponse, se garantiza la seguridad de tipos (type-safety) y un manejo claro de los datos de respuesta.
Características Principales
- Tipificación Rigurosa: Todas las respuestas AMI se mapean a clases tipadas y fuertemente inmutables (
readonly structy propiedades{ get; }). - Clase Base Unificada: Utiliza
ResponseBasecomo punto de partida, lo que asegura que cada respuesta incluye campos esenciales como el estado de éxito (Success), el ID de Acción (ActionID) y la marca de tiempo de recepción (Received). - Optimización de C#: Implementa propiedades de solo lectura para maximizar la eficiencia y la inmutabilidad de los datos.
Instalación
Puedes instalar el paquete a través de NuGet:
dotnet add package Asterisk.Core.Responses
O en la Consola del Administrador de Paquetes de Visual Studio:
Install-Package Asterisk.Core.Responses
Uso Básico
Todas las respuestas heredan de la clase abstracta ResponseBase. Cuando envías una acción al servidor AMI, esperas una de estas clases tipadas como resultado.
Caso de Uso: Obtención de Respuestas por Eventos
En esta arquitectura, las respuestas se obtienen mediante la suscripción a un delegado ResponseReceived asociado a la acción enviada. Las clases de este paquete son los argumentos (TResponse) que permiten acceder a los datos de forma segura.
Flujo de Login-Challenge
Este ejemplo muestra cómo el cliente AMI (presumiblemente usando clases de Asterisk.Core.Actions) obtiene las respuestas de manera asíncrona a través de eventos para orquestar la secuencia de autenticación.
Paso 1: Enviar ChallengeAction y Suscribirse al ChallengeResponse
El cliente envía la acción y adjunta un método handler que recibirá la respuesta tipada.
// Enviado por el cliente AMI
var challengeAction = new ChallengeAction();
// El delegate espera una respuesta tipada 'ChallengeResponse'
challengeAction.ResponseReceived += SendLoginWhenChallengeReceived;
_action.SendAction(challengeAction);
Paso 2: El Handler Recibe la Respuesta Tipada (ChallengeResponse)
El método SendLoginWhenChallengeReceived recibe el objeto ChallengeResponse y accede a su propiedad Challenge de forma segura.
private void SendLoginWhenChallengeReceived(object? sender, ChallengeResponse e)
{
// Las clases tipadas de este paquete (e.g., ChallengeResponse)
// proporcionan acceso directo a los campos AMI.
if (!e.Success)
{
Console.WriteLine($"Error: Fallo al obtener Challenge (ActionID: {e.ActionID}).");
return;
}
Console.WriteLine($"Token de Desafío recibido: {e.Challenge}");
// Utilizamos el dato tipado (e.Challenge) para construir la siguiente acción
var loginAction = new LoginAction(_username, _secret);
loginAction.Key = e.Challenge;
// Suscribimos el siguiente paso en el flujo a la respuesta tipada 'LoginResponse'
loginAction.ResponseReceived += EnableReconnectedWhenAuthenticationAccepted;
_action.SendAction(loginAction);
}
Paso 3: El Handler Recibe la Respuesta Tipada (LoginResponse)
El método EnableReconnectedWhenAuthenticationAccepted utiliza el objeto LoginResponse para verificar el estado de la autenticación y reaccionar.
private void EnableReconnectedWhenAuthenticationAccepted(object? sender, LoginResponse e)
{
// Uso del estado de éxito tipado de ResponseBase
if (e.Success)
{
Console.WriteLine($"✅ Autenticación aceptada. Mensaje: {e.Message}");
_state.Login = true;
// ... (Iniciar el ping periódico o el siguiente paso)
}
else
{
// Acceso al mensaje específico de la respuesta
Console.WriteLine($"❌ Autenticación fallida. Mensaje: {e.Message}");
}
}
Estructura de Clases Tipadas
Las siguientes clases de respuesta están tipadas y derivadas de ResponseBase:
| Clase | Acción AMI | Propiedades Clave Únicas | Propósito |
|---|---|---|---|
ResponseBase (abstracta) |
N/A | Success, ActionID, Received |
Base para todas las respuestas AMI. |
ChallengeResponse |
Challenge |
Challenge (string) |
Proporciona el token de seguridad para el Login MD5. |
LoginResponse |
Login |
Message (string) |
Confirma la aceptación o el rechazo de las credenciales. |
LogoffResponse |
Logoff |
Message (string) |
Confirma el cierre de sesión AMI. |
PingResponse |
Ping |
Ping (string), Timestamp (DateTime) |
Se usa para medir la latencia y verificar la conexión. |
OriginateResponse |
Originate |
Message (string) |
Confirma si la llamada saliente fue puesta en cola. |
Contribución
¡Las contribuciones son bienvenidas! Si deseas añadir nuevas clases de respuesta o mejorar la documentación, por favor, abre un issue o envía una pull request a nuestro repositorio.
Licencia
Distribuido bajo la licencia MIT.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net8.0
- No dependencies.
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Asterisk.Core.Responses:
| Package | Downloads |
|---|---|
|
Asterisk.Core.Actions
Biblioteca que define las clases de Acción para interactuar con el Asterisk Manager Interface (AMI). |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.0 | 266 | 11/10/2025 |