Этот блок позволяет вам направить бота на определенный экран в зависимости от выполнения определенных условий.

Параметры



В качестве условий вы можете указать любое выражение на Javascript. Вы можете указать множество условий и указать для каждого из них переход на нужный экран. Таким образом вы можете программировать нелинейную логику диалога.

Например:
$score > 5


Else

После добавления условий на экран вы увидите специальное условие else в блоке условий. Оно выполняется, если ни одно из условий в блоке не истинно.

Переменные

Вы можете использовать переменные, полученные ботом на предыдущих экранах (или любые системные переменные Aimylogic).



В этом примере мы сперва узнаем у пользователя его возраст и сохраняем в переменную age. На следующем экране мы добавили блок Условия, в который добавили несколько условий, в которых мы сравниваем переменную age с определенными значениями. В зависимости от возраста пользователя мы выводим разные сообщения на следующем экране.

Javascript

Вы можете использовать любые операторы и функции Javascript при написании условий. Также вы можете использовать функции underscorejs.org для более сложных случаев, где нужны различные преобразования данных (объектов, массивов и так далее).

Примеры

Присвоение
Чтобы присвоить значение переменной используйте оператор =

Если вы присваиваете переменной текст, то поместите текст в кавычки.
Пример:
$choice = "купить"
Это условие присвоит переменной $choice значение купить.



Если вы хотите присвоить переменной число, то его помещать в кавычки не нужно.
Пример:
$age = 20


Присвоение нуля
Если вы присваиваете 0, (либо значение переменной, которую вы присваиваете другой переменной, может быть при каком-то условии равно нулю) то нужно связывать со следующим экраном и true, и else. Это связано с особенностями языка Javascript.

Выражение a = 1 по спецификации JS трактуется как true, а выражение a = 0 трактуется как false. Поэтому, если вы присваиваете 0, бот пойдёт по ветке else. Для корректного присвоения нуля связывайте и true, и else с одним и тем же нужным экраном.

$score = 0


То же, если у вас получается число, целая часть которого равна нулю:



То же самое относится к случаю, когда вы используете переменную, в которую помещается текст, введенный пользователем. Если вы предполагаете, что пользователь может ввести 0, то следуйте правилу о присвоении нуля.

Математические операции

В блоке условий вы можете совершать математические операции. Причем, в Javascript складывать можно не только числа, но и строки (текст). Например, здесь будет выведено "ab":



Сравнение

Вы можете использовать оператор === для сравнения.

$score === 5

будет отрабатывать, если $score равен пяти.


Оператор === также проверяет тип данных, в отличие от оператора ==, который приводит данные к одному типу. Подробнее читайте здесь.

Проверка двух условий сразу можно осуществлять с помощью операторов || или &&

Одно из условий верно:
$choice === "да" || $choice === "может быть"
Такое условие будет отрабатывать, если $choice равен или "да", или "может быть".

Так как нажатие кнопки равносильно текстовому вводу, после нажатия кнопки "да" значение "да" будет помещено в переменную $choice, затем будет выполнено условие.



Оба условия верны:

$kids >= 2 && $kids <= 4
будет отрабатывать, если $kids равно 2, 3 или 4. То есть, $kids больше или равно двум, и при этом меньше или равно 4.



Использование методов javascript

Вы также можете использовать различные методы языка Javascript для произведения математических вычислений в блоке условий.

Например, метод .toFixed() округляет число до нужного количество знаков после точки.

$okruglenie = $num.toFixed(2)
в этом случае метод .toFixed округлит число, находящееся в переменной $num до двух знаков после точки. После этого получившееся значение будет записано в переменную $okruglenie.



Если целая часть числа - ноль, то присвоение нужно производить, связывая и true, и else с нужным экраном:


Обратитесь к учебнику по Javascript, например, к урокам, подобному этому, чтобы узнать больше.
Была ли эта статья полезна?
отменить
Спасибо!