Google Support Bot
Java
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
docs
source
.gitignore
README

README

Google Support Bot

URL: http://www.cloudspokes.com/challenge_detail.html?contestID=193
Challenge end date: Tue May 17 04:00:00 GMT 2011

Description
===========
With the introduction of the XMPP service to App Engine, it&#39;s now possible to write an App Engine app that communicates with users - or even other applications - over XMPP, otherwise known as Jabber or Google Talk. We are looking to build a virtual helpdesk operator, who will redirect support questions to an available helpdesk agent that a user might pose over XMPP (e.g. from Google Talk). The app must be built in AppEngine (Java or Python) and an admin page to assign a user as a helpdesk agent must be created. <br><br> Extra credit: Secure the bot to only answer a question from a user tied to a Google Apps domain, meaning not make the bot publicly available for anyone to invite and ask questions.<br><br> Note: We understand that the bot will auto-accept invitations, but we don’t want to answer questions from users that are unknown to the domain Extra credit: Web page for users to look through answered questions, similar to a knowledge base type of web page<br><br> Extra credit: Admin page for reporting. See top rated helpdesk agent, their effectiveness (based by number of replies before receiving a rating), un-answered questions, and top users that ask questions the most<br><br> Extra credit: Parse incoming support question and find similar answered questions in the datastore and provide those as suggested answers<br><br> Extra credit: Multi-tenant

Requirements
============
<ol><li> A user adds an email like support@appspot.com to their buddy list in Google Talk, or another XMPP client. </li><li>The user asks the Support Bot a question, by typing &quot;/support how do I turn off conversation mode in gMail?&quot; <b>Note</b>: <i>User may asks as many support questions as they want using the “/support” command, at any point of the bot behavior</i> </li><li>The bot receives the question, stores it in the datastore as an unanswered question, then looks for an available helpdesk agent. If it finds one, it sends the question to the helpdesk agent, saying &quot;[user A] is in need of support, perhaps you can answer the question: how do I turn off conversation mode in gMail?&quot; <b>Note</b>: <i>[user A] indicates the user’s username that have asked the question</i> </li><li> If the bot does not find an available helpdesk agent immediately, it will reply to the user, saying “Please hold, while we find an available helpdesk agent” </li><li>Helpdesk provides the appropriate response, by typing “/answer go into Settings, click on the General tab, and click on ‘Conversation view off’ and then the ‘Save’ button” </li><li>The bot receives the helpdesk agent’s answer, stores it in the datastore alongside the original question, and then sends it back to the user who originally asked the question, saying &quot;[agent A] suggests, go into Settings, click on the General tab, and click on ‘Conversation view off’ and then the ‘Save’ button&quot; </li><li>The user now has two options, they can either: <ul><li>Type “/thankyou” which means that the answer was satisfactory, which the bot will in turn asks, <i>“How helpful did [agent A] respond to your question? Please, rate between 1-5;1 as unhelpful, 5 as very helpful”</i> The user can ignore to answer the rating, which means after a time it will default to a ‘5’ rating or answer the bot with &quot;/rate 3&quot; </li><li>Type “/reply” which allows the user to ask follow on questions regarding the same issue. In this example, “/reply I do not see the ‘conversation view off’ setting”, which will directly reply to the answering helpdesk agent, which in turn can type “/reply It is the sixth option down within the ‘General’ tab” <br> This step will continue to repeat until the bot has received a “/thankyou” or been idle for 3 minutes </li></ul></li></ol> <b>Note</b>: <i>All “/reply” messages should be stored in datastore</i><br> <b>Note</b>: <i>If the answered question has been idle for 3 minutes, it will prompt the bot to place the question on the bottom of the queue to be answered later by another available helpdesk agent.</i> <br><br> In addition to the basic flow above, we&#39;ll add a few enhancements: A user can type “/help” to ask the bot all the available commands that it provides. Further, a helpdesk agent can type &quot;/askme&quot; to ask the bot for a question that has not been answered yet, without waiting for the bot to automatically ping them with the next available unanswered question, and “/status” to see how many questions, along with the number of replies (measure effectiveness of answer) have been answered by the helpdesk agent and their current helpfulness rating. <br><br> In addition to the basic flow above, we&#39;ll add a few enhancements: A user can type “/help” to ask the bot all the available commands that it provides. Further, a helpdesk agent can type &quot;/askme&quot; to ask the bot for a question that has not been answered yet, without waiting for the bot to automatically ping them with the next available unanswered question, and “/status” to see how many questions, along with the number of replies (measure effectiveness of answer) have been answered by the helpdesk agent and their current helpfulness rating.