| abstract | Planning dialogues is a notoriously difficult task, consisting of several non-trivial components. Because of this, programming human-computer dialogues is also a complicated task. Humans are unpredictable, make mistakes, vary their pronunciation, change their minds halfway through utterances or actions, and so on. Although not all errors can be solved easily, we can at least attempt to avoid total communication breakdown. In this thesis, we present a number of tactics to make the generation of human-computer dialogues more robust. We focus on task-oriented dialogues, since they have a relatively high level of predictability and a clear goal. More specifically, we have studied the generation of dialogues in which the robot iCat instructs the user to perform a task, most notably the preparation of a recipe that is chosen by the user at the beginning of the dialogue. The framework that we present in this thesis is modeled as a BDI agent. Being an agent, it is autonomous, social, reactive and goal-directed. Its internals are represented according to the BDI (Belief-Desire-Intention) paradigm, which enables us to consider the program and the human user in similar terms. This allows us to simulate human-computer dialogue by representing the user as a simple BDI agent itself. We have developed this framework by investigating human-human dialogues, principles of cooperation, and dialogue systems. Based on this, we have gathered a set of requirements that we believe any such system should adhere to. Then, we have constructed a framework for such a system, consisting of a basic system and an error handling module. We have also investigated a technique for natural language processing and generation. In order to make the system robust and generic, we present an error handling module that is separate from the basic dialogue system. The basic dialogue system itself is only capable of producing and interpreting instructions that are part of the task at hand, based on principles from dialogue theory and cooperation. The error handling module can deal with errors such as misunderstandings and erroneous actions by the user. Our basic framework was almost completely implemented, showing that it is indeed a valid framework. Of our error handling module, only some aspects were implemented, leaving the rest of the implementation and validation for future work. As a preliminary validation of our framework, we have presented a dialogue in which errors are detected and repaired, which can be constructed with the rules that we present in this thesis. A more definitive validation can be given if we implement the complete system and test it with human users. The value of the framework can be fully assessed after testing whether users can perform tasks better, faster and easier with a task assistant than with, for example, a manual |