Tuesday, April 28, 2015

How to create a basic SIP softphone application in C#

Hi all, 

In this post I am going to introduce how to implement the basic softphone functionality. I will show how to create a console application that functions as a SIP softphone. It will be able to register to a phone system. (In the first tutorials I will focus on the background behaviour of the program, I will implement the GUI elements later.) 

Are you ready? Okay, let's get it started!


Monday, April 27, 2015

C# Softphone Development Basics

Hi all,

Welcome to my C# VoIP blog! In this blog I am going to present the procedure of my softphone development step-by-step. I have established this blog in order to share my experiences and to discuss the further programming facilities. So do not hesitate to leave a constructive comment related to this Great C# Softphone Project! I am looking forward to your messages!


Okay, let's start VoIP programming by tasting of the basics...




1. What is VoIP?


VoIP is the acronym for Voice over Internet Protocol. It is a methodology and group of technologies for the delivery of voice communications and multimedia sessions over Internet Protocol (IP) networks, such as the Internet. VoIP can be also called IP telephony, Internet telephony, broadband telephony or broadband phone service.

As we technically live our lives on the Internet, it is not a real surprise that our communication is also basically made on it. This and the fact that VoIP communication has a lot of advantages over the ordinary communication forms, like letters or SMS messaging, make VoIP one of the most rapidly improving technologies today.

There are many popular software products that uses the VoIP technology. Let's see some of them:

  • Skype
  • Viber
  • Google+ Hangouts
  • FaceTime
  • All IP telephones e.g. at workplaces

Popular software product using VoIP

I am sure that you use (or leastwise know) at least one of the previous applications, don't you? Some of them are computer-based programs or mobile applications, and others are physical products... But both of them uses the VoIP technology to transmit the audio and video from one party to the other (they can be called 'endpoints').

How VoIP communication works

2. Advantages of VoIP technology


VoIP technology has many advantages over the traditional PSTN network. There is only need for broadband Internet connection to be able to connect to a VoIP provider from anywhere. Take a look at the most important benefits that makes VoIP almost inevitable for corporate users:

  • VoIP provides better bandwidth efficiency by making possible to transmit more than one telephone calls over a single broadband connection without the need of extra lines
  • VoIP ensures lower transfer costs and it can reduce network costs as well
  • VoIP features and services (e.g. video conversation, data exchange during the conversation, managing addressbooks, conference calling, IVR, call forwarding, automatic redial without extra fees, etc.) increase productivity
  • Secure calls are also available easily by encrypting and authenticating the existing data stream
  • VoIP functionalities and services can be automated easily


3. How to create VoIP software solutions?



In my opinion it would be really difficult to implement all VoIP-related functions on your own. The best way to build any VoIP application is using a VoIP software development kit. You can save time and money on using these SDKs that provides prewritten VoIP components.

As VoIP has been implemented in various ways using both proprietary protocols and protocols based on open standards, there are different SDKs on the market. Take a look at the most commonly used VoIP protocols:

  • H.323
  • Media Gateway Control Protocol (MGCP)
  • Session Initiation Protocol (SIP)
  • H.248 (also known as Media Gateway Control (Megaco))
  • Real-time Transport Protocol (RTP)
  • Real-time Transport Control Protocol (RTCP)
  • Secure Real-time Transport Protocol (SRTP)
  • Session Description Protocol (SDP)
  • Inter-Asterisk eXchange (IAX)
  • Jingle XMPP VoIP extensions
  • Skype protocol
  • Teamspeak

As most of the service providers use the SIP protocol, is it worth to use an SDK that supports SIP. Those VoIP application (e.g. softphones) that support the SIP protocol can be used with any SIP-based VoIP service.

If you use a VoIP library you need to add the DLL file of the preferred SDK into your references in your development environment. Thereafter, you can reach all VoIP components that are needed to be able to define the behaviour of such VoIP applications as softphones, call recorders, IVR menu systems, software-based IP phone systems (PBX), etc.


Summary

This post was a brief introduction to the World of VoIP technology. After the necessary definitions, you could read about the advantages of VoIP and the way you can create your own VoIP application.


In the next post I am going to present how to create a simple SIP softphone in C# that is capable to register to an IP PBX! It's gonna be awesome! ;)

Please do not hesitate to leave a comment!