Условия перехода

Материал из SaleBot Help
Перейти к навигации Перейти к поиску
ПОСЛЕДНЯЯ ЗНАЧИМАЯ ПРАВКА
Участник: BotDev.One

Условие — причина запуска бота, перехода между определенными блоками.

Четыре типа сравнения условий

Типы сравнения условия

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

Например, если нужно создать блок на все возможные стартовые слова мессенджеров, вы можете указать следующее условие: старт;start;get started;начать

Во всех типах сравнения символ точка с запятой ; разделяет условия

Для распознавания условия необходимо определить тип сравнения (поле "Выбор соответствия").

Тип сравнения Соответствие Пример
Игнорируя ошибки и неточности Больше 70% привед;првед;превет;здравствуй
По наличию ключевых слов Вариативное (тар план |тариф) (перейт|подключ|менит|помен)
Полное совпадение 100% (без учета регистра) пРивеТ;здравствуйте
Регулярное выражение Вариативное ^((+7|7|8)+([0-9]){10})$

Игнорируя ошибки и неточности

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

Пример: Для условия привет сработают следующие слова: привед, првед, превет

При данном сравнении для строк длинной до 4 слов используются перестановки.

Пример: Для условия привет мой хороший человек сработают следующая фраза пользователя: хароший мой чилавек преет

По наличию ключевых слов

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

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

Пример: Для условия привет человек сработают следующая фраза пользователя: я хочу поприветствовать этого замечательного человека


При данном типе сравнения также используется поле "Строки, на которые не надо отвечать".

Это поле работает аналогично полю "Условие", только наоборот, если условие поля "Строки, на которые не надо отвечать" срабатывает, то общее условие не работает.

Приоритет, в этом случае, будет у поля "Строки, на которые не надо отвечать".

Вариативность

Дополнительное условие можно добавить также через точку с запятой, но что делать если нужно одно из нескольких вариантов слов?

Например, обработать одним условием фразы пользователя: У меня не работает интернет, У меня не работает компьютер, у меня сломался компьютер.

Очевидно, что перебор всех вариантов – путь в никуда. Для этого придуман синтаксис ИЛИ.

Чтобы указать один из нескольких равнозначных ключевиков, надо их все поместить в круглые скобки и разделить символом вертикальной черты |.

Пример. Условие 1. (тар план |тариф)

Во фразе должно быть: тар И план ИЛИ тариф


Пример. Условие 2. (тар план |тариф) (перейт|подключ|менит|помен)

Во фразе должно быть: тар И план ИЛИ тариф И ОДНОВРЕМЕННО перейт ИЛИ подключ ИЛИ менит ИЛИ помен

Cработает на вопросы: Здравствуйте, как подключить новый тариф. Как сменить тарифный план.


Несколько других примеров, они интуитивно понятные:

мен пароль (каб|лк)
(забыл|сброс|восста|вспомнить|принимает|подходит|не верный|не тот|не помн) парол
(не могу| не удается) (восстановить|изменить) пароль
логин в договоре;(потер|утеря|где лежит|не знаю|где| не найти|нет) догов
(приостанов|заблок|блок|откл) (услуг|интер|инет|списан); (спасан|спаст) ден; постав на паузу;уезжа
автоплат; оплат;заплатить;реккурентн плат;подключ плат


Полное совпадение

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

Сравнение происходит без учета регистра, то есть, если условие привет, а пользователь введет ПРИВЕТ, то условие сработает.

Регулярное выражение

Регулярные выражения - это условие, с помощью которого бот может проверять формат введенных данных (например, что человек ввел именно номер телефона, а не что-то иное).

При сборе данных пользователь часто вводит не то, что его просят ввести.

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

Проверка корректности ввода номера телефона
Проверка корректности ввода номера телефона

С зеленого блока, запрашивающего номер телефона, идет 2 соединения. Одно без условия, а второе с условием регулярное выражение российского номера телефона:

^((+7|7|8)+([0-9]){10})$

Соединение с условием, как раз добавляет его в заявку и сработает только тогда, когда встретится корректный номер телефона.

Второе соединение сработает во всех других случаях, так как у него ниже приоритет[1]. По второму соединению пользователю скажут, что он ввел некорректные данные и по переходу с таймером направят обратно вводить номер телефона.

Список полезных регулярных выражений

Применение Регулярное выражение
Ввод только цифр ^[1-9]+[0-9]*$
Номер телефона ^(\+)?((\d{2,3}) ?\d|\d)(([ -]?\d)|( ?(\d{2,3}) ?)){5,12}\d$
Номер телефона (Россия) ^((\+7|7|8)+([0-9]){10})$
Номер кредитки [0-9]{13,16}
Целые числа и числа с плавающей точкой (разделитель точка) \-?\d+(\.\d{0,})?
Фамилия + Имя или же ФИО полностью ^[а-яА-ЯёЁa-zA-Z]+ [а-яА-ЯёЁa-zA-Z]+ ?[а-яА-ЯёЁa-zA-Z]+$
Набор из букв и цифр (латиница) ^[a-zA-Z0-9]+$
Набор из букв и цифр (латиница + кириллица) ^[а-яА-ЯёЁa-zA-Z0-9]+$
Имя пользователя (с ограничением 2-20 символов, которыми могут быть буквы и цифры, первый символ обязательно буква) ^[a-zA-Z][a-zA-Z0-9-_\.]{1,20}$
Пароль (Строчные и прописные латинские буквы, цифры) ^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?!.*\s).*$
Пароль (Строчные и прописные латинские буквы, цифры, спецсимволы. Минимум 8 символов) (?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$
UPD. E-mail ^[-\w.]+@([A-z0-9][-A-z0-9]+\.)+[A-z]{2,4}$
Дата в формате YYYY-MM-DD [0-9]{4}-(0[1-9]|1[012])-(0[1-9]|1[0-9]|2[0-9]|3[01])
Дата в формате YYYY-MM-DD: UPD. Более строгая проверка (19|20)\d\d-((0[1-9]|1[012])-(0[1-9]|[12]\d)|(0[13-9]|1[012])-30|(0[13578]|1[02])-31)
Дата в формате DD/MM/YYYY (0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\d\d
Дата в формате DD.MM.YYYY (0?[1-9]|[12][0-9]|3[01]).(0?[1-9]|1[012]).((19|20)\d\d)
UPD. Время в формате HH:MM:SS ^([0-1]\d|2[0-3])(:[0-5]\d){2}$
Домен (например abcd.com) ^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,6}$
URL (например abcd.com) (https?):((//)|(\\\\))+[\w\d:#@%/;$()~_?\+-=\\\.&]*
UPD. URL на латинице. Если нужно распознавать и кириллические домены, необходимо изменить все «a-z0-9» на «а-яёa-z0-9» и добавить в список доменных зон «рф» ~^(?:(?:https?|ftp|telnet)://(?:[a-z0-9_-]{1,32}(?::[a-z0-9_-]{1,32})?@)?)?(?:(?:[a-z0-9-]{1,128}\.)+(?:ru|su|com|net|org|mil|edu|arpa|gov|biz|info|aero|inc|name|[a-z]{2})|(?!0)(?:(?!0[^.]|255)[0-9]{1,3}\.){3}(?!0|255)[0-9]{1,3})(?:/[a-z0-9.,_@%&?+=\~/-]*)?(?:#[^ '\"&]*)?$~i
IPv4 ((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)
IPv6 ((^|:)([0-9a-fA-F]{0,4})){1,8}$
UPD. Mac-адрес ([0-9a-fA-F]{2}([:-]|$)){6}$|([0-9a-fA-F]{4}([.]|$)){3}
UUID ^[0-9A-Fa-f]{8}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{12}$
Широта или долгота -?\d{1,3}\.\d+
ICQ ([1-9])+(?:-?\d){4,}

База регулярных выражений

Полезные ссылки

Сервис: https://regex101.com/ – Тестирование регулярных выражений

Видео: https://youtu.be/2ZMS4FPL5E8 – Ответы на свободные вопросы с использованием ключевых слов

Сноски

  1. Приоритет стрелок конструктора. Стрелки конструктора