Sunday, March 28. 2010
Integrating VoIP into a Portal
In the previous entry a proof of concept (PoC) about Skype portal integration was performed. Now we know presence and direct browser interaction to VoIP application are the two main requirements around instant messaging web integration. But Skype is not a intranet solution (it is a global VoIP service), so this entry is dedicated to present my little custom solution.
First of all the VoIP instant messaging client application have to be chosen. If you remember the preceding post besides presence and browser interaction, other features like multiplatform, audio/video support and open source license are required. At that time I studied several VoIP applications (empathy, ekiga, qutecom, spark/sparkweb with red5 extension, SIP communicator,...) but no one convinced me completely. Nevertheless a few months later pidgin released his new 2.6 version with new brand features: voice & video.
Pidgin (formerly named gaim) used to be the traditional instant messaging jabber/XMPP system for all the linux distributions and, although it has strong competitors now, I am dare to say it continues to be. The advantages of pidgin are a lot:
Once the userspace application is chosen the server side takes the turn. In this matter I am a complete newbie so I have just selected the easy option: OpenFire. It is a java XMPP server with GPL license which has several good features:
Comparing with Skype portal integration, the open source solution has some limitations. Starting a call directly is not possible because XMPP uri specification does not cover jingle (only message tag is available), and I suspect purple-url-handler is also unable to start an audio or video call against pidgin (it uses dbus communication and there are no methods for that). The purple-url-handler script does not start pidgin either (if the program is not already running I mean) but this behavior can probably be fixed modifying the python script.
So this time the video is simpler: I search myself in the whitepages portlet; then the add button is clicked which opens the new contact pidgin window up; after cancel that, chat/message link is used to start a conversation with myself; finally the video call is started but using pidgin conversation menu instead of a web page link.
Comments are welcome.
First of all the VoIP instant messaging client application have to be chosen. If you remember the preceding post besides presence and browser interaction, other features like multiplatform, audio/video support and open source license are required. At that time I studied several VoIP applications (empathy, ekiga, qutecom, spark/sparkweb with red5 extension, SIP communicator,...) but no one convinced me completely. Nevertheless a few months later pidgin released his new 2.6 version with new brand features: voice & video.
Pidgin (formerly named gaim) used to be the traditional instant messaging jabber/XMPP system for all the linux distributions and, although it has strong competitors now, I am dare to say it continues to be. The advantages of pidgin are a lot:
- Pidgin is GPL licensed and it is free.
- Pidgin is available in all Linux distros by default (official repositories), its web page has a installer for Windows and fink distributes it for Mac users. Besides we always have the chance of compiling it for our own. So the portlet can be deployed with instructions about how to use it or install it over the different OSes.
- With the new features (audio and video) the technical specs of the solution are also satisfied. Pidgin multimedia is integrated using GStreamer, so remember the configuration command is gstreamer-properties for any device selection.
- Pidgin comes with a python script purple-url-handler which interprets standard XMPP/Jabber uri protocol and can be integrated in the browser the same way I did with Skype. And, in this case, debian iceweasel installation was very easy, xmpp protocol was recognized by the browser and it let me choose purple-url-handler as executor script.
Once the userspace application is chosen the server side takes the turn. In this matter I am a complete newbie so I have just selected the easy option: OpenFire. It is a java XMPP server with GPL license which has several good features:
- Jingle support. Jingle is a XMPP extension that implements peer-to-peer (P2P) session control (signaling) for multimedia interactions such as in Voice over Internet Protocol or videoconferencing communications. In other words, it supports pidgin voice and video. Jingle let me also get rid of SIP servers which are always very complicated for a novice like me.
- Clustering support (commercial feature). OpenFire can be installed in a cluster environment. Two OpenFire servers can run at the same time improving scalability and availability.
- STUN server support. OpenFire has an embedded STUN Server that can be used to provide Public Address Discovering and help p2p clients in Jingle.
- Media proxy for Jingle. OpenFire acting as media proxy or TURN server can relay packets from one client to another, this will help clients using NAT.
- Presence plugin. There is a presence plugin that can be interrogated by the portlet in a similar way I did with Skype.
- It is extremely easy to install. Although OpenFire supports several databases or ldap authentication, it can be installed using a internal HSQLDB in an incredible easy installation process (only for test purposes). As you can imagine this was an important point for me.
Comparing with Skype portal integration, the open source solution has some limitations. Starting a call directly is not possible because XMPP uri specification does not cover jingle (only message tag is available), and I suspect purple-url-handler is also unable to start an audio or video call against pidgin (it uses dbus communication and there are no methods for that). The purple-url-handler script does not start pidgin either (if the program is not already running I mean) but this behavior can probably be fixed modifying the python script.
So this time the video is simpler: I search myself in the whitepages portlet; then the add button is clicked which opens the new contact pidgin window up; after cancel that, chat/message link is used to start a conversation with myself; finally the video call is started but using pidgin conversation menu instead of a web page link.
Comments are welcome.
Comments