After creating a simple VoIP PBX call manager
with the powerful support of Ozeki VoIP SIP SDK, you can improve your call
manager to be more advanced. This article explores how you can create an
advanced VoIP call manager for your SIP PBX with Ozeki SIP SDK.
Please be informed that PBX development support is available in Ozeki VoIP SIP SDK from version 10.0.
You can download the latest Ozeki SIP SDK version from the download
The Private Branch Exchange (PBX) is a hardware or software solution for communication line
establishment. For this purpose Session Initiation Protocol (SIP) is used respectively.
A standard PBX system can be extended with different helping tools that can be used
for initiating a greater and more sophisticated communication network.
The example application introduced in this article shows an advanced call manager
integrated into a PBX system. Call managing functionalities are already implemented as part
of Ozeki VoIP SIP SDK, however, you can extend these functions with any further
functions, by overriding some rules.
Call management can be the most difficult part of the PBX programming, as you
can define very advanced rules for the call handling. This call management is the base of your PBX
The following program code uses the superb background support of Ozeki VoIP SIP SDK,
therefore you will need to download and install Ozeki SIP 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.
The example program you can download from this page shows the background call manager
implementation. The main features are introduced in the following sections, and you will find some
code explanations, as well.
If you have read the Basic PBX Call Manager article, you will see that
a more sophisticated call manager implementation needs really advanced program designing and writing skills.
The inbuilt Call Manager implementation of Ozeki VoIP SIP SDK can handle dial plans
of any difficulty level. The dial plans need a dial plan provider defined in the PBX
solution that contains the routing rules.
The ringing time is also limited in this call manager solution. You can set how long
you want to wait for the called extension(s) to answer the call. If the time limit is exceeded,
the PBX will check the call routing rules in the dial plan and step to the next routing point.
In the PBX more extensions can register with the same SIP account. In this call manager
implementation all the extensions with the same account ring when someone calls the account.
The call manager uses the protocol that waits for the first acceptance of the call.
When one of the extensions accepted the call, the session is initialized between the caller and that
extension, and all the other extensions stop ringing.
The call manager can not only handle simple call routing rules, but it can use
more difficult ones with group routing. Group routing rules can work in two ways.
The group defined in a group rule consists of some extensions. These extensions can
ring at the same time or in a specified order one after the other
according to the group rule. This group ruling can be embedded in any levels and with them
you can define really sophisticated PBX behavior.