Регулярные выражения в SaleBot: полное руководство по настройке

Бот в SaleBot перестаёт реагировать на сообщения клиентов, хотя блок с регулярным выражением настроен — чаще всего причина в самом шаблоне: лишний пробел, неэкранированный символ или флаг регистра, который не учтён при проверке ввода. Регулярные выражения в этом конструкторе используются для проверки ответов пользователя: номера телефона, email, промокода, даты или любого произвольного текста, и именно ошибка в шаблоне ломает всю ветку сценария.

В этой статье разберём, где в SaleBot применяются регулярные выражения, как составить рабочий шаблон под типовые задачи и как протестировать схему до запуска бота в продакшен. Материал ориентирован на практику: готовые примеры, таблица метасимволов и разбор типичных сбоев.

Где в SaleBot используются регулярные выражения

В конструкторе SaleBot регулярные выражения чаще всего встречаются в блоках, где бот ожидает ответ от пользователя. Типовой сценарий — блок ввода данных, в котором ответ клиента сверяется с шаблоном: если текст совпадает, сценарий идёт по одной ветке, если нет — бот просит повторить ввод или переводит диалог на оператора.

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

  • 🔍 Валидация ввода — проверка телефона, email, ИНН, номера заказа.
  • 💬 Распознавание ключевых слов — реакция на слова в произвольном тексте.
  • ✂️ Извлечение данных — вытаскивание части строки в переменную (если функция предусмотрена вашей версией редактора).
  • 🚦 Ветвление сценария — выбор следующего блока по результату проверки.

Обратите внимание: точный набор блоков и название полей для ввода шаблона зависят от текущей версии редактора SaleBot. Перед настройкой сверьтесь с актуальной документацией сервиса — интерфейс конструктора периодически обновляется.

Базовый синтаксис: что нужно знать перед настройкой

Регулярное выражение — это строка-шаблон, описывающая допустимый формат текста. Вам не нужно становиться программистом: для большинства задач в чат-боте достаточно десятка базовых конструкций. Ниже — таблица метасимволов, которые покрывают типовые сценарии валидации.

КонструкцияЗначениеПример использования
\dЛюбая цифра\d{6} — код из 6 цифр
+Один и более повторов\d+ — любое число
{n,m}От n до m повторов\d{10,11} — 10–11 цифр
[abc]Любой символ из набора[дД]а — «Да» или «да»
|Логическое «или»да|согласен|ок

Отдельно стоит запомнить якоря: символ ^ означает начало строки, а $ — её конец. Шаблон ^\d{10}$ пропустит только строку ровно из десяти цифр, а без якорей то же выражение сработает и на фразу «мой номер 9151234567 звоните». Для валидации полей ввода якоря почти всегда нужны, для поиска ключевых слов — наоборот, мешают.

⚠️ Внимание: символы ., +, (, ), ? имеют служебное значение. Если нужно найти их как обычный текст (например, плюс в номере телефона), экранируйте их обратным слэшем: \+. Неэкранированный плюс в начале шаблона — одна из самых частых причин «нерабочего» выражения.

Готовые шаблоны для типовых задач бота

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

Проверка номера телефона. Российские номера клиенты вводят по-разному: с «8», с «+7», со скобками и пробелами. Универсальный вариант, допускающий основные форматы:

^(\+7|8)[\s\-]?\(?\d{3}\)?[\s\-]?\d{3}[\s\-]?\d{2}[\s\-]?\d{2}$

Проверка email. Упрощённый шаблон, отсекающий явно некорректный ввод:

^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$

Реакция на согласие. Для кнопочных и текстовых подтверждений удобен шаблон с перечислением вариантов: (?i)(да|согласен|ок|конечно). Префикс (?i) отключает учёт регистра — но убедитесь, что движок регулярных выражений, используемый в вашей связке с SaleBot, поддерживает этот флаг; если нет, перечислите варианты с большой и маленькой буквы вручную.

Пошаговая настройка проверки ввода в сценарии

Общий порядок подключения регулярного выражения к сценарию выглядит так. Сначала добавьте в цепочку блок, ожидающий ответ пользователя, и откройте его настройки. Найдите поле, отвечающее за проверку или условие перехода, — в зависимости от версии редактора оно может называться по-разному, поэтому ориентируйтесь на документацию к вашему тарифу и версии конструктора.

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

☑️ Проверка перед запуском блока с регулярным выражением

Выполнено: 0 / 5

После настройки прогоните сценарий в тестовом режиме от имени клиента. Введите корректное значение, заведомо неверное и «пограничное» — например, номер телефона без одной цифры. Все три ветки должны отработать предсказуемо.

📊 Для какой задачи вы чаще всего используете регулярные выражения в боте?
Проверка номера телефона
Проверка email
Распознавание ключевых слов
Пока только изучаю возможности

Тестирование шаблонов и типичные ошибки

Прежде чем вставлять выражение в SaleBot, проверьте его в любом онлайн-тестере регулярных выражений — таких сервисов много, и они показывают совпадения наглядно. Это отделяет ошибки самого шаблона от ошибок настройки блока: если в тестере выражение работает, а в боте нет, проблема в настройках сценария, а не в синтаксисе.

Самая коварная ошибка — невидимые символы: пробел или перенос строки, скопированный вместе с шаблоном из мессенджера или документа. Визуально поле выглядит чистым, но выражение перестаёт совпадать. Если «внезапно сломалось» то, что работало вчера, — в первую очередь очистите поле и введите шаблон заново вручную.

⚠️ Внимание: не усложняйте шаблон сверх необходимого. Слишком строгая проверка email или имени отсечёт реальных клиентов с нестандартными, но валидными данными — например, с дефисом в фамилии или редкой доменной зоной. Лучше пропустить сомнительный ввод и уточнить его позже, чем потерять заявку.
Почему бот не ловит слово, хотя оно есть в шаблоне

Частые причины: включено сравнение с учётом регистра, а клиент написал с заглавной буквы; в сообщении есть эмодзи или знаки препинания, не предусмотренные шаблоном; использованы якоря ^ и $, хотя нужен поиск подстроки внутри длинного текста. Проверьте выражение в тестере именно на том сообщении, которое прислал клиент.

Ограничения метода и когда регулярных выражений недостаточно

Регулярные выражения проверяют формат, но не смысл. Шаблон подтвердит, что строка похожа на номер телефона, но не что этот номер существует и принадлежит клиенту. Для проверки факта существования нужны дополнительные механизмы: код подтверждения по SMS, верификация через мессенджер или ручная проверка оператором.

Также шаблоны плохо справляются с пониманием свободной речи. Если клиент пишет «хочу вернуть товар, он сломался через день», регулярное выражение выцепит отдельные слова, но не оценит контекст. Для сложных диалогов комбинируйте шаблоны с кнопочным меню: чем меньше свободного ввода на критичных шагах, тем стабильнее сценарий.

  • ✅ Используйте регулярные выражения для форматов: телефон, email, код, дата.
  • 🔘 Заменяйте свободный ввод кнопками там, где вариантов ответа мало.
  • 👤 Переводите на оператора диалоги, где важен смысл, а не формат.

Часто задаваемые вопросы

Как проверить, что пользователь ввёл только цифры?

Используйте шаблон ^\d+$ — он пропустит строку, состоящую исключительно из цифр любой длины. Если нужна конкретная длина, укажите её в фигурных скобках, например ^\d{4}$ для четырёхзначного кода.

Регулярное выражение работает в тестере, но не в боте. Что делать?

Проверьте поле ввода шаблона на лишние пробелы и переносы строк — введите выражение заново вручную. Затем убедитесь, что проверка привязана к правильному блоку и что ветка обработки ответа настроена. Если проблема сохраняется, сверьтесь с документацией SaleBot: возможно, движок шаблонов не поддерживает какую-то из использованных конструкций.

Учитывается ли регистр букв при сравнении?

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

Можно ли одним шаблоном принимать номер и с «8», и с «+7»?

Да, для этого используется группа с альтернативой: ^(\+7|8) в начале выражения допускает оба префикса. Полный приведённый выше шаблон для телефона уже учитывает оба варианта, а также скобки, пробелы и дефисы между группами цифр.

Опасно ли менять регулярное выражение в работающем боте?

Изменение шаблона затрагивает только логику проверки ввода и не вредит данным, но может изменить поведение сценария для клиентов, которые проходят его прямо сейчас. Безопасный порядок: скопируйте старый шаблон в заметки, внесите правку, протестируйте сценарий в тестовом режиме и только потом отпускайте в работу.