Skip to main content

Node telegram

The telegram node provides integration with the Telegram Bot API. It allows the flow to send messages to chats and channels, display inline buttons, handle button presses, and show pop-up notifications to the user.


Settings for the telegram node

Edit

1. botToken

The token for your Telegram bot, obtained from @BotFather.

Supports Mustache — the token can be stored in a flow variable and substituted using {{variable}}.

Example:

{{flow.telegramToken}}

2. chat_id

The identifier of the chat or channel where the message will be sent.

Supports Mustache. If the field is left empty, the backend will automatically take the value from msg.payload.message.chat.id — this is convenient when replying to an incoming message from a user.

Example:

{{payload.message.chat.id}}

3. text

The text of the message being sent.

Supports Mustache — you can dynamically insert data from msg.

Example:

Your order №{{payload.orderId}} has been successfully placed!

4. parseMode

The text formatting mode for the message. Available options:

  • none — no formatting, the text is sent as is.
  • Markdown — basic Markdown from Telegram (v1).
  • MarkdownV2 — an extended version of Markdown with support for spoilers and other elements.
  • HTML — HTML markup (<b>, <i>, <code>, <a>, etc.).

5. replyMarkup

The builder for inline buttons under the message. Buttons are organized into rows: each row contains one or more buttons.

For each button, the following are specified:

  • Text — the label of the button that the user sees.
  • callback_data — the value that will be sent to the webhook in the msg.payload.callback_query.data field when the button is pressed. This value can be used to determine which button was pressed and direct the flow to the appropriate branch via a Switch node.

Example structure:

Row 1: [Confirm | callback_data: confirm]  [Cancel | callback_data: cancel]
Row 2: [More details | callback_data: details]

6. callbackQueryId

The identifier of the callback request — needed to respond to the pressing of an inline button.

Supports Mustache. If the field is left empty, the value is automatically taken from msg.payload.callback_query.id.

Example:

{{payload.callback_query.id}}

7. showAlert

Checkbox. Determines the type of notification when responding to a button press:

  • Off — a short toast pop-up is shown (disappears automatically).
  • On — a modal window with a notification is shown, which the user must close manually.

8. notificationText

The text of the notification that will appear in response to pressing the inline button.

The field is displayed in the form only when showAlert is enabled.
Supports Mustache.

Example:

Your choice has been accepted: {{payload.callback_query.data}}

Usage Examples

Example 1: Sending a message about a new order

Flow:

[events: order_created] ---> [telegram]

Node settings:

  • botToken: {{flow.telegramToken}}
  • chat_id: {{flow.adminChatId}}
  • text: New order №{{payload.order.id}} from {{payload.order.userName}}. Total: {{payload.order.totalPrice}} rubles.
  • parseMode: none

Result:
When a new order is created, the bot will send a notification to the admin chat.


Example 2: Message with confirmation buttons

Node settings:

  • chatId: {{payload.message.chat.id}}
  • text: Do you confirm the order?
  • replyMarkup:
    Row 1: [Yes, confirm | confirm]  [Cancel | cancel]

Result:
The user will receive a message with two buttons. Pressing a button will send callback_data to the webhook, where it can be processed by a Switch node.


Example 3: Response to button press with notification

Flow:

[http in] ---> [switch: callback_data == "confirm"] ---> [telegram: response with notification]

Node settings:

  • callbackQueryId: (leave empty — taken from msg.payload.callback_query.id)
  • showAlert: enabled
  • notificationText: Order confirmed!

Result:
A pop-up will be displayed to the user with the text "Order confirmed!", which must be closed manually.