This is unreleased documentation for Rasa Documentation Main/Unreleased version.
For the latest released documentation, see the latest version (3.x).

Version: Main/Unreleased


You first have to create a Telegram bot to get credentials. Once you have them you can add these to your credentials.yml.

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, 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.

Running on Telegram

Add the Telegram credentials to your credentials.yml:

access_token: "490161424:AAGlRxinBRtKGb21_rlOEMtDFZMXBl6EC0o"
verify: "your_bot"
webhook_url: ""

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:

  • 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


- 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: ""
- text: Here's my giraffe sticker!
sticker: ""