Telegram

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.

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:

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:

Examples:

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"

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