views:

148

answers:

2

Hi,

At the company I work for, we are building a cluster of web applications for collaboration. Things like accounting, billing, CRM etc.

We are using a RESTfull technique:

  1. For database we use CouchDB
  2. Different applications communicate with one another and with the database via http.
  3. Besides, we have a single sign on solution, so that when you login in one application, you are automatically logged to the other.
  4. For all apps we use Python (Pylons).

Now we need to add instant messaging to the stack. We need to support both web and desktop clients. But just being able to chat is not enough. We need to be able to achieve all of the following (and more similar things).

  1. When somebody gets assigned to a task, they must receive a message. I guess this is possible with some system daemon.
  2. There must be an option to automatically group people in groups by lots of different properties. For example, there must be groups divided both by geographical location, by company division, by job type (all the programers from different cities and different company divisions must form a group), so that one can send mass messages to a group of choice.
  3. Rooms should be automatically created and destroyed. For example when several people visit the same invoice, a room for them must be automatically created (and they must auto-join). And when all leave the invoice, the room must be destroyed.
  4. Authentication and authorization from our applications.

I can implement this using custom solutions like hookbox http://hookbox.org/docs/intro.html but then I'll have lots of problems in supporting desktop clients.

I have no former experience with instant messaging. I've been reading about this lately. I've been looking mostly at things like ejabberd. But it has been a hard time and I can't find whether what I want is possible at all.

So I'd be happy if people with experience in this field could help me with some advice, articles, tales of what is possible etc.

A: 

All goals could be achieved with ejabberd, strophe and little server side scripting

  1. When someone gets assigned to task, server side script could easily authenticate to xmpp server and send message stanza to assigned JID. That its trivial task.
  2. To group different people in groups, it is easily can be done from web chat app if those user properties are stored somewhere. Just join them in particular multi user chat room after authentication.
  3. Ejabberd has option to automatically create and destroy rooms.
  4. Ejabberd has various authorization methods including database and script auth

You could take look at StropheJS library, they have great book (paperback) released. Really recommend to read this book http://professionalxmpp.com/

frx
A: 

Like frx suggested above, the StropheJS folks have an excellent book about web+xmpp coding but since you mentioned you have no experience in this type of coding I would suggest talking to some folks who have :) It will save you time in the long run - not that I'm saying don't try to implement what frx outlines, it could be a fun project :)

I know of one group who has implemented something similar and chatting with them would help solidify what you have in mind: http://andyet.net/ (I'm not affiliated with them at all except for the fact that the XMPP dev community is small and we tend to know each other :)

bear