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

Параметры



В качестве условий вы можете указать любое выражение на 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

Условный (тернарный) оператор Javascipt является единственным оператором JavaScript, который использует три операнда. Оператор принимает одно из двух значений в зависимости от заданного условия. Синтаксис оператора:

condition ? val1 : val2

Например, в данном уроке о принятии имени клиента:

$name = $NAME ? $NAME.name : $isname

В данном условии мы присваиваем значение переменной $name с помощью оператора присвоения =.

Если у нас есть переменная $NAME, то в $name будет записано значение $NAME.name.

Иначе, в $name будет записано значение $isname.

Также, можно использовать условный оператор подобным образом:

- запрашиваем число, присваиваем переменной $age

- в условиях пишем:

$status = ($age >= 18) ? "взрослый" : "ребёнок"

Здесь мы присваиваем переменной $status значение с помощью оператора присвоения =.

Проверяем условие $age >= 18, то есть, число, которое записано в $age больше или равно 18. Если число, записанное в $age больше или равно 18, то будет true, тогда будет выполняться первое условие - в $status будет записано значение "взрослый".

Если число, записанное в $age НЕ больше или равно 18 (то есть, меньше 18), то в $status запишем "ребёнок".



Подробнее читайте здесь: https://developer.mozilla.org/ru/docs/Web/JavaScript/Guide/Expressions_and_Operators#Условный_(тернарный)_оператор

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

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

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

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



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


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