Integrations

What is the "Integration" block?

The "Integration" block allows your bot to interact with third-party services—such as OpenAI, Google Sheets, and others—directly within the scenario flow. The bot sends a request, receives a response, and saves the result into variables.

Connecting a service

Before using the integration block, you need to create a connection to the service:

  1. Click the "Integrations" button in the builder's header.
  2. Select the desired service from the list.
  3. Enter the authorization details:
  • API Key — for OpenAI and other services requiring a key.
  • OAuth2 — for Google (authorization via Google account).
  • Service Account — for Google (service account JSON file).
  1. Click "Test" — the system will verify the connection.
  2. Save the connection.

A single connection can be used in multiple blocks across the same bot or different bots.

Configuring the integration block

  1. Add the "Integration" block to the desired node.
  2. Select the service (e.g., OpenAI).
  3. Select a connection from the list of created connections.
  4. Select an operation (e.g., "Send message").
  5. Fill in the operation parameters.
  6. Specify the result variable prefix (default is result).

After the block executes, the result will be available as {{result.field}}.

Transition on integration error

At the bottom of every integration block, there is an "Error transition" section.

If the integration fails (e.g., service unavailable, quota exceeded, invalid response), the bot will:

  1. Notify the bot owner about the issue (if notifications are enabled).
  2. Halt the execution of any remaining blocks in the current node. 3. Proceeds to the error node specified in the "Integration error" field.

If the "Integration error" field is left blank, the bot continues executing the scenario as usual (following the standard path after the node), which may lead to incorrect behavior.

Recommendations

  • Always specify an error node for integrations that are critical to the scenario (AI responses, TTS, database queries, etc.).
  • In the error node, you can send a user-friendly message such as: "Service temporarily unavailable; please try again later."
  • The "+ Create" button next to the field automatically creates a new node and links it to the integration block.
  • The connection to the error node is displayed on the diagram as a yellow arrow labeled "Integration error".

Important: If a single node contains multiple integration blocks, and the first one fails, the remaining blocks will not execute—the bot immediately proceeds to the error node.

Testing the block

The block editor features a "Test" button; it executes the operation using the current parameters and displays which variables will be set. This is useful for verifying requests before publishing.


OpenAI

Send Message (Chat)

Sends a request to ChatGPT and receives a text response.

Parameter Description
Model GPT-4o, GPT-4o mini, etc. — selected from your account
User message Request text; supports {{variables}}
System prompt Instructions for the model — role, style, constraints. Supports Markdown formatting and {{variables}}. The button opens the editor in full-screen mode
Temperature Degree of response randomness (0–2)
Max tokens Limit on response length
Variable Value
{{result.text}} Model response text
{{result.model}} Model used
{{result.tokens_used}} Tokens consumed

Remember dialogue

Allows saving the conversation history and passing it to each subsequent request to the model, creating a "memory" effect. The history is stored in the database.

Parameter Description
Memory duration (hours) Number of hours of inactivity after which the history is reset. 0 — no time limit
Max messages in history Number of recent messages to pass to the model with each request. Default: 100
Default dialogue name Name of a new dialogue before an automatic one is generated. Default: Main
Generate dialogue names If enabled, upon creating a new dialogue, the bot sends a separate background request to the AI ​​to formulate a short title (up to 5 words) based on the user's first message. The title is saved automatically without delaying the response
Encrypt data If enabled, user messages and AI responses are stored in the database in encrypted form (AES-256-CBC). Data is automatically decrypted upon each interaction with the AI. Existing unencrypted dialogues remain readable
Dialogue ID Load a specific dialogue by its ID. Supports {{variables}} (e.g., "{{dialog_id}}"). If not specified, the last active dialogue is used, or a new one is created
Dialogue ID variable Name of the variable where the current dialogue ID will be stored. Use it in other blocks to explicitly reference the required dialog
Display preliminary message AI can take a long time to generate a response. When enabled, the bot immediately sends a short placeholder message to the user and edits it once the response is ready. This ensures the user feels the bot is responding without delay.

When "Display preliminary message" is enabled, two additional fields appear:

Parameter Description
Preliminary message Text or emoji for an instant user response (e.g., "⏳ Generating response...")
Variable name for message ID The name of the variable where the "message_id" of the sent preliminary message is stored. Defaults to message_id. Use this in a "Text" block with "Edit message" enabled.

Typical scenario using a preliminary message:

  1. "Integration" block → enable "Show preliminary message" → variable "message_id".
  2. AI response is saved to "{{result.text}}".
  3. Next "Text" block with "{{result.text}}" → in "Advanced" settings, enable "Edit message" → specify variable "{{message_id}}".
  4. The bot edits the preliminary message, replacing the placeholder with the AI ​​response.

Generate image

Creates an image based on a text description (DALL·E 3, GPT-image-1, etc.).

Parameter Description
Model dall-e-3, dall-e-2, gpt-image-1, etc.
Description Prompt text; supports {{variables}}
References Up to 5 links to source images. If at least one is specified, the model will automatically switch to gpt-image-1 if DALL·E was selected. Each field supports {{variables}}
Size Image resolution
File format PNG / JPEG / WebP — output file format (only for gpt-image-* models)
Image quality Auto / Low / Medium / High (only for gpt-image-* models)
Transparent background Generate an image with a transparent background (PNG/WebP only; for gpt-image-* models)
Quantity 1–10 images

Result variables:

Variable Value
{{result.url}} Image URL
{{result.revised_prompt}} Refined prompt (returned by models that support prompt reformulation)

Analyze image (Vision)

Ask a question about an image — the model answers based on the image content.

Parameter Description
Model GPT-4o, GPT-4 Turbo, and others with Vision support
Image URL Link to the image; supports {{variables}}
Question What exactly needs to be identified or described

Result: {{result.text}} — the model's text response.


Transcribe audio (Whisper)

Converts a voice message or audio file into text.

Parameter Description
file_id Telegram file_id of the audio/voice message; supports {{variables}}
Model whisper-1, gpt-4o-transcribe, etc.
Language ISO language code (leave blank for auto-detection)

Result: {{result.text}} — the transcribed text.

Typical scenario: the user sends a voice message → the "Data Input" block saves the file_id → the Whisper integration block transcribes it → the variable {{result.text}} becomes available in subsequent blocks.


Get Model List (OpenAI)

Queries the OpenAI API and saves the array of models available in your account to the specified variable.

No parameters are required—simply specify the variable where the result will be stored.

Result: {{result}} — an array of objects. Available properties for each element (where N is the index starting at 0):

Property Description
{{result.N.id}} Model identifier (e.g., gpt-4o)
{{result.N.object}} Object type (always "model")
{{result.N.created}} Creation date (Unix timestamp)
{{result.N.owned_by}} Model owner (e.g., openai)

Click Test in the editor to verify functionality and view the list of models. The data will be accessible via {{result.0.id}}, {{result.1.id}}, etc.


React to Message (OpenAI)

The AI ​​analyzes the user's message text and selects one emoji from an allowed list; the bot then applies this reaction to the specified message via the Telegram API.

Parameter Description
Message ID The ID of the message to react to. Default: {{USER_MESSAGE_ID}} (the incoming user message)
Reaction List A grid of the 73 available Telegram emoji reactions—select the ones the AI ​​can choose from
User Message Text to analyze; supports {{variables}}. Default: {{USER_MESSAGE}}
Instruction System prompt for the AI. A list of allowed emojis is automatically appended to the end of the instruction
Model OpenAI model (default: "gpt-4o-mini"). Located in advanced settings

Result variables (using the result prefix):

Variable Value
{{result.selected_emoji}} The selected reaction (empty if the AI ​​could not find a suitable one or returned null)

Behavior when no reaction is returned: If the AI ​​returns "null", an empty string, or an emoji not on the allowed list, no reaction is set, the "selected_emoji" variable remains an empty string, and scenario execution continues.


Anthropic Claude

Send Message

Sends a request to Claude and receives a text response. Supports the same conversation memory and pre-message capabilities as OpenAI Chat.

Parameter Description
Model Claude 4.6 Opus, Claude 4.6 Sonnet, Claude 4.5 Sonnet, and others — selected from your account
User message Request text; supports {{variables}}
System prompt Instructions for the model — role, style, constraints. Supports Markdown formatting and {{variables}}. The button opens the full-screen editor
Max tokens Response length limit

Result variables (using the result prefix):

Variable Value
{{result.text}} Model's response text
{{result.model}} Model used
{{result.tokens_used}} Tokens consumed

Remember Dialogue

Similar to the OpenAI → Remember Dialogue section, all settings (memory duration, maximum messages, dialogue name, title generation, dialogue ID, ID variable, initial message) function the same way for Claude.


Get Model List (Anthropic)

Queries the Anthropic API and saves the array of available Claude models to the specified variable.

No parameters are required—simply specify the variable where the result will be stored.

Result: {{result}} — an array of objects (sorted by created_at descending). Available properties for each element (where N is the index starting at 0):

Property Description
{{result.N.id}} Model identifier (e.g., claude-sonnet-4-6)
{{result.N.display_name}} Model display name
{{result.N.created_at}} Creation date (ISO 8601)
{{result.N.type}} Object type (always "model")
{{result.N.max_input_tokens}} Maximum context tokens
{{result.N.max_tokens}} Maximum response tokens

Click Test in the editor to verify functionality. After testing, autocomplete options such as {{result.0.id}}, {{result.1.id}}, etc., will become available in the editor.


React to Message (Claude)

Identical to the OpenAI → React to Message operation: The Claude AI analyzes the message text and selects a reaction from an allowed list, after which the bot applies it via the Telegram API.

Parameter Description
Message ID The ID of the message to react to. Default: {{USER_MESSAGE_ID}}
Reaction list Grid of 73 Telegram emoji reactions — select those allowed for the AI ​​
User message Text to analyze; supports {{variables}}
Instruction System prompt; the list of allowed emojis is added automatically
Model Claude model (default: "claude-sonnet-4-6"). Found in advanced settings

Result variable: {{result.selected_emoji}} — the selected emoji (empty if the AI ​​could not make a selection).


Google Sheets

Connection

Two authorization methods are supported:

  • OAuth2 — authorization via Google account. Create an OAuth2 client in the Google Cloud Console (type: Web application), enable the Google Sheets API and Google Drive API, and add the redirect URI.
  • Service account — service account JSON key. After creating the account, open the relevant spreadsheets and grant the service account email access (Editor role).

The connection type is selected upon creation and cannot be changed later. To switch authorization methods, create a new connection.


Get Row

Searches for a row in a Google Sheet based on a value in a specified column.

Parameter Description
Spreadsheet ID or URL Google Sheets identifier
Sheet Name Tab name
Search Column Column header to search by
Search Value Value to search for; supports {{variables}}

Result variable names correspond to the spreadsheet's column headers:


{{result.Email}} → value of the "Email" column in the found row {{result.Имя}} → value of the "Имя" (Name) column {{result.Телефон}} → value of the "Телефон" (Phone) column


If the row is not found, the variables will be empty.


Add Row

Adds a new row to the end of the sheet.

Parameter Description
Spreadsheet ID or URL Google Sheets identifier
Sheet Name Tab name
Columns and Values ​​ List of "Column → Value" pairs; supports {{variables}}

Does not return variables. Use this to save submissions, user responses, or logs.


Add or Update Record

Searches for a row based on a value in a specified column. If the row is found, it updates it. If not, it adds a new row to the end of the sheet.

Parameter Description
Spreadsheet ID or URL Google Sheets identifier
Sheet Name Tab name
Match Column Column header used to determine uniqueness
Search Value Supports {{variables}}
Data (Mapping) List of "Column → Value" pairs; supports {{variables}}

Does not return variables.


Update Record

Finds a row based on a value in a specified column and updates its data.

Parameter Description
Spreadsheet ID or URL Google Sheets identifier
Sheet Name Tab name
Search Column Column header used to find the row
Search Value Supports {{variables}}
Update Data List of "Column → New Value" pairs; supports {{variables}}

If the row is not found, no update is performed. Returns no variables.


Get Records

Returns all rows in the sheet that match the specified filters.

Parameter Description
Spreadsheet ID or URL Google Sheets identifier
Sheet Name Tab name
Filters List of "Column = Value" conditions; returns all rows if no filters are set
Filter Combination AND — all conditions; OR — at least one
Return first matching row (optional) If enabled, returns only the first row found

Result when "Return first row" is enabled (same as "Get Row"):

""" {{result.ColumnName}} → column value in the found row """

Result when "Return first row" is disabled:

Variable Value
{{result}} JSON array of all found rows
{{result.count}} Number of found rows

Clear Sheet

Clears cell contents without deleting the sheet itself.

Parameter Description
Spreadsheet ID or URL Google Sheets identifier
Sheet Name Tab name
What to clear Entire sheet / Specific rows / Specific columns / Specific range
Start row (optional) For "Specific rows" mode
Number of rows (optional) For "Specific rows" mode
Start column (optional) For "Specific columns" mode (e.g., A)
Number of columns (optional) For "Specific columns" mode
Range (optional) For "Specific range" mode (e.g., A2:C10)

Does not return any variables.


Delete Rows or Columns

Deletes the specified rows or columns and shifts the remaining ones.

Parameter Description
Spreadsheet ID or URL Google Sheets identifier
Sheet Name Tab name
What to delete Rows or Columns
Start Number Number of the first row/column (1-based index); supports {{variables}}
Count Number of rows/columns to delete; supports {{variables}}

Does not return any variables.


Create Sheet

Adds a new tab to an existing spreadsheet.

Parameter Description
Spreadsheet ID or URL Google Sheets identifier
New Sheet Name Tab name; supports {{variables}}

Does not return any variables.


Delete Sheet

Deletes a tab from the spreadsheet along with all its data.

Parameter Description
Spreadsheet ID or URL Google Sheets identifier
Sheet Name Name of the tab to delete

Does not return any variables.


Google Drive

Manage Google Drive files, folders, and shared drives directly from the bot.

Connection

Two authorization methods are supported:

  • OAuth2 — Authorization via a Google account. Create an OAuth2 client in the Google Cloud Console (type: Web application), enable the Google Drive API, and add the redirect URI shown when creating the connection.
  • Service Account — Service account JSON key. After creating the account, grant its email address access to the required Google Drive folders or files.

The connection type is selected upon creation and cannot be changed later. To change the authentication method, create a new connection.


File Actions

Copy File

Parameter Description
File Select from the list or specify the ID
New Name Name of the copy; leave blank to keep the original name. Supports {{variables}}
Destination Folder (optional) Folder for the copy; if not specified, the copy is created in the same folder

Result variables (using the result prefix):

Variable Value
{{result.file_id}} ID of the created copy
{{result.name}} Name of the copy
{{result.webViewLink}} Link to the file in Google Drive

Create File from Text

Creates a text file from the content of a variable.

Parameter Description
File Name Supports {{variables}}
Content File content; supports {{variables}}
File Type Text (.txt), CSV, HTML, JSON
Folder (optional) Folder where the file will be saved

Result variables are the same as for "Copy File" (file_id, name, webViewLink).


Delete File

Parameter Description
File Select from the list or specify the ID

Returns no variables.


Download File

Downloads a file from Google Drive and saves it for further use.

Parameter Description
File Select from the list or specify the ID
Export format (optional) For Google Docs/Sheets: PDF, DOCX, XLSX, TXT, CSV. Leave as "Auto" for standard files

Result variables:

Variable Value
{{result.file_url}} URL of the downloaded file
{{result.name}} File name
{{result.mime_type}} MIME type
{{result.size}} Size in bytes

Move File

Parameter Description
File File to move
Destination folder Folder to move the file to

Result variables: {{result.file_id}}, {{result.name}}.


Share File

Grants access to the file to a user, group, domain, or everyone.

Parameter Description
File File to share
Role Viewer / Commenter / Editor
Type User / Group / Domain / Anyone
Email address For "User" and "Group" types. Supports {{variables}}
Send notification Send an email notification to the recipient

Result variables: {{result.permission_id}}, {{result.role}}, {{result.type}}.


Update File

Parameter Description
File File to update
New name Supports {{variables}}

Upload File

Uploads a file from the specified URL to Google Drive.

Parameter Description
File URL Link to the file; supports {{variables}}. For Telegram files, use the file_url from the "Data Input" block variables
File Name Automatically determined from the URL if not specified. Supports {{variables}}
Folder (optional) Destination folder
Shared Drive ID (optional) Upload to a Shared Drive. Supports {{variables}}

If the URL starts with a local Telegram Bot API address, the file is read directly from the server without an HTTP download.

Result variables: {{result.file_id}}, {{result.name}}, {{result.webViewLink}}, {{result.mimeType}}.


Search Files and Folders

Find Files and Folders

Searches Google Drive using Drive Query Language syntax.

Parameter Description
Search Query Example: "name contains 'report'" or "mimeType = 'application/pdf'". Supports {{variables}}
Max Results (optional) Up to 1000; default is 50
Shared Drive ID (optional) Limit search to a specific Shared Drive. Supports {{variables}}

Result variables:

Variable Value
{{result.files}} Array of files (id, name, mimeType, size, webViewLink)
{{result.count}} Number of items found

Folder Actions

Create Folder

Parameter Description
Folder Name Supports {{variables}}
Shared drive ID (optional) Create in a shared drive

Result variables: {{result.folder_id}}, {{result.name}}, {{result.webViewLink}}.


Cloudflare R2

Cloudflare R2 is S3-compatible object storage. It is suitable for storing files accessible via direct URLs.

Connection

  1. Open the Cloudflare DashboardR2 Object Storage → your bucket → Settings tab.
  2. Locate the S3 API field—it looks like "https://<account_id>.r2.cloudflarestorage.com/". The "<account_id>" part is your Account ID.
  3. Go to R2 → Manage R2 API TokensCreate API Token.
  4. Select Object Read & Write permissions (or restrict access to a specific bucket) and save.
  5. Copy the Access Key ID and Secret Access Key.

Paste the JSON into the connection field:

"""json { "account_id": "abc123...", "access_key_id": "...", "secret_access_key": "...", "bucket_name": "my-bucket", "public_url": "https://pub-xxx.r2.dev" } """

"public_url" — an optional field. Required to obtain direct links to files after uploading. Where to get it:

  • Public Development URL (for testing): Bucket Settings → Public Development URL section → click Enable. Once enabled, copy the generated URL (e.g., "https://pub-xxx.r2.dev").
  • Custom domain (for production): Settings → Custom Domains → Add.

If neither is configured, leave the field blank; "{{result.public_url}}" will be an empty string.

Upload file

Uploads a file to R2 via URL or from the bot's internal storage.

Parameter Description
File URL Direct link to the file. Supports {{variables}}, including "{{result.file_url}}" from previous blocks
Object key Path and filename within the bucket, e.g., "uploads/{{user.id}}/photo.jpg". Supports {{variables}}
MIME type (optional) If not specified, it is determined automatically based on the file content

Result variables:

Variable Value
{{result.key}} Key of the saved object in the bucket
{{result.public_url}} Direct download link (if "public_url" is set in the connection)
{{result.size}} File size in bytes

Delete file

Parameter Description
Object key Path to the file in the bucket. Supports {{variables}}

The operation does not return a result.

List files

Returns a list of objects in the bucket.

Parameter Description
Prefix (folder) Filters files by the beginning of the key, e.g., "uploads/photos/". Optional
Max files From 1 to 1000. Default is 100

Result variables:

Variable Value
{{result.files}} Array of objects: "key", "size", "last_modified", "public_url"
{{result.count}} Number of files found

Copy file

Copies an object within the bucket without re-uploading it.

Parameter Description
Source key Key of the source file in the bucket
Destination key Key of the new copy file

Result variables: {{result.key}}, {{result.public_url}}.

File information

Returns object metadata (without downloading the content).

Parameter Description
Object key Path to the file in the bucket

Result variables:

Variable Value
{{result.exists}} "1" — file exists, "0" — not found
{{result.size}} Size in bytes
{{result.content_type}} File MIME type
{{result.last_modified}} Last modification date

Delete folder

Parameter Description
Folder Folder to delete (deleted along with all its contents)

Returns no variables.


Share folder

Similar to "Share file" — same parameters and result, but for a folder.


Shared drive actions

Create shared drive

Parameter Description
Drive name Supports {{variables}}

Result variables: {{result.drive_id}}, {{result.name}}.


Delete shared drive

Parameter Description
Shared drive ID Supports {{variables}}

Returns no variables.


Get shared drive

Parameter Description
Shared drive ID Supports {{variables}}

Result variables: {{result.drive_id}}, {{result.name}}, {{result.created_time}}.


List Shared Drives

Parameter Description
Max results (optional) Up to 100; default is 50

Result variables: {{result.drives}} — array of drives · {{result.count}} — count.


Update Shared Drive

Parameter Description
Shared drive ID Supports {{variables}}
New name Supports {{variables}}

Result variables: {{result.drive_id}}, {{result.name}}.


Google Calendar

Manage Google Calendar events: create, retrieve, update, delete, and check availability.

Connection

Two authorization methods are supported:

  • OAuth2 — authorization via a Google account. You must create an OAuth2 client in the Google Cloud Console (type: Web application), enable the Google Calendar API, and add a redirect URI.
  • Service Account — service account JSON key. After creating the account, share the required calendars with the service account's email address in the Calendar settings.

Create Event

Parameter Description
Calendar Select from the list or specify the ID (primary — main calendar)
Event title Title text; supports {{variables}}
All-day event Yes — all-day event (date format YYYY-MM-DD); No — with time (RFC3339)
Start Start date and time
End End date and time

Additional parameters ("Advanced" section):

Parameter Description
Description Event description text
Location Address or venue name
Participants Comma-separated email addresses
Event color One of the 11 Google Calendar colors
Visibility Default / Public / Private / Confidential
Event status Confirmed / Tentative / Cancelled
Guests can invite others Yes / No
Guests can modify the event Yes / No
Guests can see other participants Yes / No
Send notifications To all / External only / To no one
Use default reminders Yes / No
Event ID Custom identifier (auto-generated if not specified)

Result variables (using the result prefix):

Variable Value
{{result.id}} ID of the created event
{{result.summary}} Event title
{{result.status}} Status (confirmed, tentative)
{{result.htmlLink}} Link to the event in Google Calendar
{{result.start}} Start time
{{result.end}} End time

Delete event

Parameter Description
Calendar Calendar ID
Event ID Event identifier ({{result.id}} from the previous operation)
Send notifications (advanced) All / External only / None

Returns no variables.


Get event

Parameter Description
Calendar Calendar ID
Event ID Event identifier
Time zone (advanced) IANA time zone, e.g., Europe/Moscow
Max. attendees (advanced) Limit on the number of attendees in the response

Result variables (with the result prefix):

Variable Value
{{result.id}} Event ID
{{result.summary}} Title
{{result.status}} Status
{{result.description}} Description
{{result.location}} Location
{{result.start}} Start
{{result.end}} End
{{result.htmlLink}} Link
{{result.creator}} Creator's email
{{result.organizer}} Organizer's email

Get events

Parameter Description
Calendar Calendar ID
Range start (advanced) timeMin — RFC3339
Range end (advanced) timeMax — RFC3339
Text search (advanced) Search by title and description
Max. results (advanced) Default 250, maximum 2500
Sorting (advanced) By start time / By modification date
Expand recurring events (advanced) Required for sorting by startTime
Show deleted events (advanced)

Result variables:

Variable Value
{{result.events}} Array of events (each is an object with id, summary, start, end, etc.)
{{result.count}} Number of events found

Use {{result.count}} in the "Condition" block to check for the presence of events.


Update Event

Required parameters: Calendar and Event ID. All other fields (title, time, description, etc.) are optional—only the specified fields are updated.

Use the "Advanced" parameters—all the same fields available when creating an event are accessible there.

Result variables — the same as for "Create Event" (id, summary, status, htmlLink, start, end).


Calendar Availability

Checks if the specified time range is free in the calendar (uses the Google Calendar FreeBusy API).

Parameter Description
Calendar Calendar ID
Range start RFC3339 date-time for the start of the period to check
Range end RFC3339 date-time for the end of the period to check
Time zone (advanced) IANA timezone

Result variables:

Variable Value
{{result.is_available}} true if the period is free, false if there are busy slots
{{result.busy_periods}} Array of busy intervals [{ "start": "...", "end": "..." }]

Editing a message in the "Text" block

The "Edit message" option is available in the "Text" block under the "Advanced" section.

When enabled, instead of sending a new message, the bot edits an existing one—replacing its text with the content of the block.

Parameter Description
Edit message Enable edit mode instead of sending
Message ID ID of the message to edit. Specify a number or insert a variable, e.g., "{{message_id}}"
  1. "Integration" block (OpenAI / Claude) → enable "Output preliminary message" → set an ID variable, e.g., "message_id".
  2. While the AI ​​generates the response, the user sees a placeholder.
  3. Next, a "Text" block containing the response text "{{result.text}}" → "Advanced""Edit message" → "{{message_id}}".
  4. The bot edits the preliminary message: the placeholder is replaced by the final response.

If the variable is empty or the specified ID does not exist, the block will send the message as standard text.


ElevenLabs

ElevenLabs is an AI-powered voice platform offering high-quality text-to-speech, speech recognition, voice changing, voice cloning, and sound effect generation.

Connection

  1. Sign up at elevenlabs.io.
  2. Go to Settings → API Keys → click Create API Key.
  3. Copy the generated key and paste it into the connection field.
  4. Click "Check" — the system will verify API access.

The ElevenLabs free plan has a monthly character limit. Voice cloning requires a paid "Creator" plan or higher.


Text-to-Speech

Converts text into an audio file using the selected voice.

Parameter Description
Voice Select a voice from your account list or specify a voice_id manually
Text Text to be spoken; supports {{variables}}

Additional parameters:

Parameter Description
Model Multilingual v2 (recommended for Russian), Flash v2.5, Turbo v2.5, v3
Audio format MP3 128 kbps (recommended), MP3 64 kbps, PCM, μ-law
Stability (0–1) Lower — more emotional and dynamic; higher — more monotonous but stable
Similarity boost (0–1) How closely the AI ​​mimics the original voice
Style exaggeration (0–1) Intensifies the speaking style; recommended to keep at 0 for natural sound
Speech rate 1.0 — normal; lower — slower, higher — faster
Speaker boost Makes the voice richer (requires slightly more resources)
Seed Fixes the generation process for reproducible results

Result variables (using the result prefix):

Variable Value
{{result.url}} Audio file URL — pass this to the "Audio" block
{{result.character_count}} Number of characters used
{{result.request_id}} Request ID

Important: The audio file link is available for 24 hours, after which it is automatically deleted. Typical scenario — announcer bot:

  1. "Integration" block → ElevenLabs → Text-to-Speech → select voice → text "{{news_text}}".
  2. Next block "Audio" → specify "{{result.url}}" in the "file_id or URL" field.
  3. The bot sends the synthesized news as an audio message.

Speech Recognition (Speech-to-Text)

Converts a voice message or audio file into text (Scribe series models).

Parameter Description
Audio file_id Telegram file_id of the voice/audio message; supports {{variables}}
Model Scribe v2 (recommended), Scribe v1
Language (ISO 639-1) E.g., ru, en, de. Leave blank for auto-detection

Additional parameters:

Parameter Description
Split by speaker Diarization: labels utterances as "Speaker 1", "Speaker 2"
Clean filler words Removes "um", "uh", "well", repetitions, and false starts

Result variables:

Variable Value
{{result.text}} Recognized text
{{result.language_code}} Detected language
{{result.transcription_id}} Transcription ID

Typical scenario — voice assistant:

  1. "Data Input" block → saves the voice message to the "voice_input" variable. 2. Integration block → Recognize speech → "file_id: {{voice_input}}" → "{{result.text}}".
  2. Integration block → OpenAI / ChatGPT → "{{result.text}}" → response "{{ai.text}}".
  3. Text block → "{{ai.text}}".

Voice Conversion (Speech-to-Speech)

Replaces the voice in an audio recording while preserving the original's intonation and emotions.

Parameter Description
Target voice The voice used to replace the original
Audio file_id Telegram file_id of the voice/audio message; supports {{variables}}

Additional parameters: Model, Audio format, Stability, Similarity boost.

Result variables: {{result.url}} — Audio file URL · {{result.request_id}}.

Important: The audio file link is available for 24 hours, after which it is automatically deleted.


Generate Sound Effect

Generates audio based on a text description: natural sounds, noise, technical sounds.

Parameter Description
Sound description Description text; supports {{variables}}
Duration (sec.) Desired sound duration (optional)

Additional parameters: Prompt influence (0–1), Audio format.

Result variables: {{result.url}} — Audio file URL.

Important: The audio file link is available for 24 hours, after which it is automatically deleted.


Music for Video (Video-to-Music)

Generates a musical soundtrack for a video file—automatically matching the tempo, mood, and instrumentation.

Parameter Description
Video file_id Telegram file_id of the video message; supports {{variables}}
Music description Optional text-based style direction; supports {{variables}}

Additional parameters: Audio format. Result variables: {{result.url}} — URL of the audio file containing the music.

Important: The link to the audio file is available for 24 hours, after which it is automatically deleted.


Clone Voice (Instant Voice Cloning)

Creates a digital copy of a voice based on a short audio recording (ranging from a few seconds to a minute). The cloned voice is saved to your ElevenLabs account and can be used in the "Text-to-Speech" operation.

Parameter Description
Voice name Name of the new voice in the ElevenLabs account; supports {{variables}}
Audio file_id Telegram file_id of the recording containing the target voice; supports {{variables}}

Additional parameters: Voice description, Remove background noise.

Result variables:

Variable Value
{{result.voice_id}} Cloned voice ID — use this in the "Text-to-Speech" operation
{{result.voice_name}} Voice name

Typical scenario — a bot's personal voice:

  1. "Input Data" block → user sends a voice message → "voice_sample".
  2. "Integration" block → Clone Voice → "name: My Voice", "file_id: {{voice_sample}}" → "{{result.voice_id}}".
  3. Save "{{result.voice_id}}" to the database.
  4. In subsequent scenarios: "Integration" block → Text-to-Speech → "voice_id: {{saved_voice_id}}".

Voice cloning requires a paid ElevenLabs Creator plan or higher.


Tips for working with integrations

  • Save integration results into variables with clear names, such as ai_answer or sheet_row.
  • Use a "Condition" block after the integration to verify whether the operation successfully retrieved the required data.
  • Test the block directly within the editor using the "Test" button; this saves time during development.
  • When using AI conversation memory, enable "Generate conversation titles"; this makes it easier to navigate the chat history in future versions of the dashboard.
  • For complex scenarios involving multiple AI blocks, use the "Conversation ID variable" so that each block explicitly interacts with the correct conversation, rather than defaulting to the "last" one.
  • If the bot handles sensitive user data, enable "Encrypt data" in the conversation memory settings; messages will be stored in the database in encrypted form.

Supabase

Supabase is an open-source alternative to Firebase built on PostgreSQL. The integration allows you to perform CRUD operations on tables via the Supabase REST API (PostgREST) ​​directly from the bot scenario.

Connection

  1. Open your project settings: supabase.com/dashboard → your project → Settings → API.
  2. Copy the Project URL from the Project URL section.
  3. Copy the service_role key (secret) from the Project API keys section.
  4. Fill in the two fields in the connection dialog:
Field Value
Project URL "https://xxxx.supabase.co"
Service Role Key "eyJ..." (secret key)
  1. Click "Check connection"; the system will send an API request to verify the data.
  2. Save the connection.

Important: Use the "service_role" key (secret), not the "anon" key. This allows bypassing Row Level Security and interacting with data while ignoring access policies. Keep the key secure.


Create Record

Inserts a new row into the table.

Parameter Description
Table Database table name; supports {{variables}}
Data List of "Column → Value" pairs; supports {{variables}}

Result variables (using the result prefix):

Variable Value
{{result.id}} ID of the created record (and other fields returned by the database)
{{result.ColumnName}} Value of any returned column

Delete Record

Deletes rows that match the specified conditions.

Parameter Description
Table Table name; supports {{variables}}
Select Conditions Row selection conditions (field, operator, value); supports {{variables}}
Must Match (optional) All — all conditions (AND); Any — at least one (OR)

Result variables:

Variable Value
{{result}} Array of deleted records
{{result.count}} Number of deleted records

Get Record

Retrieves the first row that meets the specified conditions.

Parameter Description
Table Table name; supports {{variables}}
Select Conditions Search conditions; if no conditions are provided, the first row is returned

Result variables:

Variable Value
{{result.id}} ID of the found record
{{result.ColumnName}} Value of any column in the found row

If no record is found, the variables are not set.


Get List of Records

Returns an array of rows matching the filters.

Parameter Description
Table Table name; supports {{variables}}
Return All If enabled, returns all rows (ignores Limit)
Limit (optional) Maximum number of records. Default is 50; supports {{variables}}
Filters Selection conditions (field, operator, value); supports {{variables}}
Must Match (optional) All — AND; Any — OR

Result variables:

Variable Value
{{result}} Array of records
{{result.count}} Number of records
{{result.0.ColumnName}} Column value in the first record

Use {{result}} with dynamic buttons (type "Dynamic Buttons") or the "Condition" block to check "{{result.count}}".


Update Record

Updates rows that meet the specified conditions.

Parameter Description
Table Table name; supports {{variables}}
Select Conditions Conditions for selecting rows to update; supports {{variables}}
Must Match All — AND; Any — OR
Fields to Send List of "Column → New Value" pairs; supports {{variables}}

Result variables:

Variable Value
{{result}} Array of updated records
{{result.count}} Number of updated records

Condition operators

The following operators are supported in blocks with conditions (Select Conditions / Filters):

Operator Description
"=" Equal to
"!=" Not equal to
"<" Less than
"<=" Less than or equal to
">" Greater than
">=" Greater than or equal to
"like" Pattern match ("%text%")
"ilike" Same as above, case-insensitive

Example: Saving a user lead

  1. "Data Input" block — name → "user_name", phone → "user_phone".
  2. "Integration" block → Supabase → Create Record:
  • Table: "leads"
  • Data: "name" → "{{user_name}}", "phone" → "{{user_phone}}", "chat_id" → "{{USER_ID}}"
  1. Variable "{{result.id}}" — ID of the created lead in Supabase.

Grok (xAI)

Grok is a powerful language model from xAI that offers capabilities for AI chat, image analysis, media generation, and audio processing.

API Base URL: "https://api.x.ai/v1" API Key: Starts with "xai-". Can be obtained at console.x.ai.


Connection Setup

In the integration settings, enter the API key in the format "xai-...". The "Check Connection" button sends a request to "/models" to verify the key's validity.


Operations

Send Message ("send_message")

Sends a text request to the Grok language model and returns the response.

Parameters:

Parameter Description
Model Model ID (default: "grok-3")
System Prompt Context/instructions for the model
User Message Request to the model
Temperature Response randomness (0–2)
Max Tokens Response length limit
Chat History Variable containing history to maintain context
JSON Mode Force response in JSON format
  • "{prefix}.text" — model response text
  • "{prefix}.model" — model used
  • "{prefix}.tokens_used" — number of tokens consumed
  • "{prefix}." — JSON fields (if JSON mode with schema is enabled)

Analyze image ("analyze_image")

Sends an image to the model for visual analysis (Vision API).

Parameters:

Parameter Description
Model ID of a Vision-capable model (e.g., "grok-4.20-reasoning")
Image URL or file_id Telegram "file_id" or direct link
Question What to find out about the image
Detail level "auto", "low", or "high"
Max tokens Response length limit

Result variables:

  • "{prefix}.text" — model response
  • "{prefix}.model" — model used
  • "{prefix}.tokens_used" — number of tokens consumed

Generate Image ("generate_image")

Generates an image based on a text description using the "grok-imagine-image" model.

Parameters:

Parameter Description
Prompt Image description
Aspect ratio "auto", "1:1", "16:9", "9:16", "4:3", "3:4", "3:2", "2:3", "2:1", "1:2"
Resolution "1k" (standard) or "2k" (high)
Count Number of images (1–10)

Result variables:

  • "{prefix}.url" — URL of the generated image (temporary)
  • "{prefix}.file_id" — Telegram "file_id" of the first image (stable)
  • "{prefix}.file_ids" — Array of Telegram "file_ids" for all images
  • "{prefix}.count" — Number of generated images
  • "{prefix}.{i}.file_id" — "file_id" of each image by index

Note: Image URLs returned by xAI are temporary. The block automatically uploads the images to Telegram and saves a stable "file_id".


React to Message ("react_to_message")

Analyzes a user message using AI and applies an appropriate emoji reaction in Telegram.

Parameters:

Parameter Description
Message ID Telegram "message_id" to react to
Allowed reactions List of emojis for the AI ​​to choose from
User message Text to analyze
Model Model ID (default: "grok-3-mini")
System prompt Additional instructions for selecting the reaction
  • "{prefix}.selected_emoji" — the selected emoji (or an empty string if the AI ​​decided not to react)

Generate video ("generate_video")

Generates a video clip based on a text description using the "grok-imagine-video" model.

⚠️ Important: Video generation takes 1–5 minutes (sometimes up to 10 minutes). The block performs asynchronous API polling every 5 seconds. Ensure your task queue supports long-running tasks.

Parameters:

Parameter Description
Prompt Video description
Duration Duration in seconds (1–15)
Aspect ratio "16:9", "9:16", "1:1"
Resolution "480p" or "720p"

Result variables:

  • "{prefix}.url" — URL of the finished video (temporary)
  • "{prefix}.file_id" — Telegram "file_id" of the video (stable)
  • "{prefix}.duration" — video duration in seconds
  • "{prefix}.model" — model used

Transcribe audio ("transcribe_audio")

Converts a voice message or audio file from Telegram into text (Speech-to-Text).

Parameters:

Parameter Description
Audio File ID Telegram "file_id" of the audio or voice message
Language ISO language code (optional — for improved accuracy)
Normalization Convert numbers and abbreviations into text format

Result variables:

  • "{prefix}.text" — transcribed text
  • "{prefix}.language" — detected language
  • "{prefix}.duration" — audio duration in seconds

Text-to-Speech ("text_to_speech")

Synthesizes speech from text and returns a temporary URL for the audio file.

Parameters:

Parameter Description
Text Text to be spoken
Voice One of: "eve" (energetic), "ara" (warm), "rex" (professional), "sal" (smooth), "leo" (authoritative)
Language ISO language code (or "auto" for auto-detection)
Format Audio format: "mp3", "wav", "pcm", "mulaw"

Result variables:

  • "{prefix}.url" — temporary URL of the audio file (valid for 24 hours)

The file is automatically deleted 24 hours after generation.


Get Model List ("list_models")

Retrieves the current list of available Grok models.

Result variables:

  • "{prefix}" — array of objects with "id" and "created" fields

Model Examples

Model Purpose
"grok-3" Flagship language model — text, chat
"grok-3-mini" Lightweight and fast — short tasks, reactions
"grok-4.20-reasoning" Vision + reasoning — image analysis
"grok-imagine-image" Image generation
"grok-imagine-video" Video generation

The current list is available via the "Get Model List" operation.