Как принять неопределенное количество файлов от пользователя
Запись файлов в переменную
Бывают случаи, когда необходимо принять от пользователя различные файлы, но их количество неизвестно заранее. Решением такой задачи может быть цикл забора файлов и записи их в одну переменную.
1. Сначала настроим Кнопки с подсказками с кнопкой «Далее», на которую пользователь нажмет, когда загрузит все изображения.
2. После нужно перевести пользователя компонентом Перемотка на экран «Развилка».
3. На экране «Развилка» настраиваем компонент Развилка.
В первой Цели развилки Тип данных оставляем Текст, в значении цели пишем Далее, переход на экран «Алерт».
Во второй Цели развилки Тип данных меняем на Файл, задаем имя переменной sos_file. В эту переменную будут записываться файлы, которые пользователь отправит боту.
Переход будет на экран «Цикл».
Цель без значения с типом данных Файл (Цель 2) записывает в переменную sos_file файл, который прислал пользователь. Для этого в настройках Цели 2 в поле Имя переменной в которую Развилка запишет значение, мы уже указали имя переменной sos_file.
И одновременно Цель 2 переводит на экран «Цикл», где эта же картинка уже в виде переменной перезаписывается в общую переменную sos_all_files и возвращает пользователя компонентом Перемотка на предыдущий экран.
На экране «Цикл» в значении записи переменной укажем переменные:
{{sos_all_files}}{{\n}}{{sos_file}}
При этом, если пользователь загружает еще одну картинку, то она снова записывается и добавляется в общую переменную с новой строки. Так происходит до того момента, пока пользователь не нажмет кнопку «Далее».
Когда пользователь нажимает кнопку «Далее», то он переходит к отправке общей переменной, куда записаны все ссылки на изображения, которые он отправил.
Откройте изображение в новой вкладке, чтобы его увеличить.
В бот @notification_from_bot придут ссылки на все файлы, которые отправил пользователь.
Запись файлов в список
Также файлы можно отправить списком. Пользователь при отправке может выбрать все файлы и прислать их одним сообщением.
1. Сначала настроим Кнопки с подсказками с кнопкой «Далее», на которую пользователь нажмет, когда загрузит все изображения.
2. После нужно перевести пользователя компонентом Перемотка на экран «Развилка».
3. На экране «Развилка» настраиваем компонент Развилка.
В первой Цели развилки Тип данных оставляем Текст, в значении цели пишем Далее, добавляем переход на экран «Алерт отправки файлов».
Во второй Цели развилки Тип данных меняем на Файл, разворачиваем настройки Цели развилки и задаем имя переменной new_file. В эту переменную будут записываться файлы, которые пользователь отправит боту.
Переход будет на экран «Запись файлов в массив».
Цель без значения с типом данных Файл (Цель 2) записывает в переменную new_file файл, который прислал пользователь. Для этого в настройках Цели 2 в поле Имя переменной в которую Развилка запишет значение, укажем имя переменной new_file.
И одновременно Цель 2 переводит на экран «Запись файлов в массив», где файл от пользователя должен записаться в конец массива sos_all_files, затем пользователь вернется на прошлый экран с Развилкой с помощью Перемотки.
4. Добавьте Запись переменной, где в Значении будет выводиться {{new_file}}, в настройках выберите пункт «Добавить в конец или создать новый список и добавить в него».
5. Добавьте Алерт, в тексте которого, все присланные файлы будут выводиться таким образом:
{{#each sos_all_files}} {{this}} {{/each}}
Файлы от пользователя будут записываться в список до тех пор, пока пользователь не нажмет кнопку Далее.
Когда пользователь нажимает кнопку «Далее», то он переходит к отправке всего списка целиком, куда записались все ссылки на все его изображения.