Synopsis
In this article I attempt to summarize the basic concepts of VoIP communication and softphone technology. I made a research on this topic and found that Voice over IP technology had great achievements in the last decades, and now we can find various tools to use for online communication or to make our own VoIP implementation. I will give in this article brief definitions of the basic terms concerning the topic and show a possible tool for softphone programming too.
Keywords: VoIP, softphone, communication, .NET, C#
Introduction
This article is written for two purposes. Firstly, it is a comprehensive article about the basic knowledge on VoIP communication and softphone technology, and secondly, is shows the possibility of making our own C# softphone solution.
The two basic terms that are introduced in this article are VoIP and softphone. The following paragraphs give a brief definition for both, and the next sections will clear the main concepts of the terms and give a more detailed description. In the last section I will show a possible C#.NET development kit that can be used for creating a softphone solution.
Voice over IP is the basic concept for today's communication as we all use computers and the Internet on a daily basis. The main goal for VoIP was to group together all the protocols, methods and technologies that are essential for establishing communication over the Internet Protocol.
Softphone is a shortened term for software phone that is usually a desktop application for VoIP communication. The softphone program provides you all the tools for communication as a traditional telephone and more, and it does this on your ordinary PC, your laptop, tablet or mobile phone.
A brief introduction to VoIP technology
Voice over IP is a collection of technologies and protocols that ensure communication over the Internet Protocol. It contains all the necessary tools from the analog voice digitization to the data transmission and processing [1].
The VoIP collection contains protocols for all the purposes of communication. For example the H323 protocol describes the communication sessions for both audio and video communication, while the Session Initiation Protocol (SIP) is responsible for connection establishment, SDP (Session Description Protocol) and RTP (Real-time Transport Protocol) define the media stream packet formats, etc [2].
These protocols are defined in Request for Comments (RFC) documents and they have to be implemented when you want to create a VoIP communication application.
The main purpose of an average VoIP user is to communicate with others using a comfortable and easy-to-use tool and that the communication should cost nothing. An IT professional, however, knows that VoIP communication covers a lot of background support that must be implemented and work reliable for an efficient VoIP communication.
When implementing a VoIP solution, we need to choose the protocols, audio and video codecs and some third-party tools or devices that all must be supported in our program. We also need to decide on the type of the VoIP application we will use.
The VoIP communication programs can be divided into classes. There are desktop solutions like softphones or website embedded programs like webphones and there are also some professional solutions that are used in company environments like call centers.
The decision about the software type depends on the purpose of the use.
This article covers the softphone technology and the next section will give an introduction to the technology itself and the basic terms and tools that are needed for making a softphone application.
Basic terms concerning softphones
A software phone is a VoIP desktop application that is used for audio and video communication and can be a great replacement of an ordinary telephone. It is capable for all the purposes of a normal physical phone but has some extra features too like video phoning or providing presence information about the users [3].
The softphone usually looks similar to a hardware telephone, having a keypad, etc. and it also functions similar as you need to press the keypad buttons for dialing, for example [4].
While the original telephones connect to each other using the Public Switched Telephone Network (PSTN), the softphones communicate by connecting to a Private Branch Exchange (PBX) system that can be a physical hardware but also a software solution.
The softphones connect to the PBX using the SIP protocol and the PBX provides the necessary tools for the communication. The PBX can also be connected to a PSTN, so the softphones can also reach the normal telephone end-points.
In order to connect to a PBX, the softphone needs a SIP account that is usually provided by the PBX itself through a service provider. There are also free PBX systems to use and we can also write a PBX if we want and have time for it.
The PBX provides the connection of the softphones by establishing a communication channel over the Internet Protocol. The communication itself is made by using the audio and video devices that are connected to your PC. For audio communication you need a microphone and a speaker (or something compatible like a headset) and for video phoning you need a web cam. These devices have to be supported in the softphone application too.
The softphone communication build up as follows:
The softphone registers to the PBX with a SIP account
The softphone sends a communication request to another registered client through the PBX
The PBX establishes the connection and gets out of the communication channel
The softphone clients communicate with each other by using audio and video peripherals
The softphone communication should also know the basic telephone functionalities. The softphone client should be able to start, accept, reject, hold, transfer or stop a call. It should eventually join to a conference call or start one and it basically should be able to fulfil all communication needs that can occur.
When we want to create a softphone, we need to be able to write the support for all the telephone purposes and the background protocols and standards. When we collect all the support needed it is clear that a softphone application is something more complex than a "Hello world!" program.
In the next section I try to introduce a software development kit that I tried for VoIP application development. It is clear and serves the purpose and has a very reliable support that I found really useful during the programming.
.NET solutions for softphone programming
As a programmer I always wanted to invent my own solutions for any IT problems that occurred during my work. This means that after learning enough information about VoIP communication and softphones, I do not want to use a third party softphone application but want to write my own.
I basically use C# for programming, so it was out of question that I wanted to make a C# softphone. After some research I realised that I will not write the whole concept from the first line as it would possibly cost me years or at least months of work and I did not want to spend so much time on a single project.
After deciding on using some help, I started to look for SDK solutions that provide VoIP communication support and I have found some promising kits. The SDK I am now testing is an Ozeki product and I am really satisfied with it right now [5].
The trial version of the SDK is free to download and use and they also have some example programs that can be downloaded and tried. These sample programs can be used - with some minor changes - for VoIP communication, and when I wanted to invent my own application, I found a lot of source code explanation and I was able to make my own VoIP softphone.
Conclusion
In this article I wanted to give a brief introduction on the VoIP technology and softphones. The article contained the basic terms concerning VoIP an softphone solutions, and I also referred to a software development kit that can be used for C# VoIP programming. If there are people interested in these topics, I will write more and show my own source codes and share my further experiences too.
Acknowledgement
I need to say thanks to the great developer and support teams of Ozeki Systems Ltd. who kindly answered all my questions about softphone technology and provided the possibility to try their SDK for putting my work into practice.
References
[1] http://voip-sip-sdk.com/p_228-introduction-to-voip-technology-voip.html
[2] http://en.wikipedia.org/wiki/Voice_over_IP
[3] http://voip-sip-sdk.com/p_266-how-to-build-a-softphone-using-sip-and-voip-voip.html
[4] http://en.wikipedia.org/wiki/Softphone
[5] http://voip-sip-sdk.com/