Friday, September 14, 2007

Svarog - call center

Svarog (http://sourceforge.net/projects/svarog/) is an open source web based call contact center. It is a "real time" application that shows informations happening on a PBX. The only implementation till now is done for Asterix PBX using asterisk-java library (http://asterisk-java.org/). Actually it receives all the informations from the PBX and can send actions to it such as making a call, hangup or transfer. Telephony is not the only way of communication used in Svarog, email and chat should be supported. Emails are queued and so, they are delivered in a FIFO way to different agents in the call center. There is a possibility to give different events (emails, telephony ... ) a higher priority so, if there is an email coming from a VIP client it should be possible to make it come directly to the first place.

As I said it is a web based application which shows everything in real time in your browser, meaning there is no need to install any software on your desktop. It is an AJAX application using DWR (http://getahead.org/dwr) for the javascript and server side java communication, coupled to the Springframework (http://www.springframework.org/) it offers solid bases for an application.

Well, Svarog is in fact developed as EDA (event driven architecture/application) but without using special frameworks for that, just java 5 queues to make the application asynchronous. These days I was looking if that could be improve with an embedded ESB as Mule but I am still not sure if this is a good idea to do that.

In this blog http://gradecak.blogspot.com/2007/09/jain-slee-or-esbjbisca.html I wrote my thoughts about SLEE and as I said SLEE is something like ESB + JBI + JCA for me. So, probably that I will give it a try very soon.

Svarog uses DOJO for javascript widgets, DWR for AJAX and Spring on the server side. And all deployed inside the Liferay portal. There is several portlets that are in fact not really independent portlets but each portlet is more like a "widget". I also think that portlets will become something like widget containers in the future. As the first portlet specification does not help in portlet communication I am using dojo topics, which does it pretty well. There is also a possibility to use DWR reverse ajax capabilities but I did not have the time to implement that, but probably that it will be done in the next months. Right now the browser polls each seconds for informations and show it in real time.

At the beginning I used MyFaces JSF components but as it lacks (and I think is still lacking) of ajax components I decided to go with DOJO (as I am not a javascript guru... nor Java) I chose DOJO for its simplicity.

Sometimes after Svarog was working within Liferay portal I decided to make it a separate webapp, just to see if that could be easily done and yes it can be done pretty fast because all those technologies are not tight to portals and may work very well as pure webapps or within portals. With probably a little of refactoring a fat client could be wrote for Svarog presentation layer this is something that I will keep in mind.

I just decided to blog about Svarog because maybe there would be some people that are interested in it, so the can see the possibilities. There is the mobicents project (www.mobicents.org/) which is an open source SLEE implementation, and I would like make Svarog something ala SLEE LIKE ... I will follow may blog about SLEE and ESB and I hope that it will become a nice product soon.

At the end, Svarog helped me to work with a lot of technologies and I will share my founds like inter portlet communication and other things some other day.

5 comments:

Daniel Gradecak said...

I am glad it could be helpful. Thank you for giving some feedback.

Unknown said...
This comment has been removed by the author.
Unknown said...

I would like to know more a bout inter portlet communication and other things too!

Business Answering Service

Daniel Gradecak said...

Ben, what exactly? you can contact me on my email.

Ilango said...

Is it possible to set this up in Tomcat?