USER SUPPORT SYSTEM AND METHOD

Abstract: A user support system (30, 38, 40, 42) for automatically providing user support for software applications, system software or computer hardware is provided. The system (30, 38, 40, 42) may detect various computer problems, such as a software application crash or error message, a system software crash or error message or a computer hardware error message. The client computer (32) generates information when the problem occurs. The information is communicated to the support system (30, 38, 40, 42) which then provides a solution.

Description: USER SUPPORT SYSTEM AND METHOD Background of the Invention This invention relates generally to a system and method for providing user support and in particular to a system and method for automatically providing user support for software applications, system software or hardware. The growth of the Internet and the wide use of personal computers has lead to more users relying on various software applications to perform various tasks. For example, few people use a typewriter to type a letter and many people use the computer to send electronic messages to other people. Thus, people rely heavily on computers and the software applications being executed by the computer to accomplish many tasks. When a software application is released to the public, the developer must provide user support when problems with the software application occur. Similarly, for system software and computer hardware (including main computer hardware such as the memory or the disk drive and computer peripheral hardware such as a printer, a mouse, a keyboard or a scanner), the developer of that system software or computer hardware must also provide user support. The user support of a software application, system software or hardware, however, is very costly and time consuming. For a typical company, the user support of a software application may be a group of "experts" who listen to the user problems and complaints and attempt to solve the user's problem by following a script of potential solutions. The cost of maintaining this group of user support people is enormous. In addition, support people can not possibly know the answer to every problem that a user is having and therefore often end up with low satisfaction ratings and frustrating both the users and the support personnel. In addition, support people cannot possible remember all of the prior solutions to problems they see infrequently, and often get bored with repeatedly solving common problems. The problems experienced by a user using a software application, system software or computer hardware fall into two distinct categories: how-to type questions, and technical problems. To solve these kinds of problems, a support person typically engages in a rather lengthy question and answer game with the user to determine the machine configuration, the software environment, as well as recent actions and events that have taken place on the system (such as error messages that were displayed or menu actions that were invoked). This is often a difficult conversation since in most cases there is a non-technical end user inteφreting what the machine is doing, and then relaying that over the telephone. Finally, once the support person has the information he must search manuals, knowledge bases, news groups, and/or other sources of information to solve the problem. This manual support process is extremely expensive - the yearly labor costs are estimated to be in excess of $30 billion per year alone. Thus, it is desirable to provide an automated user support system and method for supporting software applications, system software or computer hardware and it is to this end that the present invention is directed. Summary of the Invention An automated user support system and method are provided in which the user's software application or computer hardware problem may be resolved or suggestions may be provided to the user automatically. In particular, when the user experiences a software application problem, such as a software crash or a software application error message, the user may automatically access a targeted user support system that will provide the user with help in solving the problem. Thus, the user's problem may be resolved without necessitating a call to a user support personnel. In addition to resolving the user's problem, the system may generate a knowledge base of problems and solutions to the problems based on the users who access and utilize the system. The system may also permit each user to leave a posting about the user's particular problem and the solution to that problem for other users to review. These postings may also be incoφorated into the knowledge base. The system may be a publicly accessible user support system for a plurality of software applications, a user support system connected to a typical help desk or a user support system for a single software application. The system may also permit the user to access live support if the support provided by the support system is insufficient or the user would like to receive live support. In more detail, an information set about the details of the machine that is experiencing the application or system problem (i.e., machine state information when the failure or problem occurs such as environment, registry settings, recent user actions or events leading up to the problem, comments or questions from the user, configuration, etc.) may be automatically generated at the user's computer when the software event occurs or when the user needs help. Herein we call this computer state description the computer "signature" since it signifies everything a support person would want to know about that machine. In addition to the machine information, the signature may contain information about the user such as his name, address, contact information, registry and/or warranty information, or other information specifying the support he is entitled to, etc. The signature may be sent, via a communications medium such as the Internet or a local coφorate network, to a dispatcher server that reviews the signature and, based on particular pieces of data in the signature passes the signature, or parts of the signature, onto a server that can handle the particular problem. For example, the system may have a plurality of servers wherein each server may handle the problems associated with a particular software application so that one server may handle Microsoft® Word problems, another server may handle Novell® GroupWise problems, etc. The dispatcher thus coarsely categorizes the problems based on the software application, system software or specific hardware that has the problem. Each server may then further analyze the signature and further categorize the problem so that the user can be directed to the page that solves the problem without the user searching endlessly through a user support site. These additional servers can be located anywhere, so long as the dispatching server can search them by using the specific information in the signature. Additionally, the dispatcher can keep a directory of all the possible servers that can help with a given signature, and submit a request for help to each of them. The dispatcher then aggregates the responses and presents an overview of the response and its source to the user so the user can then choose which best solves his needs. In accordance with the invention, the user support system automatically collects the signature data on the client machine at the point of failure (i.e., when the software or hardware crash or error message occurs, and/or the user initiates a support request) with a single click. The solution, or a list of possible solutions, to the support request is automatically delivered back to the user of the client computer via a web browser. The advantages of the system in accordance with the invention include the fact that the user doesn't have to know where the support information is located since the system automatically directs the user to the proper location of the solution. In particular, based on the information in the machine state or signature, the system not only finds the right support location, it also brings the user very close, or directly to, the solution to the failure or problem. In addition, the system may be used to resolve problems and failures associated with a variety of different software and hardware systems. For example, the same system works for solving MS Word problems as well as problems with an HP printer, even though the knowledge bases for those two products might be maintained by separate organizations. Another advantage is that the diagnostic information in the machine state signature is collected automatically ensuring that the information is accurate and complete. In existing systems, the user has to answer questions either on the web or over the phone about the problem where the user may not correctly remember, for example, the series of steps taken just prior to the problem or failure. The system also collects critical signature data right at the point of failure. For example, information such as the actual error message on the screen and the events leading up to the error or failure may be critical in providing help to the user. The system may include a software application located on the client computer which records the software application problems as a signature as the software application problems occur and communicates the signatures to the dispatcher system. The dispatcher may analyze the signatures and distribute the signatures to the appropriate servers. In a preferred embodiment, the dispatcher and servers are WWW- based servers that are accessed over the Internet or WWW and the user access the system using a browser application. Thus a system for automatically providing user support for a computer problem is provided. The system receives a signature containing machine state information (including user actions or events leading up to the problem or support request) from a client computer at the time when a computer problem occurs at the client computer wherein the signature includes things such as, but not limited to, a software application name, error messages, user comments, machine and system configuration, types of peripherals connected, etc. The system then dispatches the incident, based on the information in the signature, to a selected one of a plurality of user support sites. Then, a browser application of the client computer is directed to one of the user support sites to provide the user with information and solutions to the computer problem. In accordance with another aspect of the invention, a system for automatically generating a knowledge base containing information about a plurality of computer problems indexed based on the machine signatures is provided. The system receives a signature containing machine state information (including user actions or events leading up to the problem or support request) from a client computer at the time when a computer problem occurs at the client computer. The system then determines one or more solutions to the computer problem and stores the signature and the solutions in a database containing a plurality of signatures and solutions relating to the same computer problem so that a knowledge base of machine state information and corresponding solutions to the computer problem is generated. Based on feedback from the user, either automatically captured by the client application or by asking the user, the system determines which of the solutions solved the problem and can update its knowledge base to better help users with similar machine signatures in the future. Brief Description of the Drawings Figure 1 is a diagram illustrating an embodiment of an automated software application user support system in accordance with the invention; Figure 2 is a diagram illustrating a preferred first embodiment of a method for providing user support information to the user in accordance with the invention; Figure 3 is a diagram illustrating a second embodiment of a method for providing user support information to the user in accordance with the invention; Figure 4 is a diagram illustrating a third embodiment of a method for providing user support information to the user in accordance with the invention; Figure 5 is a diagram illustrating an example of a knowledge base that is generated by the system shown in Figure 1 ; Figure 6 is a diagram illustrating a user using a software application to edit a document; Figure 7 is a diagram illustrating a user being confronted with a error dialog box while attempting to perform an action in the software application; Figure 8 is a diagram illustrating a client user interface for the user support system in accordance with the invention; Figures 9a and 9b are diagrams illustrating an example of a user support web page in accordance with the invention; Figures 10a and 10b are diagrams illustrating an example of a support site web page; Figure 11 is a diagram illustrating an example of a newsgroup support web page; Figure 12 is a diagram illustrating an example of a live user support directory web page in accordance with the invention; Figure 13 is a diagram illustrating an example of a live support center web page; Figures 14a and 14b are diagrams illustrating an example of the live support web page; Figure 15 is a diagram illustrating an example of a fix authoring user interface screen in accordance with the invention; Figure 16 is a diagram illustrating an example of a fix assignment user interface screen in accordance with the invention; Figure 17 is a diagram illustrating an example of a self-help assignment user interface screen in accordance with the invention; Figure 18 is a diagram illustrating an example of the assignment of self-help URLs in accordance with the invention; Figure 19 is a diagram illustrating a detector for the software application user support in accordance with the invention; Figure 20 is a diagram illustrating a second embodiment of the software application support system in accordance with the invention; and Figure 21 is a diagram illustrating a third embodiment of the software application support system in accordance with the invention. Detailed Description of a Preferred Embodiment The invention is particularly applicable to a World Wide Web (WWW) based client/server system for automatically providing software application user support and it is in this context that the invention will be described. It will be appreciated, however, that the system and method in accordance with the invention has greater utility since it may be implemented using a different computer system. In addition, the system may be used to provide automated user support for system software failures and problems, how-to questions, as well as computer hardware (including main computer hardware, such as memory or disk drives, and computer peripherals, such as a mouse, a trackball, CD drive, video or sound hardware, a keyboard, a printer or a scanner and the like). Figure 1 is a diagram illustrating an embodiment of an automated software application user support system 30 in accordance with the invention. The system 30 may include one or more client computers (Client #1, Client #2 and Client #N) which may include microprocessors (not shown) which execute a browser application stored in a memory (not shown) of the client computer in order to access a Word Wide Web (WWW) site over a public communications medium, such as the Internet. Each client computer may also include a detector (ED) 32 which automatically detects a software application problem, such as a software application crash or a software application error message, as they occur on the client computer. It may also include a menu item or key so that when the user detects a software problem or requires support, the user can initiate the request. When a software application support request is initiated, the detector 32 in each client computer may generate a signature packet, based on the context of the software application, which characterizes the software application and machine state at the time of the request. The signature packet may include information about the application being used, the application version number, a history of the user's actions prior to the request and the like. The signature may permit the software application user support system in accordance with the invention to automatically diagnose and automatically provide a solution to the support request as will be described in more detail below. The detector 32 may communicate the signature packet to a remote software application user support device over a typical communications medium, such as the Internet, a coφorate Intranet, a local area network, a wide area network and the like so that the software application user support system may provide the user with a response to the support request. Thus, the signature attempts to capture a majority of the information about the software application problem so that the user may need to provide very little or no additional information to resolve the request. For example, the user does not need to remember his/her actions, any error messages that might have been displayed, or specific details about their machine configuration. The user also does not necessarily need to be able to explain the problem coherently since the information in the signature may permit the system to resolve the support request without an explanation from the user. The detector 32 may be a piece of hardware, but may preferably be a software application stored in the memory of the client computer that is executed by the microprocessor of the client computer. The details of the detector will be described below with reference to Figure 16. When a software application support request occurs at a client computer, the signature packet is generated by the detector 32 and communicated to a dispatcher 34 over a computer network 36, such as the Internet or the World Wide Web (WWW). The dispatcher may be a server computer that may be accessed over the Internet or the WWW. The signature generated by each detector in each client computer may have a variety of information about the software support request, such as the name of the software application currently in use, the version of the application, the current stack contents when the request was made, the actual error message, the DLLs that were in memory at the time of the request, the user's actions and events that occurred prior to the request, the operating system and version being used, the type of computer being used (i.e., Apple or IBM-compatible) and the amount of memory in the client computer. At a minimum, the signature may have the application name and the error message generated. This information may be used to help diagnose the problem and provide the user with a solution. For example, if the signature indicates that there is insufficient memory to run the particular application, the system may automatically notify the user that more memory is needed. The details of gathering the signature information and communicating it to the dispatcher is described more fully in co- pending patent application number 08/994,840, filed December 19, 1997 which is owned by the same assignee as the present application and is incoφorated herein by reference. The dispatcher 34 may receive the signatures from the one or more client computers and determine, based on the information in the signatures, how to route the signatures to the appropriate server that can solve the problem. In more detail, based on the information in the signature, such as the application name and the generated error message, the dispatcher may select from one of a plurality of servers 38, 40, 42 which handles the particular problems with the particular software application. The servers 38 - 42 may form a knowledge base from which solutions to support requests or problems may be determined. In the example shown in Figure 1, the software application problems are categorized based on the software application in which the software application problem occurs so that there may be a Word server, a Group Wise server and a Navigator server that handle support requests associated with Microsoft Word, Novell Group Wise and Netscape Navigator. Therefore, the signatures received from the client computers may be directed to each of these servers based on the signature information. For example, a signature relating to a support request in Word may be directed to the Word server. The dispatcher may therefore coarsely categorize the incoming software application problems based on the software application and then each server may further refine the problem so that a solution may be identified. The systems 38, 40, 42 may be located at the same location as the dispatcher 34 or may be located at remote locations and may be connected to the dispatcher using a computer network 44 which may include the Internet, the World Wide Web, a local area network or a wide area network. Instead of the knowledge base residing on servers within the system, the knowledge base may also formed by existing third party data sources. For example, the knowledge may be stored on a third party's web site and the system may be a proxy to the knowledge base. The proxy may include data content and logic for mapping support requests to pieces of content in the knowledge base and for presenting the information to the user. The dispatcher 34 may also pass the uniform resource locator (URL) of the particular server back to the client computer over the computer network 36 so that the browser of the client computer may access the particular server or knowledge base directly over the Internet or the World Wide Web. The user may then receive additional information about a solution to the problem directly from the particular server while the dispatcher 34 continues to direct the signatures to the appropriate servers. At each server 38, 40, 42, the server receives the signature from the dispatcher and processes the information in the signature. In particular, each server may include a database 46, 48, 50 of known software application support requests along with solutions to the software application support requests to form a knowledge base. The server may also include one or more templates or criteria to which the signatures are compared to categorize the signature and/or relate the signature to a solution in the database. In particular, if a signature fits into a particular template or criteria, the solution associated with that criteria may be provided to the user who made be support request. To perform the comparison of the signature to the criteria or template, the user support system may include operators which can, in addition to looking for an equality between the signature and the criteria, compare the signature to operators, such as "corrupt", "inconsistent" and "incompatible". In addition, each server may automatically generate a template or criteria based on the signatures so that the signatures may be easily converted into a template for a particular support request so that future signatures for the same support request will match the generated template. Thus, based on the information in the database and the information in the signature, the server attempts to identify a solution to the particular request. When a possible one or more solutions are located, the server may communicate information about the one or more solutions, as described below, back to the user. The user may then be able to indicate to the server whether the solution was successful. If the solution was successful, the server may reflect that in the database. If the solution was not successful, that may also be reflected in the database. The user's answers may thus be used, by the server, to determine which solutions for a particular software application problem are the best solutions and which solutions may be discarded. Thus, as more users have a particular software application problem, the server generates a knowledge base about the solutions to that particular software application problem. The server may also generate a knowledge base about all of the reported software application problems associated with a particular software application. In the event that the server cannot suggest a solution to the particular support request, the user may fill out a trouble ticket that may be sent to a technical support person who can hopefully determine a solution to the software application problem. In particular, to help the technical support person solve the computer problem, the system 30 may forward the signature data along with any information about the steps taken by the user to solve the problem to the technical support person. Thus, the automated software application support system permits the majority of the easy to solve events to be resolved without involving the technical support people so that these people can focus on the tougher support requests. The server may also permit the users of the system to enter an electronic "chat room" or news group so that the users may post messages about problems related to their machine context signature. The user may also post solutions to these problems. Such a solution authoring environment might be as simple as entering a text message or more complex as in writing a script that describes the data values in the machine signature that specifically identifies machine state and context symptomatic of the problem for which the solution is being authored. The system may use these postings to generate a knowledge base that may be used to suggest solutions to these problems when another user has the same problem. In this embodiment, any user may access the support system. The automated software application user support system in accordance with the invention provides a number of advantages over typical user support systems. First, the system can solve problems rapidly with minimal input from the user about context of the system and application in which the user is requesting support. Gathering this data is often tedious and error prone. This leads to happier users since they do not have to try and explain the problem to a user support person who may not be very helpful. In addition, as each client computer sends a signature to the dispatcher and the software application problem is resolved, a knowledge base about the problems associated with various software applications and their solutions is generated which may be useful to various different people. Since the collection of this data is done automatically, the form factor of the underlying data is consistent eliminating many of the "natural language" related problems plaguing conventional knowledge bases. Additionally, the developer of the software application may use the knowledge base as a system for detecting the most prevalent bugs that need to be fixed, or user interface issues that need to be addressed. The system may also permit the users of the system to participate in a chat room or news group/bulletin board type environment where the users may post computer problems and/or solutions thereby supporting each other. This has advantages to both the end users since they can get their problems solved more quickly from other members of the user community, as well as advantages to the company producing the software since this will avoid costly support calls. In particular, in this chat-room or newsgroup environment, the system may track users who post computer problems and permit the users to post rewards for a solution to the computer problem. When a solution is posted, the user who posted the solution is also tracked to ensure payment of the reward. In a preferred embodiment, the system may include an electronic payment system so that the user posting the computer problem is electronically debited when a solution is identified and the user posting a solution to the computer problem is electronically credited for the solution. The tracking system and the preferred electronic payment system encourages people to post solutions to posted computer problems. The knowledge base of the system 30 may also be updated when a solution to a computer problem on the bulletin board is detected so that the system 30 adds knowledge from this bulletin board/chat room. The system may also permit the user to type in "how-to" questions. In these cases, the system may do a much better job of routing the user to the right place for an answer or solution because the system has additional context about what the user was doing to direct the user to the appropriate solution. For example, if the system can see in the event history (the actions of the user automatically gathered by the system in accordance with the invention) that the user tried to print from Microsoft® Word to an Epson® Stylus Color Printer and then asks "How do I print in color?", the system in accordance with the invention has a lot of critical information to help bring the issue to the proper solution. If the system further knows that the printer is currently configured to only print gray-scale (because the configuration of the printer may also be automatically gathered by the system), the system can direct the user to the correct resolution immediately. The system may also permit the user of the client computer to identify particular subject matter which the user wants help with, such as an error message dialog box so that the detector 32 may collect various specific machine state information about the subject matter which the user wants help from the operating system and append the information to the typical machine state information as described above. For example, for an error message dialog box, the detector 32 may collect the name of the dialog box, the text of the error message and the application call stack that lead up to the error message. Thus, the detector 32 gathers machine state information from the operating system. The user support system may also provide user support to software applications or computer hardware without any active involvement by the developer of the software application or the computer hardware since the user support system is able to gather information about the software application or computer hardware without direct access to the software application or the computer hardware. The system may also identify signatures that have similar solutions using typical comparison methods, so that a link between the signatures with the similar or same solutions may be generated in the knowledge base. This permits the system 30 using the knowledge base to, for example, suggest a solution to a computer problem when the solution is not associated with the signature generated by the computer problem, but is associated with the linked signature. In another embodiment of the invention, a local database may be stored in the client computer that contains one or more signatures and solutions to those signatures. The local database may also include one or more templates or criteria. In particular, when a signature is received, it may be compared to the template or criteria to categorize the signature and relate the signature to a solution. Thus, the local database does not necessarily need exemplar signatures since the incoming signatures could be filtered through the criteria or templates to generate a solution to the support request. This local database in the client computer may be periodically updated by the system 30 so that the local database in the client computer is kept up to date as new signatures or solutions are discovered by the system. In operation, the detector 32 may compare a generated signature with the local database to determine if there is a match with the local database. If a match occurs, the user is informed of the match (i.e., a solution in the local database exists) and the user may click a button to display the solution. In this embodiment, the user support system 30 does not have to provide a solution to the client computer due to the local database. In updating the local database, the user support system 30 may receive a signature, identify a solution to the signature and then communicate the signature and the solution back to the local database so that the local database may be constantly updated with information. In accordance with the invention, the user support system automatically collects the data on the client machine at the point of failure (i.e., when the software or hardware crash or error message occurs) with a single click and the solution (or a list of possible solutions) to the support request is automatically delivered back to the user of the client computer via a web browser. The advantages of the system in accordance with the invention include that fact that the user doesn't have to know where the support information is located or how to most effectively search the knowledge base if the location is known since the system automatically directs the user to the proper location of the solution. In particular, based on the information in the machine state or signature, the system not only finds the right support location, it also brings the user very close, or directly to, the solution to the failure or problem. In addition, the system may be used to resolve problems and failures associated with a variety of different software and hardware systems. For example, the same system works for solving MS Word problems as well as problems with an HP printer, even though the knowledge bases for those two products might be maintained by separate organizations. The diagnostic information about the failure or error is collected automatically ensuring that the information is accurate and complete. In existing systems, the user has to answer questions either on the web or over the phone about the problem where the user may not correctly remember, for example, the series of steps taken just prior to the problem or failure. The system also collects critical signature data right at the point of failure. For example, information such as the actual error message on the screen and the events leading up to the error or failure may be critical in providing help to the user. Now, several embodiment of a method for providing user support information to the user in accordance with the invention will be described. Figure 2 is a diagram illustrating a preferred first embodiment of a method 52 for providing user support information to the user in accordance with the invention. The method may be either user initiated (i.e., the user requests user support for a particular software application, system software or computer hardware), or application initiated (i.e., the failure of a software application, such as a software crash or error message, triggers the gathering of signature data 54). The method may also be automatically initiated based on other criteria. For example, the user support system may monitor the user's activities and initiate a support request when a network connection times out event if a crash or software failure does not occur. As another example, the user support system may periodically poll the local network router and initiate a support request if the router stops responding to the polling. In either case, the signature data 54, which may include a unique key to identify the signature, is then automatically communicated to the dispatcher 34. At the same time, a uniform resource locator (URL) along with the same unique key sent to the dispatcher is sent to a browser application on the client computer and the browser application is automatically launched using the URL to access the web site which includes the dispatcher 34 and the other servers described above. When the browser is launched, the dispatcher 34 will send a web page back to the client computer using the HTML format containing a solution or list of possible solutions which is then displayed to the user in step 56. In this method, the signature of the failure is automatically sent to the dispatcher 34, the browser is automatically launched using a known URL and the solution is displayed to the user. Notice that the user does not need to know the location of the user support server nor search through the user support web sites for the appropriate solution to the user's problem. Now, a second embodiment of the method for providing user support in accordance with the invention will be described. Figure 3 is a diagram illustrating a second embodiment of the method 52 for providing user support information to the user in accordance with the invention. In this embodiment, the method may be either user or application initiated as described above and the client computer 53 may launch the browser application in step 55 and provide the browser application with the URL of the dispatcher 34 which may include encoded signature data (also referred to as black box data). The browser may access the dispatcher using the URL address and communicate the signature data to the dispatcher 34 which forwards the signature data onto the appropriate server as described above. When a solution is located, the browser of the client computer may display a solution in step 56 in the form of a web page. In this embodiment, the signature data is not automatically communicated to the dispatcher 34, but is encoded and communicated to the dispatcher 34 when the user's browser accesses the dispatcher 34. Now, a third embodiment of the method for providing user support will be described. Figure 4 is a diagram illustrating a third embodiment of the method 52 for providing user support information to the user in accordance with the invention. In this embodiment, the method may be either user or application initiated as described above. When the method is initiated, the system may communicate the signature data 54 to the dispatcher 34 and the dispatcher will send an URL address back to the client computer with the address of the server to be accessed. Then, the browser application is launched in step 55 using the URL provided by the dispatcher 34 and the dispatcher or the appropriate server provides a web page back to the client computer which displays the solution to the user in step 56. In this embodiment, the URL of the dispatcher 34 is not known by the client computer and therefore it must download the URL of the dispatcher 34 prior to launching the browser application. The URL for the dispatcher may also be obtained from a communication mechanism that does not use URLs or the URL for the dispatcher may be acquired from a well known directory service. Now, an example of the knowledge base generated by the system and contained in the databases 46, 48, 50 will be described. Figure 5 is a diagram illustrating an example of a knowledge base 70 that is generated by the server shown in Figure 1 and stored in the database 46, 48, 50. In this example, a small portion of the knowledge base for Microsoft Word software application problems is shown and described although the knowledge base in each server will be much more extensive. As described above, this knowledge base may be stored in a database and may be generated based on the signatures received from the client computers so that the knowledge base grows every time a new signature is received. Initially, the knowledge base may contain any known solutions to the problem and then additional solutions may be added. Thus, in addition to automatically resolving user problems, the automatic software application support system also generates the knowledge base that is constantly expanding as more signatures, user solutions and user responses are processed. The knowledge base 70 may preferably be a tree which organizes the contents of the knowledge base. The contents of the knowledge base in accordance with the invention may also be organized using any other well-known knowledge storing and retrieval techniques such as, for example, text searches, associative memory, cognitive processing, decision trees, fault models, or case based reasoning. Any one or more of these knowledge search techniques may be used for retrieving the data. The tree as shown in Figure 5 may include a root node 72 which identifies the software application (Word in this example) to which the knowledge base is related. Underneath the root node may be one or more nodes 74, 76, 78 relating to different classes of problems with the particular software application, such as printer problems, error messages, saving problems, or software crashes in Word. Underneath each of the general problem nodes are one or more nodes 80, 82, 84 which further define the problem. In this example, these nodes may be underneath the printer problem node and may be for configuration problems, conflict problems and other problems. To navigate from the printer problem node to configuration node, for example, the user support system may analyze the incoming signature data and determine that the problem is related to a configuration problem. Underneath each of these nodes are additional nodes 86 which further define the problem. In this example, the configuration problem is further classified as either a missing file, a corrupt file or other. Then, the missing file problem is further classified as either a driver file problem or a DLL file problem. At the bottom of the knowledge base connected to the specific problem, such as a missing DLL file node 88, may be a solution 90 to the problem which may cause a page to be displayed to the user. The page may indicate to the user that the problem is a missing DLL file and have a button which can be clicked by the user to access a website and download the missing DLL file. Thus, the bottom of the knowledge base contains the solutions to the individual software application problems. Now, an example of a user experiencing a software application problem and receiving help from the automatic software application support system in accordance with the invention will be described. Figure 6 is a screen shot 100 showing an example of a user using a software application, such as Microsoft Word. In this example, the user has a document (Whitepap.doc) open and some text 102 is being displayed to the user. The text includes two footnotes along with some footnote text. A Talkback button icon 108 may be located in the start-up tray and may be used to display the client end of the software application user support system in accordance with the invention when a software application problem occurs. While the user is using the software application, the detector as described above, is active so that, when a software application problem occurs, the detector gathers the signature information. Figure 7 is a screen shot 120 illustrating an example of the user attempting to perform an action in Word which causes an error to occur. In particular, the user highlights the two footnotes on the page and presses the delete key in an attempt to delete the footnotes and the footnote text. When the user presses the delete key, however, an error message dialog box 122 is generated by the software application when a software application problem occurs. In this particular example, the dialog box indicates to the user that, "This is not a valid action for footnotes." In addition to the text of the error message in the dialog box 122, there may be an OK button 124. The OK button, when activated, causes the software application to stop the deletion process and return the user to the document. The Talkback icon 108, when clicked on by the user, may display a user interface for entering problem information. The Talkback icon 108 permits the user to request help with a problem at any time by filling in the user interface page. Note that the button to request support help with Talkback could be located in several different places, including the system menu tray as shown in Figure 7. In another alternative embodiment, where the support request is automatically initiated when a software application problems occurs, the detector in the client computer automatically detects the software application problem, automatically gathers the signature information from the client computer relating to the particular software application problem and automatically communicates the signature information to the dispatcher 34 shown in Figure 1 so that the dispatcher may direct the signature to the appropriate server. If the support request is automatically generated, such as when the footnote error dialog box was displayed as shown in Figure 7, then a user interface of the detector is displayed as shown in Figure 8. Figure 8 illustrates an example of a user interface 130 of the detector client software application in accordance with the invention. When the user clicks the OK button in the error message, the detector user interface 130 is displayed on top of the software application. The user interface may include a drop down menu 132 for entering the software application that the user needs support for, a text box 134 for entering the specific error message encountered and a text box 136 for entering the user support question. In the embodiment where the support request is automatically generated, the information in the user interface 130 is automatically filled in by the detector. In the example shown, the detector fills in the name of the software application (Microsoft Word) based on the signature information, fills in the text of the error message dialog (This is not a valid action for footnotes.) based on the error dialog text in the signature information and fills in a sample support question for the user based on heuristics. For the question, the detector may receive the signature information and determine a sample support question. For example, if the current active window contains an OK box, the detector determines that an error message is being displayed to the user so that the sample question may be, "What does this message mean?". As another example, if the error message contained in the signature information relates to a menu item, then the sample question may be, " Why can't I perform this action using the menu item?". Whether the information is automatically generated or entered by the user, the user may modify any of the information in the user interface.. For example, the user may replace the sample question with a more specific question. The user interface 130 may also include a cancel button 138 for canceling the support request, a information button 140 for requesting more information about the detector application and a submit button 142 for submitting the support request to the user support system. When the user clicks on the submit button 142, the web browser application on the client computer is automatically launched and the user is directed to a user support web page as shown in Figures 9a and 9b. Figures 9a and 9b illustrate a web page 150 which is displayed on the user's web browser when the user submits a support request. In particular, when the user submits a support request, the dispatcher dispatches the signature information to the appropriate server to generate solutions to the support request. The dispatcher then directs the user's browser application to a particular location/web page with solutions to the user's particular support request. In this example, the user was directed to the uniform resource locator (URL) http://www.supportpost.com. As is typical with most web pages, there may be banner advertisements and other advertisements which the user may select. This web page 150 may include a portion 152 which permits the user to request live support from a user support person as will be described below. The web page 150 may also include an upper portion 154 with information which may be of interest to the user. The web page may also include a problem identification section 156 which automatically lists the user's particular problem based on the signature information. The web page 150 may also include an article section 158 which includes a listing of the articles which suggest solutions to the support request as well as a link 159 to the web site(s) where the articles were located by the dispatcher. The user support system may search the various servers to generate the list of articles. The web page may also include a newsgroup/chat room solution section 160 which includes a listing of the solutions which appear in the newsgroups maintained by the dispatcher which are located by the dispatcher based on the signature information. Thus, the web page 150 permits the user to either select official support articles or newsgroup solutions (probably submitted to the user support system by other users) and then the user is linked to the appropriate web page. Thus, with a single click of the submit button of the user interface, the user is directed to a web page which contains solutions to the user's support request. Now, an example of an article in the article section 158 will be described. Figures 10a and 10b illustrate an example of a web page 166 located on the official user support site, such as the Microsoft Personal Support Center in this example, which the user is directed to when the user selects the second article from the web page shown in Figure 9b. The web page 166 may include various sections with information about the solution to the support request, including an introduction section 168, a symptom section 170, a cause section 172 and a workaround section 174. The introduction section may include a title and information about which versions of the software application that the solution may be applicable to. The symptom section may contain a brief synopsis of the problem, such as "...In Microsoft Word, if you edit a footnote, the following error message may appear: Not a valid action for footnotes in this example. The cause section may include an explanation of why the problem occurs and the workaround section contains a solution to the problem. In this example, the solution is that if you want to delete the footnote, you must delete the footnote reference number that appears in the text of the document. Now, an example of a solution from the newsgroup solutions list will be described. Figure 11 illustrates a web page 176 displayed to the user when the user selects the second newsgroup solution from the web page shown in Figure 9b. In this example, the solution is shown in the newsgroup format, but the solution may also be shown in a bulletin board format. The web page 176 may include a header section 178 and a text section 180. The header section 178 may include information about the particular newsgroup posting, such as the author, the date and the name of the newsgroup where the solution was located. The text section may include the text of the newsgroup posting which includes information about a solution to the support request. In this example, the newsgroup posting provides the same solution to the support request as the article from the official support site. Returning to Figure 9a, if the user is not satisfied with the solutions provided by the articles or the newsgroups, the user escalate the support request and select to receive live support by selecting the live support icon 152. The live support process will now be described. Figure 12 illustrates a web page 184 which may be displayed to the user when the user selects to receive live user support from the web page shown in Figure 9a. The web page 184 may be a directory of user support sites which may be used by the user so that the user support system provides the user with a choice of solutions. The web page 184 may include a user section 186 and a support section 188. The user section may provide the user with specific information about the user, such as that the user may already exhausted their free user support calls in this example. Therefore, the support section 188 may list one or more support sites or support centers which provide user support for the particular support request for a fee. In the example shown, there may be three support centers. The support section 188 may include cost information as well as a rating of each support center by users of the user support system. For example, after each live support experience, a user of the user support system may fill out an evaluation form so that the user support system may change its rating of the live support center if appropriate. The user support system may also be integrated into the support center's automatic call director (ACD) so that the user support system may include additional information about each support center, such as the estimated hold time for each support call and any additional capabilities of the support center such as voice or remote control. This additional information may be gathered from the ACD or from other sources and then combined with the other information to permit users to select a support center based on the various factors ( price vs. wait tradeoff, for example) listed in the support section 188. The support section 188 may also include web links to the support centers. In this example, the user selects the Microsoft Personal Support center and is automatically linked to that support center web page as will now be described. Figure 13 is a diagram illustrating a web page 190 of the Microsoft Personal Support center that may include a static, user input section 192 and a live chat section 194. The static user input section permits the user to interact with the live support center, such as logging into the system. The chat section 194 permits the user to have a live chat session with a user support person from the support center as will now be described with reference to Figures 14a and 14b. Figures 14a and 14b are diagrams illustrating a live support web page 200 that may include an information section 202 and the live chat section 1 4. The information section 202 may contain the various information contained in the signature information along with other information that is also displayed to the user support person, such as overview information, user information, system information, application information and custom information. The information may be generated based on the signature information as well as the user's interactions with the user support system. Using the information in the information section, the user and the user support person may engage in a chat session using the chat section 194 so that the user support person may be able to provide a solution to the user's support request. As described above, after the chat session has been completed, the user may fill out an evaluation form for the user support system so that the user support system may update the ratings for the live support center as necessary. Now, an example of a web page that permits a user support person to provide a fix for a software application problem will now be described. Figure 15 is a diagram illustrating an example of a fix authoring user interface screen 230 in accordance with the invention that permits a user support person to generate a fix for a software application problem. In particular, the page 230 may include a code writer section 232 which permits the user support person to generate code to fix a software application problem. The particular software application problem that the code applies to is specified in an upper section 234. Once the person has completed the code, he may click an OK button 236 to save the fix code into the knowledge base so that the fix code may be distributed to users. The next series of pages permit the user support person to generate the information, fix and self-help pages that are displayed to the client computer. Now, a page for assigning fixes to a particular software application problem will be described. Figure 16 is a diagram illustrating an example of a fix assignment user interface screen 240 in accordance with the invention. In the next three pages shown in Figures 16 -18, an activator page may be used to assign the fixes, information and status information which appear on the client user interface pages by changing an action field 241 from "assign fix" to "assign info" to "assign status". Now, assigning the fixes is described. The fix assignment screen 240 permits the user support people to assign one or more fixes to a software application problem based on particular criteria. Specifically, the user may enter one or more fixes (or the locations of the fixes or the fix code) in a fix picker 242 and enter criteria in a criteria box 244. Thus, when the criteria in the criteria box is identified in signature information from a client, one of the fixes listed in the fix picker 242 is chosen and sent to the client computer. The page 240 also permits the user support person to modify the assignment of the fixes so that, a new previously unknown fix which is better than the other known fixes may be assigned to a criteria. The page may also permit the user support person to save the new assignments. Now, a page for assigning the information and self-help will be described. Figure 17 is a diagram illustrating an example of a self-help assignment user interface screen 250 in accordance with the invention. The page 250 may include the criteria field 244 and a field 252 for assigning a URL link that directs the user of the client computer to a web page with information about the particular software application problem. The user support person may also assign the appropriate criteria using the criteria field 244. Thus, when the criteria exists in the signature information and the user of the client computer clicks on the information link, the user will be directed to the web page pointed to by the URL entered by the user support person. The page may also permit the user support person to update the assignment of the information links. Now, a page for assigning the self-help links will be described. Figure 18 is a diagram illustrating an example of a self-help assignment user interface screen 260 in accordance with the invention. The page 260 may include the criteria field 244 and a field 262 for assigning one or more URL links for self-help pages that may be accessed by the user of the client computer. The user support person may also assign the appropriate criteria using the criteria field 244. Thus, when the criteria exists in the signature information and the user of the client computer clicks on the self-help link, a list of self-help pages will be displayed so that the user will be directed to the web pages pointed to by the URLs entered by the user support person. The page may also permit the user support person to update the assignment of the self- help links. Now, more details about the detector located within each client computer will be described. Figure 19 is a diagram illustrating the detector 32 of the software application user support system in accordance with the invention. As described above, the detector 32 is embedded in the client computer and may preferably be a software application stored in the memory of the client computer which is executed by the microprocessor of the client computer. Because the detector is embedded into the client computer, it is able to monitor various operating system (OS) information and user actions and commands so that the detector may automatically generate a signature when a software application problem occurs in the client computer. Thus, even when a software application crashes, the detector is able to generate a signature that may be communicated to the dispatcher as some later time. The detector 32 may include an event detector 270, a database/local storage 272 and a signature gatherer 274 which are combined together into an intrinsic information module. As shown, the information module may perform data collection when certain event occur, such as the computer start, an application start, system or an application shutdown, API calls or when another module detects a triggering event. It may also monitor data stream by intercepting them (see the hooked events shown in Figure 19). These data streams may be monitored in order to collect history information (prior user actions or events) or to detect patterns within the data stream that should cause the machine state information to be generated. For example, the information module may monitor SQL database transactions and keep the most recent 30 transactions in a history buffer so that the most recent SQL transactions may be included in a signature if appropriate. The information module may also detect an anomalous condition, such as an illegal SQL command in the data stream. The event detector may, using various heuristics, attempt to determine when a software application problem, such as a software crash or an error message, has occurred. The event detector may detect the software application problem using detection rules and information which may be stored in the database 272 as will be described below. Once the software application problem has been detected, the event detector 270 signals the signature gatherer 274 to generate a signature for the software application problem. The signature may be temporarily stored in the database 272. The signature gatherer 274 may then communicate the signature to the dispatcher as described above. Now, each of these units will be described in more detail. The database 272 may contain information and detection rules which are used for detecting a software application problem. It may also contain signatures. The signature gatherer 274 may be connected to various data in the client computer which are typically available to the operating system (OS), such as various OS data (e.g., stack data) and user action data. The gatherer may also make requests to the operating system, the hardware or a software application as well as perform tests. The gatherer 274 may continually gather signature data which is periodically removed from memory by new data. When a software application problem is detected, the gatherer 274 may gather together the signature data gathered prior to the event and package the signature data into a data packet which may be sent to the dispatcher. The event detector 270 may detect that a software application problem has occurred in several different ways. A software application crash event is fairly easy to identify based on the OS data available to the event detector. The event detector may also make requests to the operating system, the hardware or a software application as well as perform tests. An error message generated by a software application is more difficult since some dialog boxes are not reporting errors. In particular, when an error message is generated, the OS of the client computer generates a dialog resource to generate the window with the error message, a system message indicating that a string should appear in the dialog box and the text to be placed into the string. In accordance with a first detection method, all of the resource identifications for a particular OS may be identified. For each resource identification, a chart may identify whether or not the software application user support system is going to be called and what URL is going to be accessed. For example, a resource identification for a dialog box about checking that the user wants to save a document is not a resource identification which would trigger the generation of a signature. In the first detection method, the database 272 may store a list of the text patterns, such as "The printer XXX was not found" which would be indicators that a software application problem has occurred. Then, the incoming dialog text would be compared to the list of regular expressions and the user support system is activated if a match occurs. In accordance with a second detection method, the string associated with the resource may be identified and compared to a list of typical strings which trigger the user support system. In accordance with a third detection method, the detection of certain graphics characteristics of a dialog window may be used to detect a software application problem. For example, any dialog window that contains a one OK button and one other button indicates a software application problem and a signature is generated and sent to the dispatcher. With all of these detection methods, the user support system may automatically update the lists in the detector periodically as additional information is generated from the knowledge base, for example. Now, a second embodiment of the software application user support system is described in which the help desk of a coφoration may be integrated with the software application user support system. Figure 20 is a diagram illustrating a second embodiment of a software application support system 280 in accordance with the invention. Elements of this embodiment of the invention are similar to the elements shown and described with reference to Figure 1 and therefore have the same reference numerals and will not be described here in any detail. The system 280 may include one or more employees of a coφoration (User #1, User #2 and User #N) who have personal computers which they use to accomplish job related functions. Each of the client computers may include the detector 32 which detects software application problems and generates a signature for the event. The signatures generated by the detector 32, when a software application problem occurs, are communicated over a computer network 36, such as an internal coφorate Intranet, a LAN, a WAN or a public network, to the dispatcher 34. In this embodiment, the users, the computer network 36 and the dispatcher 34 may be located within the secure network of the coφoration. This system 280 may also include a help desk 282 which receives the information generated by the dispatcher based on the information in each signature and passes the signature onto the relevant server 38, 40, 42. The help desk 282 may also receive data back from the one or more servers 38, 40, 42 which each handle software application problems for a particular software application, such as Microsoft Word, Netscape Navigator and Novell Group Wise in this example. Each server 38, 40, 42 may include the database 46, 48, 50 which stores the knowledge base which is used to resolve the software application problems as described above. In this embodiment, the solutions generated by the servers are communicated back to the help desk 282 which then communicates the solutions back to the users so that the user support system itself is transparent to the users. Thus, the users do not know that the solutions being proposed by the help desk are actually being suggested by the user support system in accordance with the invention. The benefit of this embodiment is that the coφoration has complete control over the system and the general public does not have any access to the system. With this embodiment, however, the coφoration may periodically receive knowledge base upgrades from the system shown in the first embodiment since the system in the first embodiment is more likely to grow the knowledge base more rapidly since more people (the general public) may access that system. Now, a third embodiment of the user support system will be described in which a developer of a software application may control the system. Figure 21 is a diagram illustrating a third embodiment of the software application support system 290 in accordance with the invention. Elements of this embodiment of the invention are similar to the elements shown and described with reference to Figure 1 and therefore have the same reference numerals and will not be described here in any detail. The system 290 may include one or more users (User #1, User #2 and User #N) who have personal computers which execute a software application that is developed by the coφoration which owns the system 290. Each of the client computers may include the detector 32 which detects software application problems and generates a signature when the event occurs. The signatures generated by the detector 32 when a software application problem occurs are communicated over a computer network 36, such as an internal coφorate Intranet, a LAN, a WAN or a public network, to the dispatcher 34. In this embodiment, the dispatcher 34 may be owned by the developer and located on the developer's site. In this embodiment, the server 292 which resolves software application problems associated with the developer's software application and its database 294 with its knowledge base may be integrated into the dispatcher to form a single integrated unit. Thus, this system 290 is designed to handle software application problems related to the developer's software application only. The system 290 may, however, may have access to the other servers 48, 50 and 52 as support channels so that the dispatcher 34 may use the information in the databases 46, 48, 50 of the servers 38, 40, 42 to resolve problems. In addition, the knowledge base from the public servers 38, 40, 42 may be uploaded periodically to the server 292 at the developer's site to update the knowledge base. As above, the public knowledge base is likely to grow faster than the developer's internal knowledge base. In this embodiment, the solutions generated by the servers are communicated back to the users by directing the browser application of the client computer to predetermined URLs. The benefit of this embodiment is that the developer has complete control over the system and the knowledge base and the general public does not have any access to the system. In addition, the developer may mine the information in the knowledge base to determine various information about the software application. For example, the developer, based on the number of signatures associated with each class of problems, may determine the most prevalent user problems and correct those prevalent problems in the next revision of the software application. Thus, by users accessing the system 290, the developer may determine information that may be helpful to the future development of the software application. While the foregoing has been with reference to a particular embodiment of the invention, it will be appreciated by those skilled in the art that changes in this embodiment may be made without departing from the principles and spirit of the invention, the scope of which is defined by the appended claims.

Claims: Claims: 1. A system for automatically providing user support for a support request, the system comprising: means for receiving a signature containing information from a client computer at the time when a support request occurs at the client computer; means for dispatching an incident, based on the information in the signature, to a selected one of a plurality of user support sites; and means for directing a browser application of the client computer to one of the user support sites to provide the user with information and solutions to the support request. 2. The system of Claim 1 , wherein the client computer comprises means for receiving a user selection of a support request for which the user wants support and means for collecting machine state information about the selected support request from the client computer in order to provide a solution to the support request. 3. The system of Claim 2, wherein the support request is triggered by a computer problem, the computer problem comprises an error dialog and wherein the problem machine state information comprises one or more of a name of the dialog window, a text string contained in the error dialog and an application call stack leading up to the error dialog. 4. The system of Claim 1 , wherein each of the user support sites comprising means for storing a database of solutions to support requests, a particular software application problem, a particular system software problem and a particular problem with a piece of computer hardware, the database being generated from prior machine state signatures provided to the user support site. 5. The system of Claim 4, wherein the support request is generated by a computer problem that comprises one of a software crash or a software application error message. 6. The system of Claim 4, wherein the support request is generated by a computer problem that comprises one of an operating system crash or an operating system error message. 7. The system of Claim 4, wherein the support request is generated by a computer problem that comprises a computer hardware problem and wherein the machine state information comprises information about the configuration of the computer hardware. 8. The system of Claim 1 further comprising a detector in the client computer for detecting a computer problem and generating a signature of the computer problem when the computer problem occurs in the client computer. 9. The system of Claim 8, wherein the detector further comprises a database in the client computer containing known computer problems and means for comparing the generated machine state information signature with the computer problem database to provide a solution to the user of the client computer without communicating with the dispatcher means. 10. The system of Claim 9 further comprising means for periodically updating the problem database in the client computer so that the detector detects additional computer problems, without sending the signature to the dispatcher means, based on the updates to the problem database. 11. The system of Claim 8, wherein the detector further comprises means for gathering operating system information from the client computer when the computer problem occurs. 12. The system of Claim 8, wherein the detector further comprises means for detecting that a computer error message has occurred. 13. The system of Claim 12, wherein the detecting means comprises means for identifying a dialog box containing an error message. 14. The system of Claim 1 , wherein the machine state information comprises an application name and an error message generated by the application. 15. The system of Claim 14, wherein the machine state information further comprises one or more of configuration information, computer system type, user comments, user's responses to questions and one or more pieces of information generated by diagnostics being run on the client computer. 16. The system of Claim 1 further comprising means for escalating a support request to a live support center along with unsolved support request information, the unsolved support request information comprising the machine state information signature and the prior actions taken by the user to solve the support request. 17. The system of Claim 16, wherein the escalation means comprises a list of information about support centers offering user support, the information including a link to the support center, a cost of the support center and a rating of the support center and means for selecting one of the support centers based on the support center information. 18. The system of Claim 17, wherein the escalation means further comprises means for receiving feedback for a particular support center from a user who used that support center and means for adjusting the rating information for the support center based on the feedback. 19. The system of Claim 18, wherein escalation means comprises means for tracking call wait time information at each support center and wherein the support center information comprises the call wait time information. 20. The system of Claim 4, wherein each user support site further comprises means for identifying machine state information signatures having a similar solution, means for updating a database in the client computer to reflect the similarity of the machine state information signatures and means for generating machine state information signatures containing information about the similarity of the machine state information signatures. 21. The system of Claim 4, wherein each user support site further comprises means for identifying support requests which are not solved by the database and means for reporting the unsolved support requests to a user support person. 22. The system of Claim 1 further comprising means for posting a support request to a bulletin board to locate a solution to the support request. 23. The system of Claim 22 further comprising means for tracking the users who post the support requests and the users who post solutions to the support requests so that the user who post the solutions are rewarded for the solution. 24. The system of Claim 23, wherein the tracking means comprises an electronic payment system so that the user who posts the solution receives a monetary credit for the solution and the user who posted the computer problem receives a monetary debit. 25. The system of Claim 1 further comprising a database of information about one or more support request providers, the information including a link to the support request provider and a rating of the support request provider and means for selecting a support request provider from the database based on the information. 26. The system of Claim 1 , wherein said support request comprises a question by the user about how to solve a problem. 27. A method for automatically providing user support for a support request, the method comprising: receiving a signature containing information from a client computer at the time when a support request occurs at the client computer, the signature including a software application name and the type of error message; dispatching an incident, based on the information in the signature, to a selected one of a plurality of user support sites; and directing a browser application of the client computer to one of the user support sites to provide the user with information and solutions to the support request. 28. The method of Claim 27 further comprising receiving a user selection of a support request for which the user wants support and collecting machine state information about the selected support request from the client computer in order to provide a solution to the support request. 29. The method of Claim 28, wherein the support request is triggered by a computer problem, the computer problem comprises an error dialog and wherein the problem machine state information comprises one or more of a name of the dialog window, a text string contained in the error dialog and an application call stack leading up to the error dialog. 30. The method of Claim 27, wherein each of the user support sites comprising storing a database of solutions to support requests, a particular software application problem, a particular system software problem and a problem with a particular piece of computer hardware, the database being generated from prior machine state signatures provided to the user support site. 31. The method of Claim 30, wherein the support request is generated by a computer problem that comprises one of a software crash and a software application error message. 32. The method of Claim 30, wherein the support request is generated by a computer problem that comprises one of an operating system software application crash and an operating system software application error message. 33. The method of Claim 30, wherein the support request is generated by a computer problem that comprises a computer hardware problem and wherein the machine state information comprises information about the configuration of the computer hardware. 34. The method of Claim 27 further comprising detec cing a computer problem in the client computer and generating a signature of the computer problem when the computer problem occurs in the client computer. 35. The method of Claim 34, wherein the detecting further comprises a database in the client computer containing known computer problems and comparing the generated machine state information signature with the computer problem database to provide a solution to the user of the client computer without communicating with the dispatcher. 36. The method of Claim 35 further comprising periodically updating the problem database in the client computer so that the detector detects additional computer problems, without sending the signature to the dispatcher, based on the updates to the problem database. 37. The method of Claim 34, wherein the detecting further comprises gathering operating system information from the client computer when the computer problem occurs. 38. The method of Claim 34, wherein the detecting further comprises detecting that a computer error message has occurred. 39. The method of Claim 38, wherein the detecting comprises identifying a dialog box containing an error message. 40. The method of Claim 27, wherein the machine state information comprises an application name and an error message generated by the application. 41. The method of Claim 40, wherein the machine state information further comprises one or more of configuration information, computer system type, user comments, user's responses to questions and one or more pieces of information generated by diagnostics being run on the client computer. 42. The method of Claim 22 further comprising escalating a support request to a live support center along with unsolved support request information, the unsolved support request information comprising the state machine information signature and the actions taken by the user to solve the problem. 43. The method of Claim 42, wherein the escalation comprises generating a list of information about support centers offering user support, the information including a link to the support center, a cost of the support center and a rating of the support center and selecting one of the support centers based on the support center information. 44. The method of Claim 43, wherein the escalation further comprises receiving feedback for a particular support center from a user who used that support center and adjusting the rating information for the support center based on the feedback. 45. The method of Claim 44, wherein the escalation comprises tracking call wait time information at each support center and wherein the support center information comprises the call wait time information. 46. The method of Claim 30, wherein each user support site further comprises identifying machine state information signatures having a similar solution, updating a database in the client computer to reflect the similarity of the machine state information signatures and generating machine state information signatures containing information about the similarity of the machine state information signatures. 47. The method of Claim 30, wherein each user support site further comprises identifying support requests which are not solved by the database and reporting the unsolved support requests to a user support person. 48. The method of Claim 27 further comprising posting a support request to a bulletin board to find a solution to the support request. 49. The method of Claim 48 further comprising tracking the users who post the support requests and the users who post solutions to the support requests so that the user who post the solutions are rewarded for the solution. 50. The method of Claim 49, wherein the tracking comprises an electronic payment system so that the user who posts the solution receives a monetary credit for the solution and the user who posted the computer problem receives a monetary debit. 51. The method of Claim 27 further comprising generating a database of information about one or more support request providers, the information including a link to the support request provider and a rating of the support request provider and selecting a support request provider from the database based on the information. 52. The method of Claim 27, wherein said support request comprises a question by the user about how to solve a problem. 53. A system for automatically generating a knowledge base containing information about a plurality of support requests, the system comprising: means for receiving a signature containing machine state information from a client computer at the time when a support request occurs at the client computer; means for comparing the signature to one or more templates in order to categorize the signature; means for generating a new template from the categorized signature so that other signatures for a similar support request match the new template, the new template being associated with one or more solutions; and means for storing the signature, the new template and the solutions in a database so that a knowledge base of signatures, templates and corresponding solutions to the support request is generated. 54. A system for providing user support for a support request, the system comprising: means for receiving a signature containing machine state information from a client computer at the time when a support request occurs at the client computer; means for dispatching an incident, based on the state machine information in the signature, to a selected one of a plurality of user support sites; and means for generating a listing of one or more user support sites that provide a solution to the support request, each support site listing including information about the support center, the information including a link to the support site, a cost of the support site and a rating of the support site. 55. The system of Claim 54 further comprising means for receiving feedback for a particular support site from a user who used that support site and means for adjusting the rating information for the support site based on the feedback. 56. The system of Claim 55 further comprising means for tracking call wait time information at each support site and wherein the support center information comprises the call wait time information.

Inventors: OTHMER KONSTANTIN, OTHMER, KONSTANTIN
Applicants: NOWONDER INC, NOWONDER, INC.
Application year: 2000
Main classification: H02H3
IPC codes: G06F11