Переменные для вложений - Пример настройки
Примеры задач:
1) Есть набор слов которые могут быть отгаданы. Каждому слову соответствует отдельная картинка. Пользователь отправляет одно или несколько слов и должен получить только картинки тех, слов которые написал в сообщении.
2) Каждая картинка имеет свою цифру. Пользователь отправляет одну или несколько цифр. И должен получить соотвествующие картинки.
Теория
Для каждой из задач решение будет аналогичным. Нужно:
- Создать переменную отдельным блоком в действиях.
- По умолчанию поставить ей значение 0 или
- Для каждой картинки добавить отдельный блок (не путать с «пакетом») условий. В этих блоках:
- 1) название переменной вставить в название и в значение по умолчанию (если не подходят условия, переменная просто будет передана дальше).
- 2) В качестве значения «если подходят условия» указать что-то типа:
%attach%,photo26187274_456242616
(переменная и значение через запятую. Без пробелов иhttp:vk.com/
!). Итоговые значения удобно получать, вставляя в Автопилот исходные ссылки на вложения в действие «отправить сообщение». - Указать переменную вместо обычной ссылки на вложения.
- В действии сообщения в доп. опциях поставить галочку «Сообщение может быть пустым».
Практика
Практический пример реализации можно увидеть на видео в начале статьи. Ниже на скриншотах покажу главное.
1) Настройка «условий»:

2) Настройка действия:

Резюме
Во время выполнения команды сервис:
- Создает переменную.
- Добавляет в нее текст (ссылку на вложение), если подходят условия.
- Если не подходят условия просто не будет ее изменять.
- Обрабатывает ее окончательно, когда доходит до вложений сообщения.
- Если при этом не указан текст сообщения и не было добавлено ни одно вложение, то сообщение попросту не отправляется (благодаря галочке).
Минусы
Особенности обработки блока «переменная» вынуждают обрабатывать каждую переменную отдельно для каждого поля (значение по умолчанию + значение + сама переменная). Это занимает много времени и ресурсов и команда выполняется медленно. У моем случае 4-5 условий обрабатывались около 3 сек.
Стикеры
Чтобы аналогично отправить переменной стикер, в значение переменной записывайте не ссылку на картинку стикера, а его ID (числом).
Фишки
1) Итоговую переменную можно еще раз проверить, на наличие 0 и отправить «сообщение по умолчанию».

2) Чтобы скрасить пользователю ожидание можно в начало команды добавить блоки «Имитировать набор текста» и «Задержку на 10 сек». Именно с задержкой и именно на 10 сек. Без нее имитация набора может работать некорректно или некрасиво.
