Запись переменной
- Простая запись переменной →
- Функции →
- Имя →
- Тип →
- Значение →
- Увеличить/уменьшить число на →
- Управление списками →
Используйте компонент Запись переменной, если вы заранее знаете значения переменных или если вам нужно вычислить, изменить или преобразовать переменные, полученные из других мест. Например, из Запросов, Развилок или Вводов от пользователя.
Функции
- Записывает значения в переменные без ожидания сообщения от пользователя бота.
- Позволяет создать сразу несколько переменных в одном компоненте.
- Записывает переменные с определенным типом данных.
- Добавляет созданную переменную в начало, конец или на известную позицию в списках
Простая запись переменной
Чтобы создать переменную, добавьте компонент Запись переменной на экран, укажите Имя, выберите один из Типов и укажите Значение, подходящее под выбранный тип.
После прохождения такого экрана, переменная с заданным в компоненте именем и значением запишется для пользователя, который прошел этот экран. Затем с этой переменной можно работать дальше, например, вывести в боте для пользователя или передать на внешний сервер.
С помощью Ввода от пользователя и Развилки, пользователь может самостоятельно определять Значение для переменной, у которой уже есть имя в настройках этих компонентов.
Имя
Оно может быть любым, но мы советуем использовать только латинские буквы, цифры и символ нижнего подчеркивания для разделения слов. Подробнее про подходящие имена переменных можно прочитать в статье.
Тип
Компонент поддерживает создание переменной из следующих типов:
- Строка — просто любой текст, эмодзи или пустая строка.
- Число — чтобы его можно было использовать в математических шаблонах.
- Логический — true или false (правда или ложь).
- Пустой объект — контейнер, чтобы объединить другие переменные (также называют словарем).
- Пустой список — список, чтобы в будущем его можно было наполнить данными из других переменных (также список называют массивом).
- NULL — пустое значение, обычно заглушка для данных, которые появятся в будущем.
- Объект из JSON — для записи переменных в массив или объект из формата JSON.
- Увеличить число на — прибавляет заданное число к существующему значению переменной.
- Уменьшить число на — вычитает заданное число из существующего значения переменной.
Про простые типы вроде строк, чисел, логических переменных и NULL подробно описано в статье про типы данных переменных.
Пустой объект
Это контейнер для будущих данных. После создания переменной в компоненте Запись переменной можно что-то добавить в этот объект, задав имя вложенной переменной через точку.
Например, если мы назовем переменную с пустым объектом my_object, то мы можем создать новую переменную my_object.inner_object и записать в нее что-то. inner_object станет вложенной в my_object переменной. Получить к ней доступ можно также, через точку:
{{my_object.inner_object}}
Тоже самое можно сделать в любом другом компоненте, который позволяет создавать новые переменные, например, в Вводе от пользователя или Запросе.
Также этот тип данных можно использовать для того, чтобы очистить заполненную переменную, в которой вы ожидаете объект.
Например, вы можете создать в боте анкету, ответы записывать в отдельный, выделенный объект, а чтобы дать пользователю возможность полностью сбросить эту анкету и пройти заново, вы записываете в переменную с данными из анкеты пустой объект.
Пустой список
Аналогичен пустому объекту, только создает список для будущего наполнения или использования с хелперами.
Чтобы записать что-то в созданный список, можно поступить также, как с объектами, только вместо имени вложенной переменной использовать индекс элемента, который нужно записать. Чтобы записать что-то в пустой список, можно использовать 0 — индекс первого элемента.
Допустим, мы создали переменную my_list с пустым списком и хотим записать в нее сообщение, которое пришлет нам пользователь. Мы можем добавить компонент Ввод от пользователя и в Имени переменной, куда записывать ввод, указать my_list.0. Тогда то, что напишет пользователь, попадет в первый элемент списка.
Если мы захотим сделать так, чтобы то, что присылает пользователь добавлялось всегда в конец списка, мы можем написать шаблон, который будет получать длину списка, и записывать по этому индексу. Индекс равный длине списка — это как раз индекс в конце списка. Запишем такой шаблон в Имя переменной в компоненте Ввод от пользователя:
my_list.{{my_list.length}}
Теперь все, что пишет пользователь будет добавляться в конец списка.
Также записать новый элемент в список можно через Управление списками в другой Записи переменной.
Объект из JSON
Этот тип данных позволяет вам записать в переменную любой допустимый JSON.
Он полезен, если вам нужно составить и записать какой-то сложный объект или список.
Подробнее про JSON мы рассказывали в статье JSON и типы данных в нем.
Значение
Значение переменной должно соответствовать выбранному типу. Т. е. если вы выбрали тип Число, то в значение можно записывать только числа, если выбрали Логический тип, то только true или false, а в типе Объект из JSON может быть только допустимый JSON-объект.
Почти для каждого типа в значении может быть собираемый шаблон.
Если в Значении находится шаблон, он будет собран во время выполнения компонента ботом и приведен к нужному типу.
Если приведение типа невозможно, например, вы пытаетесь записать эмодзи в число, то бот прекратит текущее выполнение с ошибкой и отменит изменения в переменных пользователя на момент последнего успешного сообщения.
Это свойство можно получить из шаблона.
Как использовать Тип данных «Увеличить (уменьшить) число на» для чисел из переменных и хелперов
Значение типа данных «Увеличить число» на и «Уменьшить число на» работает как с обычными числами, так и с переменными и хелперами.
Настройка Записи переменной с типом «Увеличить число на» для вывода переменной
1. Добавьте Запись переменной, в Значении укажите нужное вам число. К этому числу позже будет прибавляться другое число. Тип данных может быть «Строка» или «Число». Имя переменной может быть любым, в этом примере имя первой переменной UsNum
2. Добавьте еще одну Запись переменной с другим именем. В примере это имя — UsNum1. В Значении укажите число, которое вы будете прибавлять к первому числу. Тип данных такой же как в первом случае.
3. Добавьте третью Запись переменной. Скопируйте имя из первой Записи UsNum. Тип данных поменяйте на Увеличить число на, в Значении выведите вторую переменную {{UsNum1}}. Ранее в нее было записано число 20, это значит что 20 прибавится к числу из первой переменной.
4. Выведите результат в переменной: {{UsNum}}
Если вы повторили пример, то в бот придет результат сложения 50 и 20 = 70
Как складывать и умножать числа от пользователя
1. Добавьте на экран один за другим Сообщения и Ввод от пользователя. Так бот сможет записать числа от пользователя. В нашем примере пользователь должен прислать 4 числа, поэтому на экране 4 компонента Сообщение и 4 Ввода от пользователя.
2. Добавьте Перемотку и создайте еще один экран.
3. Добавьте Сообщение с выводом чисел, которые прислал пользователь:
1. {{chislo1}} 2. {{chislo2}} 3. {{chislo3}} 4. {{chislo4}}
4. Добавьте Запись переменной. Задайте Имя вашей переменной. В примере переменная называется summa. Тип данных оставьте без изменений. В Значение добавьте хелпер, который позволит сложить, а затем умножить числа пользователя друг на друга.
{{multiply (sum chislo1 chislo2) (sum chislo3 chislo4)}}
5. Если необходимо, чтобы пользователь увидел процесс и результат вычислений бота, то добавьте сообщение, где будет выводиться эта информация:
({{chislo1}} + {{chislo2}}) x ({{chislo3}} +{{chislo4}}) Произведение: {{summa}}
6. Создайте последний экран и добавьте на него Перемотку.
7. Добавьте Запись переменной с именем, что было в первой Переменной. В нашем примере это имя summa.
8. Выберите новый Тип данных: Увеличить число на
9. В Значение добавьте хелпер
{{multiply (sum chislo1 chislo2) (sum chislo3 chislo4)}}
Таким образом, к первому значение прибавится второе — результат вычислений хелпера.
10. Выведите результат для пользователя: {{summa}}
Управление списками
Свойства из секции Управление списками позволяет записывать переменную в ранее созданный или новый список.
Это может понадобиться для анкет, различных списков, корзин с товарами. Списки полезны в большом количестве ситуаций.
По умолчанию управление списками выключено, в этом случае переменная просто запишется в указанное вами Имя.
Если вы активируете любую из опций Управления списками, то свойство Имя переменной будет указывать на переменную со списком, которым вы хотите управлять. Т. е. поведение этого свойства немного меняется.
Создать новый и добавить в него
Ботмама создаст переменную, поместит туда новый список, первым элементом которого запишет значение переменной.
Имя переменной, в которую будет записан новый список, Ботмама возьмет из свойства Имя.
Добавить в конец
Ботмама попытается найти список в переменной из свойства Имя и записать значение новым элементом в конце списка.
Если переменную со списком найти не получилось (такой переменной нет или в ней не список), Ботмама прекратит текущее выполнение бота и отменит изменения в переменных текущего пользователя на момент последнего успешного сообщения.
Добавить в начало
Ведет себя аналогично Добавлению в конец списка, только добавляет в начало списка, а не в конец.
Добавить в конец или создать новый список и добавить в него
Ведет себя аналогично Добавлению в конец списка, только не останавливает бота, если список не найден в указанном имени переменной.
Вместо этого создает новый список и добавляет значение в него.
Добавить в начало или создать новый список и добавить в него
Ведет себя аналогично Добавлению в начало списка, только не останавливает бота, если список не найден в указанном имени переменной.
Вместо этого создает новый список и добавляет значение в него.
Записать в определенную позицию
Ботмама попытается найти список в переменной из свойства Имя и записать значение новым элементом в указанную позицию. Элемент, который уже находится в этой позиции, будет заменен.
Позиция в списке
Записывается в соответствующем свойстве.
Это свойство можно получить из шаблона.
Если переменную со списком найти не получилось (такой переменной нет или в ней не список), Ботмама прекратит текущее выполнение бота и отменит изменения в переменных текущего пользователя на момент последнего успешного сообщения.
Если позиция находится за пределами размеров списка, то Ботмама следует правилам:
- позиция больше длинны списка — вставить значение в конец списка;
- позиция меньше нуля — вставить значение в начало списка.
Добавить после определенной позиции
Ботмама попытается найти список в переменной из свойства Имя и записать значение новым элементом после указанной позиции. Элемент, который уже находится в этой позиции, изменен не будет, вместо этого будет вставлен новый.
Добавить перед определенной позицией
Ведет себя аналогично Добавлению после определенной позиции, только значение будет записано перед определенной позицией, а не после.