Tel.: 00 36 52 532 731

How to build a multichannel IVR server (accepting calls and playing back wav audio)

This article is a brief introduction about multichannel IVR servers in relation with Ozeki VoIP SIP SDK. After reading through this page you will be fully familiar with all the essential terms concerning multichannel IVR server solutions and what you will need for creating your own solution using Ozeki VoIP SIP SDK.


Interactive Voice Response (IVR) systems are used in telecommunication for getting interaction from human callers by using DTMF signals or spoken words. The IVR system basically uses a tree structured menu system that can be navigated in with voice or pressing the telephone buttons.

The IVR systems are usually used by big companies where a lot of clients can have the same problem that can be answered mechanically without the need of an actual human agent to talk with.

Figure 1 - VoIP multichanel IVR

When implementing an IVR server, you need to consider the most possible fields the IVR tree should contain and you need to sort them into a hierarchical structure. This tree structure has to be implemented and the navigation in it needs the background support for DTMF and/or voice recognition.

Ozeki VoIP SIP SDK grants all the support you will need to create an IVR system and for implementing any navigation method you need.

The following program code uses the background support of Ozeki VoIP SIP SDK, therefore you will need to download and install the SDK on your computer before starting to use the program code. You will also need to have Visual Studio 2010 or compatible IDE and .NET Framework installed on your system, as the program code below is written in C# language.

You can extend an IVR solution with multiple call support in a simple way. First of all you need to have an SDK license that has multiple call support than you can simply use the pervious example codes with some extensions.

You can find example codes for IVR solutions in the following articles:

You can manage multiple calls like in the example program of the article Windows Forms DTMF IVR. That solution uses a List called activeCalls and when a call pops in and is accepted it is put into the List (Code 1).

void softPhone_IncomingCall(object sender, VoIPEventArgs<IPhoneCall> e)
    CustomerCall call = new CustomerCall(e.Item, menuBuilder.GetRootMenu());
    call.NotifyAction += new EventHandler<GenericEventArgs<string>>(call_NotifyAction);
    call.Closing += new EventHandler(call_Closing);

Code 1 - Adding an automatically accepted call to the active calls list

When a call is ended it is removed from the activeCalls List like it is shown in Code 2.

void call_Closing(object sender, EventArgs e)
    CustomerCall customerCall = sender as CustomerCall;
    customerCall.NotifyAction -= call_NotifyAction;
    customerCall.Closing -= call_Closing;

Code 2 - Removing a call from the active calls list

You can also extend these solutions with human operator support. In that case the calls can be transferred to an operator from the call center server. For solutions of this purpose please check IVR human cooperation page.

This article introduced you the basic knowledge about building multichannel IVR server solutions and showed how Ozeki VoIP SIP SDK can help you to fulfill your wishes about this topic. If you have read through this page carefully, you already have all the knowledge you need to start on your own solution.

As you are now familiar with all the terms concerning this topic, now it is time to take a step further and explore what other extraordinary solution Ozeki VoIP SIP SDK can provide to you.

If you have any questions or need assistance, please contact us at

You can select a suitable Ozeki VoIP SIP SDK license for your project on licensing page

Related Pages