Обработка файлов
Блок «Обработка файлов» позволяет получать информацию о файлах, присланных пользователем, работать с ними внутри сценария бота, а также конвертировать их в другой формат с помощью ffmpeg.
Как добавить блок
В редакторе команды нажмите «+ Добавить блок» → категория Bot → выберите Обработка файлов.
Действие «Получить ссылку на файл»
Действие получает прямую ссылку на скачивание файла через Telegram Bot API и записывает свойства файла в переменную.
Поля
| Поле | По умолчанию | Описание |
|---|---|---|
| Укажите file id | {{FILE_ID}} |
ID файла, присланного пользователем. По умолчанию используется системный макрос {{FILE_ID}}, в который автоматически записывается file_id последнего полученного от пользователя файла. |
| Записать в переменную | file_data |
Название переменной, в которую будут записаны свойства файла. |
| Скачать файл | выключено | Если включено — файл скачивается на сервер платформы, и в переменную записывается локальный URL. Необходимо для конвертации файла. |
Переменные результата
После выполнения действия доступны три переменные с точечной нотацией:
| Макрос | Значение |
|---|---|
{{file_data.url}} |
Прямая ссылка на скачивание файла |
{{file_data.type}} |
Тип файла: photo, video, audio или document |
{{file_data.size}} |
Размер файла в байтах |
Если вы задали другое имя переменной (например,
my_file), то макросы будут{{my_file.url}},{{my_file.type}},{{my_file.size}}.
Режим «Скачать файл»
Когда включена опция Скачать файл:
- Бот вызывает Telegram API
getFile, чтобы получить путь до файла - Файл скачивается и сохраняется на сервере платформы в папку
bot_files/{id_бота}/ - В
{{file_data.url}}записывается адрес с нашего сервера
Это полезно, когда:
- Нужно, чтобы ссылка была постоянной (ссылки Telegram действуют ограниченное время)
- Файл нужно конвертировать в другой формат
- Файл нужно встроить в сообщение или отправить через внешний сервис
⏱ Ссылка на скачанный файл действует 24 часа, после чего файл автоматически удаляется с сервера.
Конвертация файлов
Опция доступна только при включённом «Скачать файл».
Включите чекбокс «Конвертировать файл», чтобы автоматически конвертировать скачанный файл через ffmpeg.
Поддерживаемые форматы
| Группа | Форматы |
|---|---|
| Аудио | OGA (Telegram voice), MP3, M4A, WAV, AAC |
| Видео | MP4, MOV, AVI, WebM |
| Изображение | JPEG, PNG, WebP, GIF |
Для изображений дополнительно доступен виртуальный целевой формат Base64 (Data URL) — он кодирует картинку в строку и записывает её прямо в
{{var.url}}. Подробнее — в разделе «Конвертация изображения в Base64» ниже.
Матрица совместимости
| Из \ В | Аудио | Видео | Изображение |
|---|---|---|---|
| Аудио | ✅ | ❌ | ❌ |
| Видео | ✅ (извлечь аудиодорожку) | ✅ | ❌ |
| Изображение | ❌ | ❌ | ✅ |
Конвертация Видео → Аудио — это извлечение аудиодорожки из видеофайла (например, MP4 → MP3).
Выбор форматов
- Из формата — выберите исходный формат файла (используйте тот формат, в котором приходит файл от Telegram). Список целевых форматов обновляется автоматически в зависимости от выбранного источника.
- В формат — выберите целевой формат. Показывает только форматы, в которые можно конвертировать из исходного.
Прерывать сценарий при ошибках
Если опция включена — при ошибке конвертации бот остановится на этом шаге, а вы получите уведомление в Telegram. По умолчанию выключено: при ошибке бот продолжает сценарий, используя ссылку на исходный (не сконвертированный) файл.
В обоих случаях при ошибке вы получите уведомление от системы.
Дополнительные настройки конвертации
Нажмите ссылку «Дополнительные настройки» для доступа к расширенным параметрам. Все настройки необязательны — если не указаны, ffmpeg использует значения по умолчанию.
Аудио-выход
| Параметр | Описание |
|---|---|
| Битрейт | Скорость потока аудио: 64k, 96k, 128k (по умолчанию), 192k, 256k, 320k |
| Частота дискретизации | 8000, 16000, 22050, 44100, 48000 Гц. По умолчанию — исходная. |
| Каналы | Исходные / Моно / Стерео |
Видео-выход
| Параметр | Описание |
|---|---|
| Максимальное разрешение | Исходное / 640×360 / 1280×720 / 1920×1080 |
| FPS | Исходный / 24 / 30 / 60 кадров в секунду |
| Видео-кодек | Авто / H.264 (libx264) / H.265 (libx265) / VP9 (libvpx-vp9) |
| Качество (CRF) | От 0 (максимальное качество, большой файл) до 51 (минимальное). По умолчанию 23. |
Изображение-выход
| Параметр | Описание |
|---|---|
| Ширина (px) | Целевая ширина. Высота масштабируется пропорционально, если не указана. |
| Высота (px) | Целевая высота. Ширина масштабируется пропорционально, если не указана. |
| Качество сжатия (1–100) | Для JPEG и WebP: 100 = максимальное. Для PNG игнорируется. |
| Обрезка (WxH:X:Y) | Обрезать изображение. Формат: 640x480:0:0 — размер 640×480, начальная координата (0, 0). |
Хранение конвертированных файлов
- Сконвертированные файлы сохраняются в
bot_files/{id_бота}/с префиксомconv_в имени. - Файлы автоматически удаляются через 24 часа (очистка запускается каждый час).
- Исходный скачанный файл удаляется сразу после успешной конвертации.
Пример использования: голосовое → MP3
- Пользователь присылает голосовое сообщение боту
- Добавьте блок Обработка файлов → действие Получить ссылку на файл
- Поле file id:
{{FILE_ID}}, переменная:voice_data - Включите «Скачать файл» → включите «Конвертировать файл»
- Выберите: Из формата
OGA (Telegram voice)→ В форматMP3 - В следующем блоке Текст вставьте:
Ваш голосовой в MP3: {{voice_data.url}}
Системный макрос {{FILE_ID}}
{{FILE_ID}} — это системная переменная, которая автоматически заполняется при каждом новом сообщении от пользователя:
- Фото → ID наибольшего варианта
- Видео, аудио, документ, голосовое, видео-кружок, анимация (GIF), стикер → file_id этого медиафайла
Если пользователь прислал текстовое сообщение, {{FILE_ID}} не меняется (остаётся последним известным значением).
Действие «Конвертировать файл»
Автономное действие для конвертации уже скачанного файла. Принимает локальный URL файла (например, из действия «Получить ссылку на файл» с включённой опцией «Скачать файл»), конвертирует его через ffmpeg и записывает результат в переменную.
Важно: URL должен указывать на файл, хранящийся на сервере платформы. Внешние ссылки не поддерживаются — при передаче внешней ссылки бот выдаст ошибку.
Поля
| Поле | По умолчанию | Описание |
|---|---|---|
| Ссылка на файл | — | Локальный URL файла или переменная с URL. Должен содержать адрес сервера платформы. Например: {{file_data.url}} |
| Записать результат в переменную | converted_file |
Название переменной, куда будут записаны свойства сконвертированного файла. |
| Прерывать сценарий при ошибках | выключено | Если включено — при ошибке конвертации бот остановится и вы получите уведомление. Если выключено — бот продолжит сценарий без изменения переменной результата. |
| Из формата / В формат | mp3 → oga | Направление конвертации. Используйте те же форматы, что и в действии «Получить ссылку на файл». |
| Дополнительные настройки | — | Битрейт, частота, каналы, кодек и другие параметры ffmpeg. |
Переменные результата
После успешной конвертации доступны переменные (на примере converted_file):
| Макрос | Значение |
|---|---|
{{converted_file.url}} |
Ссылка на сконвертированный файл |
{{converted_file.type}} |
Тип файла: photo, video, audio, document |
{{converted_file.size}} |
Размер файла в байтах |
{{converted_file.ext}} |
Расширение файла (mp3, oga, jpg...) |
{{converted_file.fileName}} |
Имя файла с расширением |
⏱ Ссылка на сконвертированный файл действует 24 часа, после чего файл автоматически удаляется с сервера.
Особое поведение
- Совпадение форматов: если «Из формата» и «В формат» одинаковы — ffmpeg не вызывается, в переменную записывается оригинальный URL.
- Несовместимые форматы: если конвертация между указанными группами форматов невозможна (например, аудио → видео) — будет выдана ошибка.
- Совместимость форматов такая же, как описано в разделе «Конвертация файлов» выше.
Конвертация изображения в Base64 (Data URL)
В качестве цели конвертации для изображений доступен особый формат Base64 (Data URL). Вместо создания файла на сервере платформа кодирует исходное изображение в строку вида data:image/<тип>;base64,... и записывает её в {{var.url}}. Это удобно, когда картинку нужно встроить прямо в HTML — например, в HTML-блок страницы или сообщение с разметкой.
Поддерживаемые исходные форматы: jpg, png, webp, gif.
Лимит размера: 5 МБ. Если файл больше — конвертация завершится ошибкой (поведение зависит от чекбокса «Прерывать сценарий при ошибках»).
Что записывается в переменную результата:
| Макрос | Значение |
|---|---|
{{converted_file.url}} |
Полная строка data:image/<mime>;base64,... |
{{converted_file.type}} |
photo |
{{converted_file.ext}} |
base64 |
{{converted_file.size}} |
Размер исходного файла в байтах |
{{converted_file.fileName}} |
Имя исходного файла |
Пример использования в HTML:
<img src="{{converted_file.url}}" alt="preview">
При выборе Base64 раздел «Дополнительные настройки» (ширина/высота/качество/кроп) скрывается — он применим только к ffmpeg-конвертациям. Файл на диск не сохраняется, ссылка живёт ровно столько, сколько живёт значение переменной в состоянии диалога.
Типичная цепочка использования
- Блок «Обработка файлов» → «Получить ссылку на файл»:
file_id = {{FILE_ID}}, переменнаяvoice_data, включить «Скачать файл» (конвертацию не включать) - Блок «Обработка файлов» → «Конвертировать файл»: ссылка
{{voice_data.url}}, переменнаяmp3_data, Из форматаOGA (Telegram voice)→ В форматMP3 - В следующем блоке:
Ваш MP3: {{mp3_data.url}}
Это полезно, когда нужно применить несколько последовательных конвертаций к одному файлу или использовать URL, полученный из другого источника (например, из переменной базы данных).
