Platform

Specifications and getting started.

What VoipSDK supports today, what you need to run it, and how to place your first call.

Specifications

Signalling, media and security

Frameworks.NET 8, 9 and 10. Server, worker and WinUI controls target .NET 10.
SIP signallingUDP, TCP and TLS for clients. Digest authentication, registration refresh with backoff, keep-alives. The embeddable server listens on UDP.
Call controlIncoming and outgoing calls, answer, decline, busy, cancel, hang-up, local and remote hold, mute, blind and attended REFER transfer, concurrent calls with configurable limits.
DTMFRFC 4733 RTP telephone events and SIP INFO.
CodecsOpus, G.722, G.711 ยต-law and A-law, G.729, GSM 06.10 and L16, negotiated in your priority order.
Media securitySDES-SRTP, optional or required. TLS for signalling.
NAT traversalOff, STUN (public address in SDP), or ICE with STUN and TURN candidates, including relay-only.
Audio48 kHz 16-bit PCM in 20 ms frames. Windows WASAPI built in, a silent backend for headless hosts, or your own device port.
Prompts and IVRShared audio cache bank, playback with loop and DTMF barge-in, WAV at 8 to 192 kHz, generated audio such as TTS.
DiagnosticsPer-call codec, jitter, packet loss and round-trip time; call history in SQLite or your own store.
ServerRegistrar, internal call routing, registered UDP carrier trunks, built-in audio test extension, HTTP and server-sent-events control API.
SoftphoneHeadless engine, WinUI 3 controls (Windows 10 version 1809 or later), tray reference app with MSI and white-label MSI builds.
Getting started

Your first call in four steps.

  1. Reference the packages: VoipSdk, VoipSdk.Sip.Sipsorcery and VoipSdk.Audio.Windows (plus VoipSdk.Storage.Sqlite for history).
  2. Configure an account with your PBX domain, extension and password.
  3. Start the client to register, and handle IncomingCall.
  4. Dial and follow CallStateChanged to Active before hold, mute or DTMF.

The SDK ships with a technical manual and sample applications: a console client, the WinUI softphone, a server dashboard and a worker test client.

Program.cs
using Microsoft.Extensions.DependencyInjection;
using VoipSdk;
using VoipSdk.Audio.Windows;
using VoipSdk.Sip.Sipsorcery;

var sipPassword = Environment.GetEnvironmentVariable("SIP_PASSWORD")!;
var services = new ServiceCollection();
services.AddVoipSdk(new VoipClientOptions
{
    Accounts = [new SipAccountOptions
    {
        Id = "work", Domain = "pbx.example.net",
        Username = "1001", Password = sipPassword
    }]
}).AddSipsorcery().AddWindowsAudio();

await using var provider = services.BuildServiceProvider();
var client = provider.GetRequiredService<IVoipClient>();
client.IncomingCall += async (_, e) => await e.Call.AcceptAsync();

await client.StartAsync();                  // register
var call = await client.DialAsync("1002");  // send INVITE
Packages

Take only what you need.

VoipSdk

Public API, call states, events, limits and the audio cache. No UI dependency.

VoipSdk.Sip.Sipsorcery

SIP, SDP, RTP/RTCP, codecs, SRTP and ICE.

VoipSdk.Audio.Windows

WASAPI microphone and speaker streams with device enumeration.

VoipSdk.Storage.Sqlite

Call history with schema versioning and bounded retention.

VoipSdk.Softphone

Phone engine, view models, branding and Windows integration.

VoipSdk.Softphone.WinUI

Dialler, call list, contacts, history, settings and tray controls.