Verbara.Sdk.Live
2.8.0
dotnet add package Verbara.Sdk.Live --version 2.8.0
NuGet\Install-Package Verbara.Sdk.Live -Version 2.8.0
<PackageReference Include="Verbara.Sdk.Live" Version="2.8.0" />
<PackageVersion Include="Verbara.Sdk.Live" Version="2.8.0" />
<PackageReference Include="Verbara.Sdk.Live" />
paket add Verbara.Sdk.Live --version 2.8.0
#r "nuget: Verbara.Sdk.Live, 2.8.0"
#:package Verbara.Sdk.Live@2.8.0
#addin nuget:?package=Verbara.Sdk.Live&version=2.8.0
#tool nuget:?package=Verbara.Sdk.Live&version=2.8.0
Verbara.Sdk.Live
Real-time domain objects for Asterisk PBX, built on AMI events.
Features
- Live tracking of channels, queues, agents, and conferences
AsteriskServeraggregates all managers from a single AMI connectionAsteriskServerPoolfederates multiple servers with agent routing (designed for 100K+ agents; sizing guidance inhigh-load-tuning.md— no load test at that scale exists)- Thread-safe with per-entity locks and
ConcurrentDictionary - Lazy queries:
GetAgentsByState(),GetChannelsByState(),GetQueuesForMember() System.Diagnostics.Metricsfor observable gauges (active channels, queue sizes)
Quick Start
var server = new AsteriskServer(connection, logger);
await server.StartAsync();
// Access live state
foreach (var channel in server.Channels.GetChannelsByState(ChannelState.Up))
Console.WriteLine($"Active call: {channel.CallerId} -> {channel.Extension}");
// React to changes
server.Agents.AgentStateChanged += agent =>
Console.WriteLine($"Agent {agent.AgentId}: {agent.State}");
Multi-Server
var pool = new AsteriskServerPool(connectionFactory, loggerFactory);
await pool.AddServerAsync("pbx-east", eastOptions);
await pool.AddServerAsync("pbx-west", westOptions);
// Federated routing
var server = pool.GetServerForAgent("Agent/1001");
Reconciling the channels
VerbaraServer.ReconcileChannelsAsync() asks Asterisk for its channel snapshot (Status), reads it to the end and
reconciles the channel table against it: the channel part of a state load, and nothing else. It asks for no queue or
agent state.
await server.ReconcileChannelsAsync(cancellationToken);
- A channel the snapshot no longer lists is removed as a reload removes it, so a session manager attached to the server ends its call with no hangup cause. A channel the snapshot lists and the table lacks is admitted as reported.
- A channel that arrives, or hangs up, while the snapshot is being read is left as the live events made it.
- A snapshot that did not complete reconciles nothing: a cancelled read throws
OperationCanceledException, and a read whose AMI session ended, or a connection that is not established, throwsAmiNotConnectedException. - A
Statusthat Asterisk refuses (an AMI user whosewritehas none ofsystem,callorreporting) reconciles nothing and does not throw. It is logged at Warning the first time in an AMI session and at Debug after that. - Each run is traced as a
live channel-reconcileactivity, taggedlive.channelsand, on a refusal,live.status.refused, and logged at Debug. It is not reported as a state load.
The session engine's reconciliation sweep calls it: AddVerbaraSessions for the single server, and
AddVerbaraSessionsMultiServer for every server of the pool. A host can also call it on a schedule of its own; on a
multi-server host, switch the pool sweep off first, or each server receives two Status per interval.
Documentation
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. 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. |
-
net10.0
- Microsoft.Extensions.Configuration.Abstractions (>= 10.0.12)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.12)
- Microsoft.Extensions.Diagnostics.HealthChecks (>= 10.0.12)
- Microsoft.Extensions.Hosting.Abstractions (>= 10.0.12)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.12)
- Microsoft.Extensions.Options (>= 10.0.12)
- System.Reactive (>= 7.0.0)
- Verbara.Sdk (>= 2.8.0)
- Verbara.Sdk.Ami (>= 2.8.0)
NuGet packages (3)
Showing the top 3 NuGet packages that depend on Verbara.Sdk.Live:
| Package | Downloads |
|---|---|
|
Verbara.Sdk.Sessions
Session Engine - call session correlation, state machines, and domain events |
|
|
Verbara.Sdk.Activities
Activities - high-level telephony operations: Dial, Hold, Transfer, Park, Bridge, Conference |
|
|
Verbara.Sdk.Hosting
Verbara.Sdk.Hosting - DI extensions and meta-package referencing all Verbara Sdk sub-packages |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 2.8.0 | 0 | 10/9/2026 |
| 2.7.0 | 548 | 10/3/2026 |
| 2.6.1 | 508 | 9/30/2026 |
| 2.6.0 | 751 | 9/24/2026 |
| 2.5.3 | 647 | 9/13/2026 |
| 2.5.2 | 307 | 9/13/2026 |
| 2.5.1 | 322 | 9/12/2026 |
| 2.5.0 | 414 | 8/25/2026 |
| 2.4.0 | 1,999 | 7/27/2026 |
| 2.3.2 | 721 | 7/20/2026 |
| 2.3.1 | 344 | 7/14/2026 |
| 2.3.0 | 591 | 7/6/2026 |
| 2.2.1 | 984 | 5/23/2026 |
| 2.2.0 | 198 | 5/20/2026 |
| 2.1.2 | 208 | 5/8/2026 |
| 2.1.1 | 174 | 5/7/2026 |
| 2.1.0 | 3,440 | 5/7/2026 |
| 2.0.0 | 181 | 5/6/2026 |