Support/Live Chat/Node.js: Difference between revisions

No edit summary
 
(12 intermediate revisions by the same user not shown)
Line 7: Line 7:
== 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 http://github.com/endtwist/inko].  


<br>  
<br>
 
== API  ==
 
See: http://wiki.github.com/endtwist/inko/web-api
 
<br>


== Roadmap  ==
== Roadmap  ==
Line 15: Line 21:
*June 10: Authentication  
*June 10: Authentication  
**'''<sup>[√]</sup>''' Find existing Django session ID in cookie  
**'''<sup>[√]</sup>''' Find existing Django session ID in cookie  
**'''<sup>[√]</sup>'''Extract Django session data from database  
**'''<sup>[√]</sup>''' Extract Django session data from database  
**'''<sup>[√]</sup>'''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?)  
**'''<sup>[√]</sup>'''Retrieve chat permissions from database  
**'''<sup>[√]</sup>''' Retrieve chat permissions from database  
**'''<sup>[√]</sup>'''Add authentication check (against stored session) to each page load  
**'''<sup>[√]</sup>''' Add authentication check (against stored session) to each page load  
**'''<sup>[√]</sup>'''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  
**'''<sup>[√]</sup>'''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  
**'''<sup>[√]</sup>'''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.  
**'''<sup>[√]</sup>'''Guests should only be allowed in one room at a time?  
**'''<sup>[√]</sup>''' Guests should only be allowed in one room at a time?  
**'''<sup>[√]</sup>'''How to hash room names/keep them private?  
**'''<sup>[√]</sup>''' How to hash room names/keep them private?  
**'''<sup>[√]</sup>'''/message -&gt; allow users to create new Message objects with data  
**'''<sup>[√]</sup>''' /message -&gt; allow users to create new Message objects with data  
*'''<sup>[√]</sup>'''*Add filtering for messages that will strip any potentially-harmful data (&lt;tags&gt;, etc.)  
**'''<sup>[√]</sup>''' Add filtering for messages that will strip any potentially-harmful data (&lt;tags&gt;, etc.)  
**'''<sup>[√]</sup>'''Add CSRF verification.  
**'''<sup>[√]</sup>''' Add CSRF verification.  
**'''<sup>[√]</sup>'''/listen -&gt; add listener for new Message objects using long polling
**'''<sup>[√]</sup>''' /listen -&gt; add listener for new Message objects using long polling


*June 24: Watchers  
*June 24: Watchers  
**'''<sup>[√]</sup>'''Allow authorized users (check perms) to join 1-on-1 rooms  
**'''<sup>[√]</sup>''' Allow authorized users (check perms) to join 1-on-1 rooms  
**'''<sup>[√]</sup>'''Messages in rooms should be broadcast to all users  
**'''<sup>[√]</sup>''' Messages in rooms should be broadcast to all users  
**'''<sup>[ ]</sup>'''Watchers should not be allowed to speak in rooms  
**'''<sup>[ ]</sup>''' Watchers should not be allowed to speak in rooms  
**'''<sup>[ ]</sup>'''Add ability to pass conversations to other users  
**'''<sup>[]</sup>''' Add ability to pass conversations to other users  
**'''<sup>[ ]</sup>'''Agent interface as reference implementation
**'''<sup>[]</sup>''' Agent interface as reference implementation


*July 1: Group Chat &amp; Guest Interface
*July 1: Non-Authenticated Guests
**'''<sup>[ ]</sup>'''Guest interface as reference implementation
**'''<sup>[]</sup>''' Allow guests that are ''not'' authenticated to join the support queue.
**'''<sup>[ ]</sup>'''Multiuser rooms should have their own set of user permissions? (Op/H-Op?)
**'''<sup>[]</sup>''' Setting and updating a user's status
**'''<sup>[ ]</sup>'''Add ability to kick users from chatrooms. Ban?
**'''<sup>[]</sup>''' Agent-Agent private chat


*July 6: Non-Authenticated Guests
*July 6 - 10: Summit 2010!
**'''<sup>[ ]</sup>'''Allow guests that are ''not'' authenticated to join the support queue.
**'''<sup>[ ]</sup>'''Setting and updating a user's status
**'''<sup>[ ]</sup>'''Agent-Agent private chat


*July 6 - 10: Summit 2010!
*July 15: Guest Interface
**'''<sup>[√]</sup>''' Guest interface as reference implementation
**'''<sup>[√]</sup>''' Chat queue status (queue positioning/time estimate)


*July 15: Logging  
*July 22: Logging & Group Chat Permissions
**'''<sup>[ ]</sup>'''Message/conversation data needs to be logged somewhere
**'''<sup>[ ]</sup>''' Add ability to kick users from chatrooms. Ban?
**'''<sup>[ ]</sup>'''Chat queue status (queue positioning/time estimate)
**'''<sup>[ ]</sup>''' Message/conversation data needs to be logged somewhere


<br>  
<br>  


=== Notes: ===
=== Notes  ===


*Agents must be approved before they can pick questions from the chat queue.&nbsp; This is currently the "Live Chat helpers" group on sumo  
*Agents must be approved before they can pick questions from the chat queue.&nbsp; 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.
*Also, room monitors have permission to watch any chat room, open/close the queue, and set other helpers' limits.


<br>  
<br>


== Features currently used in Live Chat XMPP server  ==
== Features currently used in Live Chat XMPP server  ==
Line 101: Line 106:
*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")  
*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
*Give people waiting in queue updates on their current queue position
<br>
== Staging ==
* Software requirements are outlined in the repo: [http://github.com/endtwist/inko http://github.com/endtwist/inko]
* The server needs to daemonize itself.
** PID should go into /var/run/
** Log file should go into /var/log/
*** It would be best to rotate logs with logrotate.
* Restarting the server occurs how?
28

edits