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