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

## User Guide

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

## NLU

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

## Core

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

## Conversation Design

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

## API Reference

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

## Migrate from (beta)

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

## Reference

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

## Your Own Website

If you just want an easy way for users to test your bot, the best option is usually the chat interface that ships with Rasa X, where you can [invite users to test your bot](/content/docs/rasa-x/user-guide/share-assistant/#share-your-bot/index.html).

If you already have an existing website and want to add a Rasa assistant to it, you can use [Chatroom](https://github.com/scalableminds/chatroom), a widget which you can incorporate into your existing webpage by adding a HTML snippet. Alternatively, you can also build your own chat widget.

### Websocket Channel

The SocketIO channel uses websockets and is real-time. You need to supply a `credentials.yml` with the following content:

```
socketio:
  user_message_evt: user_uttered
  bot_message_evt: bot_uttered
  session_persistence: true/false
```

The first two configuration values define the event names used by Rasa Core when sending or receiving messages over socket.io.

By default, the socketio channel uses the socket id as `sender_id`, which causes the session to restart at every page reload. `session_persistence` can be set to `true` to avoid that. In that case, the frontend is responsible for generating a session id and sending it to the Rasa Core server by emitting the event `session_request` with `{session_id: [session_id]}` immediately after the `connect` event.

The example [Webchat](https://github.com/mrbot-ai/rasa-webchat) implements this session creation mechanism (version >= 0.5.0).

### REST Channels

The `RestInput` and `CallbackInput` channels can be used for custom integrations. They provide a URL where you can post messages and either receive response messages directly, or asynchronously via a webhook.

#### RestInput

The `rest` channel will provide you with a REST endpoint to post messages to and in response to that request will send back the bots messages. Here is an example on how to connect the `rest` input channel using the run script:

```
rasa run
```

you need to ensure your `credentials.yml` has the following content:

```
rest:
  # you don't need to provide anything here - this channel doesn't
  # require any credentials
```

After connecting the `rest` input channel, you can post messages to `POST /webhooks/rest/webhook` with the following format:

```
{
  "sender": "Rasa",
  "message": "Hi there!"
}
```

The response to this request will include the bot responses, e.g.

```
[
  {"text": "Hey Rasa!"}, {"image": "http://example.com/image.jpg"}
]
```

#### CallbackInput

The `callback` channel behaves very much like the `rest` input, but instead of directly returning the bot messages to the HTTP request that sends the message, it will call a URL you can specify to send bot messages.

Here is an example on how to connect the `callback` input channel using the run script:

```
rasa run
```

you need to supply a `credentials.yml` with the following content:

```
callback:
  # URL to which Core will send the bot responses
  url: "http://localhost:5034/bot"
```

After connecting the `callback` input channel, you can post messages to `POST /webhooks/callback/webhook` with the following format:

```
{
  "sender": "Rasa",
  "message": "Hi there!"
}
```

The response will simply be `success`. Once Core wants to send a message to the user, it will call the URL you specified with a `POST` and the following `JSON` body:

```
[
  {"text": "Hey Rasa!"}, {"image": "http://example.com/image.jpg"}
]
```

> 👋 I can help you get started with Rasa and answer your technical questions.
