You are viewing documentation for our open source project which is maintained by the community. If you want to get started building assistants with Rasa please check out our latest [documentation here](/content/docs/index.html).

## Getting Credentials

**How to get the Telegram credentials:**
You need to set up a Telegram bot.

1. To create the bot, go to [Bot Father](https://web.telegram.org/#/im?p=@BotFather), enter `/newbot` and follow the instructions. The URL that Telegram should send messages to will look like `http://<host>:<port>/webhooks/telegram/webhook`, replacing the host and port with the appropriate values from your running Rasa server.

2. At the end you should get your `access_token` and the username you set will be your `verify`.

3. If you want to use your bot in a group setting, it's advisable to turn on group privacy mode by entering `/setprivacy`. Then the bot will only listen when a user's message starts with `/bot`.

For more information, check out the [Telegram HTTP API](https://core.telegram.org/bots/api).

## Running on Telegram

Add the Telegram credentials to your `credentials.yml`:

```yaml
telegram:
  access_token: "490161424:AAGlRxinBRtKGb21_rlOEMtDFZMXBl6EC0o"
  verify: "your_bot"
  webhook_url: "https://your_url.com/webhooks/telegram/webhook"
```

Restart your Rasa server to make the new channel endpoint available for Telegram to send messages to.

##### Handling `/start` message

At the beginning of a conversation, the user will press the 'Start' button in Telegram. This will trigger a message with the content _/start_ to be sent. Make sure your bot can handle this intro message by designing a specific intent in the nlu training data file. Then add this `start` intent to the domain alongside a story or rule to handle it.

## Supported Response Attachments

In addition to standard `text:` responses, this channel also supports the following components from the [Telegram API](https://core.telegram.org/bots/api/#message):

- `button` arguments:
  - button_type: inline | vertical | reply
- `custom` arguments:
  - photo
  - audio
  - document
  - sticker
  - video
  - video_note
  - animation
  - voice
  - media
  - latitude, longitude (location)
  - latitude, longitude, title, address (venue)
  - phone_number
  - game_short_name
  - action

Examples:

```yaml
utter_ask_transfer_form_confirm:
  - buttons:
      - payload: /affirm
        title: Yes
      - payload: /deny
        title: No, cancel the transaction
    button_type: vertical
    text: Would you like to transfer {currency}{amount_of_money} to {PERSON}?
    image: "https://i.imgur.com/nGF1K8f.jpg"
```

```yaml
utter_giraffe_sticker:
  - text: Here's my giraffe sticker!
    custom:
      sticker: "https://github.com/TelegramBots/book/raw/master/src/docs/sticker-fred.webp"
```
