These docs are for version 1.x of Rasa Open Source.

### User Guide

- [Installation](https://legacy-docs-v1.rasa.com/1.10.1/user-guide/installation/)
- [Tutorial: Rasa Basics](https://legacy-docs-v1.rasa.com/1.10.1/user-guide/rasa-tutorial/)
- [Tutorial: Building Assistants](https://legacy-docs-v1.rasa.com/1.10.1/user-guide/building-assistants/)
- [Command Line Interface](https://legacy-docs-v1.rasa.com/1.10.1/user-guide/command-line-interface/)
- [Architecture](https://legacy-docs-v1.rasa.com/1.10.1/user-guide/architecture/)
- [Messaging and Voice Channels](https://legacy-docs-v1.rasa.com/1.10.1/user-guide/messaging-and-voice-channels/)
- [Testing Your Assistant](https://legacy-docs-v1.rasa.com/1.10.1/user-guide/testing-your-assistant/)
- [Setting up CI/CD](https://legacy-docs-v1.rasa.com/1.10.1/user-guide/setting-up-ci-cd/)
- [Validate Data](https://legacy-docs-v1.rasa.com/1.10.1/user-guide/validate-files/)
- [Configuring the HTTP API](https://legacy-docs-v1.rasa.com/1.10.1/user-guide/configuring-http-api/)
- [Deploying Your Rasa Assistant](https://legacy-docs-v1.rasa.com/1.10.1/user-guide/how-to-deploy/)
- [Cloud Storage](https://legacy-docs-v1.rasa.com/1.10.1/user-guide/cloud-storage/)

### NLU

- [About](https://legacy-docs-v1.rasa.com/1.10.1/nlu/about/)
- [Using NLU Only](https://legacy-docs-v1.rasa.com/1.10.1/nlu/using-nlu-only/)
- [Training Data Format](https://legacy-docs-v1.rasa.com/1.10.1/nlu/training-data-format/)
- [Language Support](https://legacy-docs-v1.rasa.com/1.10.1/nlu/language-support/)
- [Choosing a Pipeline](https://legacy-docs-v1.rasa.com/1.10.1/nlu/choosing-a-pipeline/)
- [Components](https://legacy-docs-v1.rasa.com/1.10.1/nlu/components/)
- [Entity Extraction](https://legacy-docs-v1.rasa.com/1.10.1/nlu/entity-extraction/)

### Core

- [About](https://legacy-docs-v1.rasa.com/1.10.1/core/about/)
- [Stories](https://legacy-docs-v1.rasa.com/1.10.1/core/stories/)
- [Domains](https://legacy-docs-v1.rasa.com/1.10.1/core/domains/)
- [Responses](https://legacy-docs-v1.rasa.com/1.10.1/core/responses/)
- [Actions](https://legacy-docs-v1.rasa.com/1.10.1/core/actions/)
- [Reminders and External Events](https://legacy-docs-v1.rasa.com/1.10.1/core/reminders-and-external-events/)
- [Policies](https://legacy-docs-v1.rasa.com/1.10.1/core/policies/)
- [Slots](https://legacy-docs-v1.rasa.com/1.10.1/core/slots/)
- [Forms](https://legacy-docs-v1.rasa.com/1.10.1/core/forms/)
- [Retrieval Actions](https://legacy-docs-v1.rasa.com/1.10.1/core/retrieval-actions/)
- [Interactive Learning](https://legacy-docs-v1.rasa.com/1.10.1/core/interactive-learning/)
- [Fallback Actions](https://legacy-docs-v1.rasa.com/1.10.1/core/fallback-actions/)
- [Knowledge Base Actions](https://legacy-docs-v1.rasa.com/1.10.1/core/knowledge-bases/)

### Conversation Design

- [Dialogue Elements](https://legacy-docs-v1.rasa.com/1.10.1/dialogue-elements/dialogue-elements/)
- [Small Talk](https://legacy-docs-v1.rasa.com/1.10.1/dialogue-elements/small-talk/)
- [Completing Tasks](https://legacy-docs-v1.rasa.com/1.10.1/dialogue-elements/completing-tasks/)
- [Guiding Users](https://legacy-docs-v1.rasa.com/1.10.1/dialogue-elements/guiding-users/)

### API Reference

- [Action Server](https://legacy-docs-v1.rasa.com/1.10.1/api/action-server/)
- [HTTP API](https://legacy-docs-v1.rasa.com/1.10.1/api/http-api/)
- [Jupyter Notebooks](https://legacy-docs-v1.rasa.com/1.10.1/api/jupyter-notebooks/)
- [Agent](https://legacy-docs-v1.rasa.com/1.10.1/api/agent/)
- [Custom NLU Components](https://legacy-docs-v1.rasa.com/1.10.1/api/custom-nlu-components/)
- [Rasa SDK](https://legacy-docs-v1.rasa.com/1.10.1/api/rasa-sdk/)
- [Events](https://legacy-docs-v1.rasa.com/1.10.1/api/events/)
- [Tracker](https://legacy-docs-v1.rasa.com/1.10.1/api/tracker/)
- [Tracker Stores](https://legacy-docs-v1.rasa.com/1.10.1/api/tracker-stores/)
- [Event Brokers](https://legacy-docs-v1.rasa.com/1.10.1/api/event-brokers/)
- [Lock Stores](https://legacy-docs-v1.rasa.com/1.10.1/api/lock-stores/)
- [Training Data Importers](https://legacy-docs-v1.rasa.com/1.10.1/api/training-data-importers/#)
- [Featurization of Conversations](https://legacy-docs-v1.rasa.com/1.10.1/api/core-featurization/)
- [TensorFlow Configuration](https://legacy-docs-v1.rasa.com/1.10.1/api/tensorflow_usage/)
- [Migration Guide](https://legacy-docs-v1.rasa.com/1.10.1/migration-guide/)
- [Rasa Open Source Change Log](https://legacy-docs-v1.rasa.com/1.10.1/changelog/)

### Migrate from (beta)

- [Dialogflow](https://legacy-docs-v1.rasa.com/1.10.1/migrate-from/google-dialogflow-to-rasa/)
- [Wit.ai](https://legacy-docs-v1.rasa.com/1.10.1/migrate-from/facebook-wit-ai-to-rasa/)
- [LUIS](https://legacy-docs-v1.rasa.com/1.10.1/migrate-from/microsoft-luis-to-rasa/)
- [IBM Watson](https://legacy-docs-v1.rasa.com/1.10.1/migrate-from/ibm-watson-to-rasa/)

### Reference

- [Glossary](https://legacy-docs-v1.rasa.com/1.10.1/glossary/)

### Versions

Viewing: 1.10.1

##### Warning

This document is for an old version of Rasa. The latest version is 1.10.26.

# Training Data Importers

By default, you can use command line arguments to specify where Rasa should look for training data on your disk. Rasa then loads any potential training files and uses them to train your assistant.

If needed, you can also customize how Rasa imports training data.
Potential use cases for this might be:

- using a custom parser to load training data in other formats
- using different approaches to collect training data (e.g. loading them from different resources)

You can instruct Rasa to load and use your custom importer by adding the section `importers` to the Rasa configuration file and specifying the importer with its full class path:

```yaml
importers:
- name: "module.CustomImporter"
  parameter1: "value"
  parameter2: "value2"
- name: "module.AnotherCustomImporter"
```

The `name` key is used to determine which importer should be loaded. Any extra parameters are passed as constructor arguments to the loaded importer.

You can specify multiple importers. Rasa will automatically merge their results.

## RasaFileImporter (default)

By default Rasa uses the importer `RasaFileImporter`. If you want to use it on its own, you don’t have to specify anything in your configuration file. If you want to use it together with other importers, add it to your configuration file:

```yaml
importers:
- name: "RasaFileImporter"
```

## MultiProjectImporter (experimental)

Warning: This feature is currently experimental and might change or be removed in the future.

With this importer you can build a contextual AI assistant by combining multiple reusable Rasa projects.

An example directory structure could look like this:

```
.
├── config.yml
└── projects
    ├── GreetBot
    │   ├── data
    │   │   ├── nlu.md
    │   │   └── stories.md
    │   └── domain.yml
    └── ChitchatBot
        ├── config.yml
        ├── data
        │   ├── nlu.md
        │   └── stories.md
        └── domain.yml
```

In this example the contextual AI assistant imports the `ChitchatBot` project which in turn imports the `GreetBot` project.

Rasa uses relative paths from the referencing configuration file to import projects. During the training process Rasa will import all required training files, combine them, and train a unified AI assistant.

## Writing a Custom Importer

If you are writing a custom importer, this importer has to implement the interface of `TrainingDataImporter`:

```python
from typing import Optional, Text, Dict, List, Union

import rasa
from rasa.core.domain import Domain
from rasa.core.interpreter import RegexInterpreter, NaturalLanguageInterpreter
from rasa.core.training.structures import StoryGraph
from rasa.importers.importer import TrainingDataImporter
from rasa.nlu.training_data import TrainingData

class MyImporter(TrainingDataImporter):
    """Example implementation of a custom importer component."""
    def __init__(self,...):
        pass
    async def get_domain(self) -> Domain:
        pass
    def get_stories(self,...):
        pass
    async def get_config(self) -> Dict:
        pass
    async def get_nlu_data(self, language: Optional[Text] = "en") -> TrainingData:
        pass
```

### TrainingDataImporter class

Common interface for different mechanisms to load training data.
