Last week we released new version 3.0 of our telephony library AddTapi.NET. You can download demo version of AddTapi.NET from www.traysoft.com. To upgrade purchased version of AddTapi.NET, please send your serial number to firstname.lastname@example.org. Here is a list of new features in AddTapi.NET 3.0:
2-step/consultation call transfer
In addition to one-step/blind transfer, AddTapi.NET 3.0 supports 2-step or consultation call transfer. To start a 2-step transfer, call TapiCall.SetupTransfer() to create a new consultation call. Wait until call state changes to Dialtone, then use TapiCall.Dial() to dial the destination number for the transfer. When consultation call is connected, use TapiCall.CompleteTransfer() to complete the transfer.
Call park/unpark support
3-way conference support
New version adds support for 3-way conference (if supported by the telephony system). To create a 3-way conference, call TapiCall.SetupTransfer() on the existing call to create a second call. Wait until call state changes to Dialtone, then use TapiCall.Dial() to dial the number you want to add to the conference. When the second call is connected, use TapiCall.CompleteTransfer() with the second parameter set to true to join the calls and create 3-way conference.
New call recording engine
AddTapi.NET 3.0 has new audio engine for recording calls. New engine has better performance when recording on many lines simultaneously and is more robust overall. TapiCall.StopPlayback() is now a synchronous operation that stops playback immediately. This change allows call recording to start faster after playing a message, and prevents from loosing first second of the recording on telephony hardware that does not support simultaneous playback and recording. Because new version initializes audio engine as soon as the call is connected, your application can call TapiCall.StartRecording() from the CallConnected event handler.
Call privilege handling
AddTapi.NET 3.0 automatically obtains owner privilege for calls when required, eliminating “application doesn’t have owner privilege” errors. New TapiCall.Privilege property provides information about the current call privilege.
Dialing on existing call
New TapiCall.Dial() method allows applications to dial on existing call. This is useful in many scenarios. For example, when user picks up a phone, new call in Dialtone state is created. Your application can use TapiCall.Dial() method to dial the number on this call.
WaitForDigit and GatherDigits improvements
In AddTapi.NET 3.0 TapiCall.WaitForDigit() and TapiCall.GatherDigits() methods accept negative timeout value. Negative value means that the timeout should start after playback initiated by the Play(String) or Speak(String) is completed.
Additional information about line and address capabilities
New version adds CallFeatures, MaxNumActiveCalls, SupportsPredictiveDialing, IsRoutePoint, IsQueue, MaxNumActiveCalls and MaxNoAnswerTimeout properties that provide additional information about features and capabilities of the telephony hardware.
Added TapiLine.Calls collection that contains all active calls on the line to simplify call management in some scenarios.
Version 3.0 adds DigitDetected event that fires when a DTMF digit is detected on the line. This event provides alternative asynchronous mechanism for handling digits received during the call. TapiCall.WaitForDigit() and TapiCall.GatherDigits() are easier to use synchronous methods for handling DTMF digits.
Other small fixes and improvements
– Added TapiCall.Trunk property to make call tracking across multiple trunks easier.
– Added TapiLine.DisconnectOnBusy property.
– Fixed a bug that caused device-specific functions to fail on some hardware.
– Fixed a bug with TapiCall.WaitUntilDone() always returning false when zero timeout is specified.
– Added checks to prevent multiple initialization of AddTapi.NET library.