InventiveLabs.VoiceElementsClient
9.8.4
dotnet add package InventiveLabs.VoiceElementsClient --version 9.8.4
NuGet\Install-Package InventiveLabs.VoiceElementsClient -Version 9.8.4
<PackageReference Include="InventiveLabs.VoiceElementsClient" Version="9.8.4" />
<PackageVersion Include="InventiveLabs.VoiceElementsClient" Version="9.8.4" />
<PackageReference Include="InventiveLabs.VoiceElementsClient" />
paket add InventiveLabs.VoiceElementsClient --version 9.8.4
#r "nuget: InventiveLabs.VoiceElementsClient, 9.8.4"
#:package InventiveLabs.VoiceElementsClient@9.8.4
#addin nuget:?package=InventiveLabs.VoiceElementsClient&version=9.8.4
#tool nuget:?package=InventiveLabs.VoiceElementsClient&version=9.8.4
Voice Elements Client
Introduction
Voice Elements makes it easy to build traditional phone, SMS, and WebRTC applications using .NET. It provides the client APIs needed to connect applications to the Voice Elements platform and create programmable communications workflows.
Version 9.8.4.0 Highlights
Version 9.8.4.0 adds configurable DTMF capture with signaled-DTMF preference and in-band fallback, updates the supported client targets, and includes transport, logging, documentation, and error-handling improvements.
Supported Target Frameworks
Version 9.8.4.0 provides client libraries for:
- .NET Framework 4.8 (
net48) - .NET 8 (
net8.0)
The package no longer provides .NET Framework 4.7.2 or .NET Core 3.1 assemblies.
Signaled DTMF with In-Band Fallback
VoiceResource now exposes DtmfCaptureMode, allowing an application to select how DTMF digits are captured for voice operations.
| Mode | Behavior |
|---|---|
Negotiated |
Default. Uses the existing behavior established by the negotiated media profile. |
SignaledOnly |
Uses only signaled RFC 2833 or SIP INFO digits. |
InbandOnly |
Uses only digits detected in the audio stream. Signaled digits are ignored by the resource. |
SignaledWithInbandFallback |
Treats signaled digits as authoritative and uses in-band detection only when no signaled evidence was received for the retained capture. |
The fallback mode is intended for carrier or interconnect conditions where a call negotiates signaled DTMF but later delivers only audible in-band tones. It retains the existing single DigitBuffer; applications do not need to reconcile separate buffers. When signaled digits are present, possible in-band artifacts or brief audible "chirps" are discarded in favor of the signaled result.
Existing MaximumDigits, TerminationDigits, interdigit timing, and retained digit-buffer behavior continue to apply. For example, digits entered during a digit-terminable Play or PlayTTS operation remain available to a subsequent GetDigits call.
voiceResource.DtmfCaptureMode =
VoiceElements.Common.DtmfCaptureMode.SignaledWithInbandFallback;
voiceResource.TerminationDigits = "#";
voiceResource.PlayTTS("Please enter your PIN followed by the pound key");
voiceResource.GetDigits();
string enteredDigits = voiceResource.DigitBuffer;
VoiceElements.Common.DtmfCaptureSource source =
voiceResource.LastDtmfCaptureSource;
LastDtmfCaptureSource reports how the most recent digit-sensitive operation completed while fallback mode was active:
| Value | Meaning |
|---|---|
None |
No capture source is reported. This is also the value used outside fallback mode. |
Signaled |
The accepted digits came from RFC 2833 or SIP INFO signaling. |
Inband |
The accepted digits came from the in-band detector. |
LastDtmfCaptureSource is metadata only and never contains digit values.
The mode is sent to the server with the next voice operation. A server predating this feature silently uses its existing negotiated behavior, so SignaledWithInbandFallback requires Voice Elements Server 9.8.4.0 or later with matching platform components. Voice resources are restored to Negotiated at server assignment boundaries so a prior client's mode cannot leak into a later assignment.
Reliability and Maintenance Improvements
- Corrected ZeroMQ message and frame disposal paths to reduce unmanaged-memory retention during long-running client connections.
- Corrected UTF-8 logging so lines containing multibyte characters are written completely instead of being truncated.
- Improved voice-operation reply cleanup, including closing reply packets on error paths and preserving DTMF source metadata before an operation exception is returned.
- Expanded and repaired the public API XML documentation and introduced a DocFX-based documentation build.
- Updated shared dependencies and build support for .NET Framework 4.8 and .NET 8.
Serializer Compatibility Reminder
Voice Elements Client uses the current serializer by default. Legacy BinaryFormatter compatibility remains available only for applications that must connect to Voice Elements Servers older than version 9.8.2.
Applications connecting to Voice Elements Server 9.8.2 or later, including the hosted Voice Elements Server banks, can use the default configuration. Customers with supported premise-based installations can contact support@inventivelabs.com for server upgrade information.
When connecting to a server older than version 9.8.2 from .NET 8, enable the legacy formatter in the project file:
<PropertyGroup>
<EnableUnsafeBinaryFormatterSerialization>true</EnableUnsafeBinaryFormatterSerialization>
</PropertyGroup>
Then enable the compatibility setting in appsettings.json:
"ApplicationSettings": {
"VoiceElements.Properties.Settings": {
"UseLegacyBinarySerializer": true
}
}
Alternatively, set the option before connecting:
VoiceElements.Common.AppSettingsCommon.UseLegacyBinarySerializer = true;
Legacy BinaryFormatter mode should be used only when required for an older server because BinaryFormatter is deprecated and unsafe for untrusted data.
| 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. |
| .NET Framework | net48 is compatible. net481 was computed. |
-
.NETFramework 4.8
- Microsoft.Extensions.ObjectPool (>= 9.0.7)
- Newtonsoft.Json (>= 13.0.4)
- System.Threading.Channels (>= 9.0.7)
-
net8.0
- Drive.MigraDocPdfSharp (>= 1.0.0-preview2-1)
- Microsoft.Extensions.Configuration (>= 9.0.8)
- Microsoft.Extensions.Configuration.Binder (>= 9.0.8)
- Microsoft.Extensions.Configuration.FileExtensions (>= 9.0.8)
- Microsoft.Extensions.Configuration.Json (>= 9.0.8)
- Microsoft.Extensions.ObjectPool (>= 9.0.7)
- Newtonsoft.Json (>= 13.0.4)
- System.Diagnostics.PerformanceCounter (>= 4.5.0)
- System.Drawing.Common (>= 6.0.0)
- System.Resources.Extensions (>= 6.0.0)
- System.Text.Encoding.CodePages (>= 6.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 9.8.4 | 0 | 10/15/2026 |
| 9.8.3 | 280 | 6/5/2026 |
| 9.8.2 | 558 | 4/27/2026 |
| 9.8.1-pre | 272 | 3/18/2026 |
| 9.7.3 | 1,735 | 6/5/2025 |
| 9.7.2 | 1,488 | 2/17/2025 |
| 9.6.2 | 1,001 | 10/9/2024 |
| 9.4.1 | 1,596 | 2/8/2024 |
| 9.2.1 | 1,416 | 1/28/2022 |
| 9.1.1-pre | 1,027 | 4/28/2020 |
| 9.1.0-pre | 783 | 1/29/2020 |
| 8.6.4 | 1,199 | 2/5/2021 |
| 8.6.3 | 2,515 | 11/2/2018 |
| 8.6.2 | 1,228 | 9/28/2018 |
| 8.6.1.1 | 9,208 | 4/18/2018 |
| 8.4.1.1 | 1,995 | 1/31/2017 |