How to build a softphone VoIP SIP client
This page will give you a brief introduction to the softphone technology. After reading through this material, you will be familiar with all the terms related to softphones and you also will know the main concepts needed to build your own VoIP SIP client.
Introduction to the VoIP SIP clients
Todays communication is mostly made online. Nearly all people use computers at work, have Internet connections and use it to communicate with co-workers and customers. The most efficient ways of online communication are voice and lately video calls. These methods provide the possibility of instant answering that makes problem solution faster and more efficient.
The communication between two or more computers through the Internet has some hardware and software requirements. This page will show you the main concepts of online communication with the usage of a softphone application. You will find it easy to understand and to use and will never consider using anything else to communicate with your co-workers or customers.
Softphone is a VoIP SIP client program that makes online communication possible for you. If you want to communicate with your business partners, family, friends through the Internet, you definitely need a softphone. This is the easiest and most modern way of communication. You are not only able to call your partners, but will also be able to speak to them face to face by videophoning, and you can even do it with more than one partner at the same time.
You can even show your customers your products in use with videophoning. Why spend a lot of money for TV commercials or marketing tours when you can use a softphone to sell your products directly to your customers? You will be able to make interactive marketing lectures, when the customers can ask questions while they are at home or at their office. You can sell your products with video conferences to a customer in Canada, India and Australia at the same time, and you will save the money that you would spend on travelling to these customers.
When will you need a softphone VoIP SIP client?
If you have any kind of people, be them relatives, friends or business partners, with
whom you want to communicate, you will need a softphone.
Softphone gives you the freedom of communication through the Internet. You can
use any kind of Internet capable devices for communication. You can make video calls.
You can speak more than one partner at the same time with conference call options.
You will always know if your partner is available, and all your partners will know the same information about you.
With a softphone, you will never get unwanted calls during a meeting, as you can set your status to Do Not Disturb, but you will not miss any important messages, as the partner can send you voice or even video messages that you can listen to or watch any time you want.
Why choose a softphone instead of an ordinary phone?
An ordinary telephone or even a mobile has its limitations in communication. You have to use the telephone service, you can only speak to one partner at a time, and you will not be able to see the partner while talking. You will never know if your partner is not available, as the telephone doesn't send any notifications about the other side. If you want to leave a message, your partner has to have a message receiver device.
As we all use computers and the Internet, it is a simple decision to use these as the main communication channel. There also has to be some preparations before using a softphone, but after the basic setups, there will be more benefits.
If you want to build your own softphone VoIP SIP client application, there are a lot of things you will need to be familiar with. This page will summarize everything you ever wanted to know about softphone technologies and show you the basics of building one. You have nothing to do just read it through and you will be able to make your own softphone as easy as opening a tin.
Basically how does a softphone VoIP SIP client work?
The softphone application uses the SIP (see below) protocol to make a connection to a VoIP PBX (private branch exchange) that allows the software to communicate with other softphones, a VoIP telephone or even an ordinary analog telephone device or a mobile as PBX is often connected to the PSTN (public switched telephone network). This may sound difficult, but if you use a good SDK, you will find it easy to build you softphone.
If you use Ozeki VoIP SIP SDK, you will get all the necessary support for building your softphone. You will only have to call the provided functions and set some parameters, and your softphone will work properly.
If you want to implement your own softphone application, you will have to be familiar with the basic concepts and then you will be able to find the best solution for your interests. To develop a software client, you will need an SDK. If you choose it carefully, your only real work will be to configure the SDK to fulfill your requirements. After reading through this material, you will be perfectly capable of deciding which SDK will provide the widest support; you will need to have the best softphone with the least work.
Facts you need to know if you want to build a softphone client application
What is a softphone, and why is it better than a physical hardware phone
Softphone or software phone is a program that allows you to make phone calls with an ordinary computer through an Internet connection. A softphone has all the features of an ordinary telephone like Do Not Disturb (DND), Mute, Flash, Hold, Transfer, etc., but also can be used for video calls, conference calls, user presence indication and other online messaging possibilities. In case of an ordinary phone these are not possible.
When using a softphone you will need a reliable, high-speed Internet connection like DSL or cable net. You will also need to have the suitable hardware devices - video card, sound card, microphone, speaker and web cam (in case of video phoning).
Communication is impossible without a channel
Any kind of communications need a communication channel to transfer data. The ordinary phone networks have the phone cables, mobiles use certain radio frequencies and the online communication devices use the Internet to ensure the connection.
Communication on the Internet needs the usage of some communicating protocols. When making a call with a softphone, you will use the VoIP (Voice over IP) protocol, which ensures the voice transfer through the Internet. For building a softphone, you will have to use a VoIP SDK which provides you the main functions, so that you will be able to create your own VoIP application.
Once the connection between two end-points has been made, the communication is created for the two contacts. The softphones grant the possibility of more than one separate communication lines at the same time. You can communicate using multiple media types, such as Voice communication, Video messages.
You can also manage multiple calls simultaneously. If you want to talk to more than one contact at the same time, you can use the conference call function. The possibility of more than one separate voice or video calls is permitted, so when you are having a voice call with one of your contacts, the softphone allows other contacts to call you. In case of an ordinary phone, the line will be engaged.
Our main goal is essentially to make a phone call
Softphone applications provide you a lot of possibilities for communication. In common with the ordinary phone devices, you need to know the identifier (like phone number) of the other end-point that you want to call. In case of softphones, the first communication step is to establish an accepted connection between the two end-points. You can call the other end-point if only they have already accepted you as a contact.
Software phones are capable of sending instant (written) messages but are mostly used for voice calls and video phoning. To setup a call both parties need to be online and available. The softphone VoIP SIP client application is capable of showing the status of any contacts, so you can check whether your contact is available for voice calls or video calls. The software phone can also show you if the contact has the necessarily devices to make voice or video calls.
For designing the most efficient and most widely usable softphone, make sure, you choose an SDK with the widest support of codes. The codec and function support determines how efficiently you will be able to use the chosen SDK. If the SDK supports most of the available codecs and protocols, you will only have to call the already written methods to use these functionalities.
If you use Ozeki VoIP SIP SDK, you will get all the necessary support for building your softphone VoIP SIP client. You will only have to call the provided methods and set some parameters, and your softphone will work properly.
How can you have a useful softphone keypad
The software phones are not only capable of voice and video calls, but they can also be used for sending voice and video messages. As for this purpose, you will need a keypad with some special buttons on your softphone GUI to make some functions, such as voice or video record, starting, ending, transferring calls available.
These mostly used functions are provided by the SDK and you only have to connect them to your function buttons. You can also make menus for these functions, but users are widely fond of quick buttons and shortcuts, so consider to create a user interface with the most commonly used functions on the keypad.
What kind of audio devices you will need
To use a softphone VoIP SIP client, you will need a sound card, a microphone and a speaker, or a headset or USB phone. You will also have to use some audio codec sets to ensure the voice connection compatibility between the callers.
When using a software phone you will be able to make conference calls; this means that you can talk to more than one person at a time. In this case all the end-points have to use the same audio codecs for the communication. Some standard audio codec sets ensure this compatibility. For example you can use the <G.722 or G.729 codec sets with your softphone.
The easiest way to use the voice call function in a softphone is with using a headset or a usb phone. The headset is a more comfortable way as you wont need your hands to hold it. You can also use a speaker and a separate microphone to make phone calls online, but it can be a bit uncomfortable as the common microphones have low capacity, and you will have to have them close to your mouth while speaking.
Using a speaker also means that everyone in the room will hear your chat and there can be circumstances when this is not allowed. In case of using a speaker, there can be some echo during the call that can be annoying or even can make the proper call impossible. When using a headset, this echo problem does not occur.
As you can see in Figure 2, you can easily establish VoIP communication through your Internet connection, if you have a softphone application. For voice callings both end-points have to have at least a sound card and a headset each.
When implementing a softphone, you will have to make sure that your application supports these devices properly. The VoIP SDK, which is essential if you dont want to write every single method alone, usually provides support for the commonly used devices and the communication and connection protocols that are needed to implement a softphone. If you use a really good SDK, you will only need to call the fitting methods in your softphone application.
If you use Ozeki VoIP SIP SDK, you will get all the necessary support for building your softphone. You will only have to call the provided functions and set some parameters, and your softphone will work properly.
When the partner is unavailable, leave an audio message
In some cases, when the contact, you want to communicate with is not available (may be idle or even offline), softphones can provide a possibility to send them audio messages. In this case you will need to record your message and send it to the contact, who will be able to listen to it any time suitable for them.
This method can also be used when you have to send some kind of report to your contact. In that case you record your report, send it to the contact and they can listen and re-listen to it any time.
Audio messages require the same audio codecs that are used with voice calling. In case of voice messages, you will need to use some audio compression techniques (these techniques are also used for transferring your voice while speaking to your contacts). This is needed to ensure that the data transferred will not be too big to handle. There are certain audio compression standards (speex)that can be used for this purpose. Make sure your SDK supports audio compression to make your work easier.
If you use Ozeki VoIP SIP SDK, you will get all the necessary support for building your softphone. You will only have to call the provided functions and set some parameters, and your softphone will work properly.
Want to speak with more people at one time? Use a conference call
A conference call is a possibility to communicate with more than one contact at the same time. All the contacts have to have the essential hardware and software support for the call, but they can use multiple kinds of devices as it is seen in Figure 3. They use an ordinary computer, a laptop or a tablet PC, etc.
Videophoning allows you to see the partner face to face
If you want to use your softphone client as a videophone, you will need a web cam and a good video card. You can, of course, make a one-sided video call when only one of the end-points has a web cam installed. In this case one of the softphones will only be able to use the voice chat function while the other can send video too.
Figure 4 shows you, that if both end-points have a web cam, the communicating partners can see each other's faces while communicating. There is also a possibility to disable the web cam, when you do not want your partner to see your face.
Video communication also needs a reliable Internet connection. Some time ago with low speed Internet video phoning was discursive or simply impossible, but today the audio and video codecs allow you the possibility of using these technologies with lower Internet connection too.
Sometimes there can be problems with the connection like the video is not continuous, there are jumps in the video stream, the voice and the image are not synchronous, etc. These are the most common problems of a softphone video call, but using the proper codec packs you will not likely meet these any more.
Video chats can also be made as conference calls, this gives you the possibility of office meetings or lectures even if the participants are far from each other.
Video message is also a possibility for offline friends
The same method as in the case of voice messaging, you can record and send video messages with your software phone. In this case, you also have to compress your recorded video before sending. Uncompressed video files are too large to send efficiently. There are standards for video (and audio) compression. Make sure you choose a VoIP SDK that provides you the support of them.
If you use Ozeki VoIP SIP SDK, you will get all the necessary support for building your softphone. You will only have to call the provided functions and set some parameters, and your softphone will work properly.
Let's see the basic protocols related to a softphone VoIP SIP client
For the voice communication between two end-points, both have to use the same communication protocols and at least one common audio codec. All softphones usually use a wide variety of audio codecs of minimum sets of G.722 or G.729.
SIP
Softphones usually use the SIP (Session Initiation Protocol) for building connection between the end-points.
SIP is an application-layer control (signaling) protocol for creating, modifying, and terminating sessions with one or more participants. These sessions include Internet telephone calls, multimedia distribution, and multimedia conferences.
A motivating goal for SIP is to provide a signaling and call setup protocol for IP-based communications that can support a superset of the call processing functions and features present in the public switched telephone network (PSTN). Its focus is call-setup and signaling.
The features that permit familiar telephone-like operations: dialing a number, causing a phone to ring, hearing ring back tones or a busy signal - are performed by proxy servers and user agents. Implementation and terminology are different in the SIP world but to the end-user, the behavior is similar.
VoIP
Voice over IP is a set of technologies, protocols and transmission techniques that are used to establish a stable communication between two connected end-points using the Internet. VoIP is also often referred to Internet telephony or IP telephony.
The steps involved in originating a VoIP telephone call are signaling and media channel setup, digitization of the analog voice signal, encoding, making packets, and transmission as Internet Protocol (IP) packets over a packet-switched network. On the receiving side, similar steps (usually in the reverse order) such as reception of the IP packets, decoding of the packets and digital-to-analog conversion reproduce the original voice stream.
VoIP is available on many smartphones and internet devices so even the users of portable devices that are not phones can still make calls or send SMS text messages over 3G or Wi-Fi.
Figure 5 shows the wide variety of devices that can be used with softphone applications. Some of these use mobile technologies like smart phones or tablets; others use the standard Internet connections.
Digitize analog voice and video
Voice and video data are analog but the computers can only cope with digital data, so you have to use some standard methods to digitize the analog data before being able to send or even store it. When you want to build a softphone, you will need to cover this matter too.
Check the needed codec for digitization here.
Make sure, you choose an SDK that provides support for data digitization, so you wont need to do it from the start.
Data compression for VoIP communication
Communication over the Internet means that the two end-points send and receive messages - data packets - over the IP protocol. The packet sending over the Internet has the critical need of compression, as the packet size is limited and the higher number of the packets increases the possibility of packet loss. This means that some of the sent information will be missed, or the whole message will be impossible to reverse on the receiving side.
To ensure the lowest possibility of data loss, there are a lot of data compression techniques that make the sent messages as compact as possible. One of these standard techniques is packed into the G711 Alaw codec.
G711 A-law is a logarithmic algorithm for compressing audio and video data. It encodes a 13 bit signed linear PCM sample into logarithmic 8-bit sample. As a result, the G711 encoder will be able to produce a 64 kbit/s bitstream for a signal that is sampled at 8 KHz. The A-law compression enables more quantization levels at lower signal levels.
What you will need to start your softphone
Now you are familiar with the basic terms of the softphone technologies, so you can start to build your own software VoIP SIP client. Before starting, let's recall, what main issues you will have to consider.
- Hardware components - audio and video card, headset or speaker, microphone or USB phone, network providers (modem, cable etc.), web cam (in case video phoning)
- Reliable Internet connection
- Audio and video codec support
- Data digitizing support
- Data compression support
- SIP support
- VoIP support
When you decide to build a softphone application, make sure you will be able to ensure all these features. As for the software side, a good VoIP SIP SDK can provide all the supports, you need.
Now you are ready to build a softphone
As you could see above, there are a lot of software and hardware requirements
that have to be considered when you want to develop your own software phone.
First of all, you will have to use a good SDK that provides you all
the basics, so you will only have to use the technologies, not to build
everything alone from the start.
Download VoIP SIP SDK
The first thing to do if you wish to work with Ozeki VoIP SIP SDK, is to download and install it on your Windows computer. Once installed, you can use Visual Studio to add Voice and Video call capabilities to your project.
Link: Download Voip SIP SDK for Windows
When developing a softphone, you will have to ensure that all the needed codecs, drivers and protocols are covered in your application. To build a fully functional softphone, you have to implement all the required components.
If you have read through this page, you are now familiar with the basics that are to be considered while developing a softphone. You have no other things to do than starting to work on it.
Follow these steps to get the easiest way to have your own softphone:
- Please install the Ozeki VoIP SIP SDK.
-
Read through the basic documentation of the SDK to know what features it
supports. It is recommended to choose an SDK with a wide support list, so you
will be able to use it easily. If the SDK you have chosen does not provide the
necessary support for your application, look for a better one.
If you use Ozeki VoIP SIP SDK, you will get all the necessary support for building your softphone. You will only have to call the provided functions and set some parameters, and your softphone will work properly. - Choose the codec set you want to use. Make sure that the SDK supports the codec pack you use - this makes your work easier. You can use not supported codec sets, but in that case, you will have to write the code to support them.
- Configure the SDK to your taste - use the provided methods to establish connections, make calls, record messages, set user information etc. If you choose a good SDK with a wide support of functions, protocols and codecs, you will be able to configure the most suitable softphones according to your needs.
- Create a high-performance, easy to use and nice Graphical User Interface. A good SDK also provides you solutions for building a GUI.
- Create contact lists, make calls, and enjoy your softphone possibilities.
Summary
This page collected the basic concepts of a softphone application that need to be considered when building a software phone. If you are familiar with the main terms and needed technologies showed above, you will be able to build your own softphone client using a VoIP SIP SDK.
After choosing the most suitable SDK, you will make some decisions over the used technologies, such as codecs or VoIP services, and then you will find it easy to develop your own softphone application.
If you have any questions that are not answered on this or the related pages, feel free to contact us for more information.
Related pages
More information
- How to build a softphone voip sip client
- Register to SIP PBX
- Voip softphone development
- How to encrypt voip sip calls with sip encryption
- How to encrypt voip sip calls with rtp encryption
- How to ring a sip extension csharp example for sip invite
- How to make a sip voice call using csharp
- Voip multiple phone lines
- How to send stream of voice data into call using csharp microphone
- How to receive voice from SIP voice call using csharp speaker
- How to make conference voice call using voip sip
- How to play an mp3 file into a voice call using csharp
- How to convert text to speech and play that into a call using csharp
- How to use Microsoft Speech Platform 11 for TTS and STT
- How to record voip sip voice call
- How to accept incoming call using csharp
- How to reject incoming call using csharp
- How to read Headset buttons using Bluetooth
- How to implement auto answer using csharp
- How to recognize incoming voice using speech to text conversion
- Voip forward call
- Voip blind transfer
- Voip attended transfer
- Voip do not disturb
- Voip call hold
- SIP Message Waiting Indication
- Voip DTMF signaling
- How to work with sip and sdp in voip sip calls
- How to work with rtp in voip sip calls
- How to make voip video calls in csharp
- Voip video codec
- Shows how to use SpeechToText Google API
- How to convert Text to Speech using C# and Google
- Azure Text-to-Speech