Условия

В этом разделе мы рассмотрим, как создавать условия и делать ветвления в Smartbot

Перед прочтением мы рекомендуем ознакомиться со статьей Цепочка диалога

Условия - важный элемент работы бота. Благодаря условиям вы можете разветвить логику выполнения бота. По условиям бот находит подходящий ответ или цепочку для запуска.

При создании любого вопроса или цепочки, нужно задать условие запуска:

Пример условия

Условие состоит из 3 элементов: ключ, тип сравнения, значение.

Для проверки условия бот берет значение ключа и сверяет его в соответствии с указанным типом сравнения. В примере выше ключом является последнее сообщение пользователя, оно сравнивается со словом "привет" типом сравнения "равно".

Группы условий

Все условия состоят из 3 групп: условия на сообщение, условия на переменные и сложные условия. Каждая из этих групп объединяется по И (должны быть выполнены все условия) или по ИЛИ (должно быть выполнено хотя бы одно условие). Например: сообщение равно "привет" ИЛИ сообщение равно "добрый день" ИЛИ сообщение равно "здравствуйте". В этом случае должно быть выполнено хотя бы одно из условий: или первое, или второе, или третье.

Чем больше уточняющих условий вы добавите, тем выше вероятность, что бот ответит на вопрос пользователя правильно и запустит нужную команду!

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

Обращаем ваше внимание, что такое условие бессмысленно, потому что никогда не сработает, так как сообщение не может быть одновременно и "привет", и "добрый день", и "здравствуйте" 😄 Но для примера мы переключили режим сравнения.

Условия на сообщения

Основное условие - это условие на сообщение. Такое условие проверяет последнее сообщение пользователя.

Сообщение можно проверить с помощью следующих типов сравнения:

Типы сравнения для сообщения

Рассмотрим некоторые из них.

Равно и не равно

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

Содержит и не содержит

Эти типы сравнения проверяют, что сообщение содержит заданные слова. Сообщение может содержать эти слова последовательно в любом месте сообщения.

Начинается и заканчивается на

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

Похоже на

Данное условие сравнивает тексты с помощью умного алгоритма, использующего машинное обучение. Данный режим лучше всего подходит для сравнения небольших фраз.

Например, если задать условие, что сообщение должно быть похоже на "адрес доставки", то бот будет реагировать на похожие фразы: 😱

Пример работы тип проверки "похоже на"

Условия на переменные

Условия на переменные существенно расширяют функционал условий! Например, вы можете проверять данные о пользователе или специальные переменные.

Чтобы добавить условие на переменные, нажмите "+ условие на переменную":

Группа условий на сообщение проверяется ВМЕСТЕ с группой условий на переменные. Таким образом, чтобы было выполнено общее условие, обе группы должны выполняться 🤓

В примере выше условие выполнится только если сообщение будет равно "привет" (или другие указанные варианты) И если пол пользователя = мужской.

В условиях на переменные можно указать свои переменные, созданные в разделе Пользовательские переменные и изменить их с помощью шага "установить переменные".

Сложные условия

Сложные условия пишутся на языке SmartQuery.

С их помощью можно, например, проверить наличие элемента в Массиве, или объединить несколько условий через И и ИЛИ, например:

Кнопка «Проверить код» выполняет указанный в поле ввода код и, в случае отсутствия ошибок, показывает значение полученного выражения.

Следует учитывать, что проверка кода выполняется от имени текущего пользователя (админа). То есть будут использоваться его локальные и специальные переменные. Значением переменной %сообщение% является строка «Test».

Также отметим, что при проверке синтаксиса, значения изменившихся переменных НЕ сохраняются.