28
edits
No edit summary |
|||
Line 1: | Line 1: | ||
== What? == | == What? == | ||
This page outlines the work being done to implement a server that will work with an AJAX-based Live Chat frontend. The goal is to eventually replace the existing Java-based Live Chat system. | This page outlines the work being done to implement a server that will work with an AJAX-based Live Chat frontend. The goal is to eventually replace the existing Java-based Live Chat system. | ||
<br> | |||
== Repository == | == Repository == | ||
The project has been codenamed "Inko" (Parakeet in Japanese). The repository for the new code is hosted on GitHub, at [http://github.com/endtwist/inko]. | The project has been codenamed "Inko" (Parakeet in Japanese). The repository for the new code is hosted on GitHub, at [http://github.com/endtwist/inko]. | ||
<br> | |||
== Roadmap == | == Roadmap == | ||
* June 10: Authentication | *June 10: Authentication | ||
** Find existing Django session ID in cookie | **'''<sup>[√]</sup>''' Find existing Django session ID in cookie | ||
** Extract Django session data from database | **'''<sup>[√]</sup>'''Extract Django session data from database | ||
** Create new "chat session" ID cookie | **'''<sup>[√]</sup>'''Create new "chat session" ID cookie | ||
*** Use modified Session library from Express to store data (in memory?) | ***Use modified Session library from Express to store data (in memory?) | ||
** Retrieve chat permissions from database | **'''<sup>[√]</sup>'''Retrieve chat permissions from database | ||
** Add authentication check (against stored session) to each page load | **'''<sup>[√]</sup>'''Add authentication check (against stored session) to each page load | ||
** Automatically authenticate user upon first load of chat system, if logged in. Otherwise, redirect them to the login. | **'''<sup>[√]</sup>'''Automatically authenticate user upon first load of chat system, if logged in. Otherwise, redirect them to the login. | ||
* June 17: Basic Messaging | *June 17: Basic Messaging | ||
** Build "Message" object that will contain all of the important message data and serialize it into a json object | **'''<sup>[√]</sup>'''Build "Message" object that will contain all of the important message data and serialize it into a json object | ||
** Create a "Room" object that will allow both 1-on-1 and multi-user conversations to be initialized. | **'''<sup>[√]</sup>'''Create a "Room" object that will allow both 1-on-1 and multi-user conversations to be initialized. | ||
** Guests should only be allowed in one room at a time? | **'''<sup>[√]</sup>'''Guests should only be allowed in one room at a time? | ||
** How to hash room names/keep them private? | **'''<sup>[√]</sup>'''How to hash room names/keep them private? | ||
** /message - | **'''<sup>[√]</sup>'''/message -> allow users to create new Message objects with data | ||
** Add filtering for messages that will strip any potentially-harmful data ( | *'''<sup>[√]</sup>'''*Add filtering for messages that will strip any potentially-harmful data (<tags>, etc.) | ||
** Add CSRF verification. | **'''<sup>[√]</sup>'''Add CSRF verification. | ||
** /listen - | **'''<sup>[√]</sup>'''/listen -> add listener for new Message objects using long polling | ||
* June 24: Watchers | *June 24: Watchers | ||
** Allow authorized users (check perms) to join 1-on-1 rooms | **'''<sup>[√]</sup>'''Allow authorized users (check perms) to join 1-on-1 rooms | ||
** Messages in rooms should be broadcast to all users | **'''<sup>[√]</sup>'''Messages in rooms should be broadcast to all users | ||
** Watchers should not be allowed to speak in rooms | **'''<sup>[ ]</sup>'''Watchers should not be allowed to speak in rooms | ||
** Add ability to pass conversations to other users | **'''<sup>[ ]</sup>'''Add ability to pass conversations to other users | ||
** Agent interface as reference implementation | **'''<sup>[ ]</sup>'''Agent interface as reference implementation | ||
* July 1: Group Chat & Guest Interface | *July 1: Group Chat & Guest Interface | ||
** Guest interface as reference implementation | **'''<sup>[ ]</sup>'''Guest interface as reference implementation | ||
** Multiuser rooms should have their own set of user permissions? (Op/H-Op?) | **'''<sup>[ ]</sup>'''Multiuser rooms should have their own set of user permissions? (Op/H-Op?) | ||
** Add ability to kick users from chatrooms. Ban? | **'''<sup>[ ]</sup>'''Add ability to kick users from chatrooms. Ban? | ||
* July 6: Non-Authenticated Guests | *July 6: Non-Authenticated Guests | ||
** Allow guests that are ''not'' authenticated to join the support queue. | **'''<sup>[ ]</sup>'''Allow guests that are ''not'' authenticated to join the support queue. | ||
** Setting and updating a user's status | **'''<sup>[ ]</sup>'''Setting and updating a user's status | ||
** Agent-Agent private chat | **'''<sup>[ ]</sup>'''Agent-Agent private chat | ||
* July 6 - 10: Summit 2010! | *July 6 - 10: Summit 2010! | ||
* July 15: Logging | *July 15: Logging | ||
** Message/conversation data needs to be logged somewhere | **'''<sup>[ ]</sup>'''Message/conversation data needs to be logged somewhere | ||
**'''<sup>[ ]</sup>'''Chat queue status (queue positioning/time estimate) | |||
<br> | |||
=== Notes: === | |||
*Agents must be approved before they can pick questions from the chat queue. This is currently the "Live Chat helpers" group on sumo | |||
*Also, room monitors have permission to watch any chat room, open/close the queue, and set other helpers' limits. | |||
<br> | |||
== Features currently used in Live Chat XMPP server == | |||
=== Chat queue features === | === Core chat features === | ||
* Ability for up to 50 people to be waiting in queues at once | |||
* Fair dispatching of requests to available helpers, based on specific criteria | *Automatic scrollback log when users join a conference | ||
* Ability of helpers to set their chat limit | *Individual status for each signed in user. (Online/Away/etc) | ||
* Access levels to determine who can receive questions from the queue | *Private messaging between conference members | ||
* "Room monitoring" ability that allows privileged users to join or monitor any chat in progress | *Storage of all logs, along with metadata, in a database for later access | ||
* Metadata associated with each room entered by the user being helped, including question/OS/version/useragent/plugins/etc (AAQ) | *Wiki formatting and links | ||
* Tag data associated with each room, either entered by helpers or automatically detected | *Individual messages up to 30KB each | ||
* Integration with CSAT surveys to track which chats are successful | *Chat sessions up to 2MB each | ||
* Integration with support forum for users who need to follow up | *Notification when another user is typing | ||
* Ability for a monitoring helper to take over a conversation | *Join/part notifications | ||
* Ability for privileged users to open/close the chat queue | *Topic for each room | ||
* Automatic chat queue status based on number of people signed in and the number of people waiting. | *Ability to invite other users into a conference | ||
* Give people waiting in queue updates on their current queue position | *Up to 50 users chatting at a time in up to 50 conferences, with up to 600 combined messages per minute | ||
*Access control for users in conferences | |||
**Permission to join | |||
**Permission to invite | |||
**Permission to kick | |||
**Permission to set the topic | |||
=== Chat queue features === | |||
*Ability for up to 50 people to be waiting in queues at once | |||
*Fair dispatching of requests to available helpers, based on specific criteria | |||
*Ability of helpers to set their chat limit | |||
*Access levels to determine who can receive questions from the queue | |||
*"Room monitoring" ability that allows privileged users to join or monitor any chat in progress | |||
*Metadata associated with each room entered by the user being helped, including question/OS/version/useragent/plugins/etc (AAQ) | |||
*Tag data associated with each room, either entered by helpers or automatically detected | |||
*Integration with CSAT surveys to track which chats are successful | |||
*Integration with support forum for users who need to follow up | |||
*Ability for a monitoring helper to take over a conversation | |||
*Ability for privileged users to open/close the chat queue | |||
*Automatic chat queue status based on number of people signed in and the number of people waiting. (Must automatically close when the queue is "full") | |||
*Give people waiting in queue updates on their current queue position |
edits