Перейти к основному содержимому

Действие «Приём и пересылка медиа»

«Приём и пересылка медиа» — действие в сценарии действий, которое:

  1. Принимает медиафайлы от подписчика (фото, видео, аудио, документ);
  2. Пересылает их другим подписчикам — например, менеджеру в Telegram-группу;
  3. Сохраняет URL и метаданные файла в переменные, чтобы подключить к нейросети, HTTP-запросу или Google Диску.

Когда использовать​

  • Чек-фото для подтверждения оплаты с другого банка.
  • Документы клиента (паспорт, договор) для оформления.
  • Голосовые сообщения → транскрибация в текст.
  • Фото товара для оценки/возврата.
  • Видеообращение → пересылка в чат поддержки.
  • Файлы клиента для последующего хранения на Яндекс/Google Диске.

Часть 1. Как настроить приём​

Шаг 1. Добавьте действие​

В сценарии действий блока, который следует за блоком ожидания медиа (или в том же блоке, в сценарии действия после получения ответа), → «Добавить действие» → «Приём и пересылка медиа».

Шаг 2. Выберите тип медиа​

В поле «Принять»:

ТипЧто принимается
ФайлPDF, DOCX, XLSX, ZIP, TXT — любые документы
ИзображениеJPG, PNG, WebP, HEIC
АудиоMP3, OGG, WAV, голосовые сообщения
ВидеоMP4, MOV, формат «кружка»

Действие отфильтрует только указанный тип. Если подписчик прислал не то — переменные останутся пустыми.

Выбор типа медиа

Скриншот 1. Выбор типа принимаемого медиа.

Шаг 3. Добавьте блок-приёмник​

Перед блоком с этим действием — текст «Пришлите фото чека». Подписчик присылает медиа → бот ловит и заполняет переменные.


Часть 2. Системные переменные после приёма​

После выполнения действия в переменных появляются:

ПеременнаяСодержит
media_typeТип: file, image, audio, video
media_extРасширение файла: jpg, pdf, mp3, mp4
media_urlПрямая ссылка на файл (время жизни 1 минута!)
media_durationДлительность аудио в секундах
ismedia1 если файл пересылается, иначе 0
media_sent1 — файл получили все адресаты, 0 — кому-то не досталось, пусто — адресатов не было
media_notsentСколько адресатов файл не получили
media_errorКороткая причина последней неудачи
Ссылка живёт 1 минуту

#{media_url} — временная. Используйте её сразу: в нейросети, отправке на хранение, скачивании в HTTP. Через минуту ссылка перестанет работать.


Часть 3. Пересылка медиа адресатам​

Действие может одновременно с приёмом переслать медиа другим подписчикам.

В разделе «Адресаты» добавляйте пары:

ПолеЧто вписать
ClientIDID получателя. Шаблон текущего: [ClientID]. Можно переменную #{manager_id}
Messengertelegram / tg, max, whatsapp / wa, viber / vb, vk
BotIDID бота-отправителя. Шаблон текущего: [BotID]

Нажмите «Добавить адресата» → пара появится в списке. Можно настроить несколько адресатов — медиа уйдёт каждому.

Адресаты пересылки

Скриншот 2. Настройка адресатов.

Типовые получатели​

  • Менеджер — фиксированный ClientID в чате-канале продаж.
  • Чат-поддержки — ID группы Telegram, куда добавлен бот.
  • Партнёр / коллега — ClientID из глобальной переменной.
  • Сам клиент в другой канал — например, если бот работает и в TG, и в WhatsApp.

Часть 4. Типовые сценарии​

Сценарий 1. Распознавание чека через нейросеть​

Блок 1. «Пришлите фото чека»
Сценарий действий «До»:
- Приём медиа: image
(без адресатов — только приём)
Блок 2. «Обработка чека»
Условие перехода: #{media_type} = image
Сценарий действий «До»:
- Нейросеть → «Анализ изображения»
URL изображения: #{media_url}
Запрос: «Извлеки сумму и дату из чека в формате сумма|дата»
Сохранить в: ai_result
- JS код: разбить #{ai_result} по | → переменные #{sum}, #{date}
Сообщение: «Принят чек на #{sum} ₽ от #{date}»

Сценарий 2. Голосовое сообщение → текст → ответ​

Блок 1. «Запишите голосовое»
Сценарий действий «До»:
- Приём медиа: audio
Блок 2. «Обработка»
Сценарий действий «До»:
- Нейросеть → «Аудио в текст»
URL аудио: #{media_url}
Модель: whisper-1
Сохранить в: voice_text
- Нейросеть → Response
Запрос: #{voice_text}
Инструкции: «Ты менеджер магазина...»
Сохранить в: bot_answer
Сообщение: «Вы сказали: #{voice_text}
Ответ: #{bot_answer}»

Сценарий 3. Пересылка документа в чат менеджера​

Блок 1. «Загрузите паспорт»
Сценарий действий «До»:
- Приём медиа: file
Адресат: ClientID = -1001234567890, Messenger = tg, BotID = [BotID]
(это группа менеджеров)
Блок 2. «Подтверждение»
Сообщение: «Документ получен и передан менеджеру. Ответ в течение часа.»

Менеджер может и не получить документ: бот у него заблокирован, канал отключён. Чтобы заявка не потерялась молча, проверьте #{media_sent}:

Блок 1. «Загрузите паспорт»
Сценарий действий «До»:
- Приём медиа: file, адресат — чат менеджеров
- Переход: если #{media_sent} равно 0 → блок «Не дошло»
Блок «Не дошло»
Сообщение администратору: «Паспорт от [ClientID] не дошёл: #{media_error}»

Сценарий 4. Сохранение на Яндекс Диск​

Блок 1. «Пришлите файл»
Сценарий действий «До»:
- Приём медиа: file
Блок 2. «Загрузка»
Сценарий действий «До»:
- HTTP-запрос GET на #{media_url} → скачать в #{file_bytes}
- Яндекс Диск → загрузить → переменная public_url
- Список «Документы» addrow: ClientID, file_url = #{public_url}, type = #{media_ext}
Сообщение: «Файл сохранён: #{public_url}»

Сценарий 5. Фото товара для возврата​

Блок 1. «Сфотографируйте товар для возврата»
Сценарий действий «До»:
- Приём медиа: image
Адресат: менеджер по возвратам (ClientID)
Блок 2. «Описание проблемы»
Свободный ввод → #{return_reason}
Блок 3. Подтверждение
Сценарий действий «До»:
- Список «Возвраты» addrow: ClientID, photo_url = #{media_url},
reason = #{return_reason}, order_id = #{order_id}
Сообщение: «Заявка на возврат принята. Ответ за 24 часа.»

Часть 5. Архитектура​

Принцип 1. Сразу обрабатывайте media_url​

Ссылка живёт 1 минуту. Если нужно хранение — отправьте на Яндекс Диск, Google Диск или HTTP в своё хранилище в том же сценарии действий.

Принцип 2. Проверяйте тип​

Подписчик может прислать видео вместо фото. Условие #{media_type} = image в блоке защитит от ошибок.

Принцип 3. ClientID менеджера — в глобальной переменной​

g_manager_id, g_support_chat_id — храните там, меняйте без правок сценариев.

Принцип 4. Большие файлы — не пересылайте «синхронно»​

Видео 100+ МБ долго пересылаются. Если можно — сохраните URL, отправьте сообщение «Получили», а саму пересылку — после ответа клиенту.

Принцип 5. Логируйте каждое медиа​

Список «Медиа-история» с полями ClientID, type, url (хранение), created_at. Удобно для отчётов и спорных ситуаций.

Принцип 6. Соблюдайте 152-ФЗ​

Документы клиентов (паспорта, договоры) храните только с согласия. Минимизируйте срок хранения, удаляйте после обработки.


Часть 6. Что доступно по типам​

Типmedia_urlmedia_extmedia_duration
file✓✓ (например, pdf)—
image✓✓ (jpg)—
audio✓✓ (ogg, mp3)✓ (секунды)
video✓✓ (mp4)— (нет в Квесче)

Частые ошибки​

  • #{media_url} возвращает 404 — прошло больше минуты, ссылка устарела. Обрабатывайте сразу.
  • Тип не совпадает — клиент прислал не то, что вы выбрали в типе. Покажите ему пример или измените тип.
  • Адресат не получает медиа — неверный ClientID/Messenger/BotID. Проверьте, что бот добавлен в чат-получатель как админ (для групп).
  • Голосовое не транскрибируется — старый формат ogg/opus. Whisper его понимает, но gpt-4o-mini-transcribe может не понять.
  • Файл слишком большой — Telegram ограничивает 20 МБ для ботов в бесплатном плане.
  • #{media_duration} пустой — заполняется только для аудио, не для видео.

Что дальше​