Dialog management in the Let's Go system is based on RavenClaw [3], a generic framework for dialog management. RavenClaw features a task-independent dialog engine that carries out the dialog according to a task specification. To build a dialog system for a new task, a dialog specification is written as a tree structure where each node represents a ``dialog agent''. Figure 1 is a simplified representation of the tree structure. Each leaf agent is in charge of one of four elementary tasks:
Each call to the system starts with a welcome message that prompts the user to make a request. The system waits for the user's answer and grabs concepts such as question type (e.g. ``When is the next bus to X?'', ``How can I go from X to Y?'') or departure and arrival times and places. If it has enough information to be able to submit a query to the database, it does so, presents the results to the user, and prompts for a new query. If more information is needed to make a complete query (e.g. the user gave the destination but did not specify a place of departure), the system explicitly prompts the user to provide the missing information (e.g. ``Where are you leaving from?'').
Some agents (not represented in Figure 1) handle the explicit confirmation of recognized concepts. In the current system, each time a new piece of information is obtained from the user, the system repeats what it understood so that the user can detect and verbally correct misrecognitions as they occur.