= !BluePrint: Chat = [[TOC]] == Introduction == We want to be able to provide the ability for users to be able to message each other in real-time. This is useful for compliance reasons as well as just convenience. == Description == * Provide a chat board through which users can help each other or get help from the system administrator. * Perhaps have one chat for each organization or project. == Requirements == * Ability to show which users are online === Advanced === * Easily switch to the user's email / SMS / Phone to contact them if they are not available by chat * candy plugin which links to Eden's msg.compose() * Status Updates * candy plugin? * History * Store chat history in DB (per-room & per user<>user private chat with appropriate permissions). * Scheduled task to prune. * Allow access to view this history from within the client 1 day/1week/1month/3months. * User can override archiving. * VoIP * Single-user * Multi-user * Video * Whiteboard * Screen Sharing * File Transfer * candy plugin to expose ejabberd's capabilities? == Design == * Simple option is to provide a preconfigured IRC client, but this may not be good for scalability * e.g. [http://qwebirc.org qwebirc] was used for SandyRelief and there is some code to have this display in a side-pane to the main browser window * Scalable option would to provide an XMPP client (e.g. to a Jabber server) === Server === * [http://www.process-one.net/en/ejabberd/ ejabberd] * [http://www.igniterealtime.org/projects/openfire/ OpenFire] === Client === * http://candy-chat.github.io/candy/ * Needs updating to work with current jQuery/UI * Add Authentication: Users are who they say they are & are only allowed into the correct rooms. * Add Notifications hook. * Add Offline Users. * Pull-in profile pictures. * Add "User is typing" * Add Recent Messages at Top * http://stackoverflow.com/questions/1081634/which-is-the-most-mature-python-xmpp-library-for-a-gchat-client * http://twistedmatrix.com/trac/wiki/TwistedWords * http://wokkel.ik.nu * https://github.com/Jajcus/pyxmpp2 * http://xmpppy.sourceforge.net (unmaintained) === VoIP === Assuming single-user: * http://mumble.sourceforge.net * Flash client included in http://frug.github.io/AJAX-Chat/ == Implementation == == References == Professional XMPP Programming with JavaScript and jQuery: [http://professionalxmpp.com/] ---- [wiki:BluePrint BluePrints] [wiki:BluePrint BluePrints]