Бот в 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, поддерживает этот флаг; если нет, перечислите варианты с большой и маленькой буквы вручную.
Пошаговая настройка проверки ввода в сценарии
Общий порядок подключения регулярного выражения к сценарию выглядит так. Сначала добавьте в цепочку блок, ожидающий ответ пользователя, и откройте его настройки. Найдите поле, отвечающее за проверку или условие перехода, — в зависимости от версии редактора оно может называться по-разному, поэтому ориентируйтесь на документацию к вашему тарифу и версии конструктора.
Вставьте шаблон в соответствующее поле и задайте две ветки развития: что бот делает при совпадении и что — при несовпадении. Для ветки ошибки полезно добавить счётчик попыток: после двух-трёх неудачных вводов разумно переводить диалог на живого оператора, а не зацикливать клиента на одном вопросе.
☑️ Проверка перед запуском блока с регулярным выражением
После настройки прогоните сценарий в тестовом режиме от имени клиента. Введите корректное значение, заведомо неверное и «пограничное» — например, номер телефона без одной цифры. Все три ветки должны отработать предсказуемо.
Тестирование шаблонов и типичные ошибки
Прежде чем вставлять выражение в SaleBot, проверьте его в любом онлайн-тестере регулярных выражений — таких сервисов много, и они показывают совпадения наглядно. Это отделяет ошибки самого шаблона от ошибок настройки блока: если в тестере выражение работает, а в боте нет, проблема в настройках сценария, а не в синтаксисе.
Самая коварная ошибка — невидимые символы: пробел или перенос строки, скопированный вместе с шаблоном из мессенджера или документа. Визуально поле выглядит чистым, но выражение перестаёт совпадать. Если «внезапно сломалось» то, что работало вчера, — в первую очередь очистите поле и введите шаблон заново вручную.
⚠️ Внимание: не усложняйте шаблон сверх необходимого. Слишком строгая проверка email или имени отсечёт реальных клиентов с нестандартными, но валидными данными — например, с дефисом в фамилии или редкой доменной зоной. Лучше пропустить сомнительный ввод и уточнить его позже, чем потерять заявку.
Почему бот не ловит слово, хотя оно есть в шаблоне
Частые причины: включено сравнение с учётом регистра, а клиент написал с заглавной буквы; в сообщении есть эмодзи или знаки препинания, не предусмотренные шаблоном; использованы якоря ^ и $, хотя нужен поиск подстроки внутри длинного текста. Проверьте выражение в тестере именно на том сообщении, которое прислал клиент.
Ограничения метода и когда регулярных выражений недостаточно
Регулярные выражения проверяют формат, но не смысл. Шаблон подтвердит, что строка похожа на номер телефона, но не что этот номер существует и принадлежит клиенту. Для проверки факта существования нужны дополнительные механизмы: код подтверждения по SMS, верификация через мессенджер или ручная проверка оператором.
Также шаблоны плохо справляются с пониманием свободной речи. Если клиент пишет «хочу вернуть товар, он сломался через день», регулярное выражение выцепит отдельные слова, но не оценит контекст. Для сложных диалогов комбинируйте шаблоны с кнопочным меню: чем меньше свободного ввода на критичных шагах, тем стабильнее сценарий.
- ✅ Используйте регулярные выражения для форматов: телефон, email, код, дата.
- 🔘 Заменяйте свободный ввод кнопками там, где вариантов ответа мало.
- 👤 Переводите на оператора диалоги, где важен смысл, а не формат.
Часто задаваемые вопросы
Как проверить, что пользователь ввёл только цифры?
Используйте шаблон ^\d+$ — он пропустит строку, состоящую исключительно из цифр любой длины. Если нужна конкретная длина, укажите её в фигурных скобках, например ^\d{4}$ для четырёхзначного кода.
Регулярное выражение работает в тестере, но не в боте. Что делать?
Проверьте поле ввода шаблона на лишние пробелы и переносы строк — введите выражение заново вручную. Затем убедитесь, что проверка привязана к правильному блоку и что ветка обработки ответа настроена. Если проблема сохраняется, сверьтесь с документацией SaleBot: возможно, движок шаблонов не поддерживает какую-то из использованных конструкций.
Учитывается ли регистр букв при сравнении?
Это зависит от настроек конкретного блока и движка регулярных выражений. Универсальное решение — явно перечислить варианты, например [дД]а, либо использовать флаг игнорирования регистра, если он поддерживается вашей связкой.
Можно ли одним шаблоном принимать номер и с «8», и с «+7»?
Да, для этого используется группа с альтернативой: ^(\+7|8) в начале выражения допускает оба префикса. Полный приведённый выше шаблон для телефона уже учитывает оба варианта, а также скобки, пробелы и дефисы между группами цифр.
Опасно ли менять регулярное выражение в работающем боте?
Изменение шаблона затрагивает только логику проверки ввода и не вредит данным, но может изменить поведение сценария для клиентов, которые проходят его прямо сейчас. Безопасный порядок: скопируйте старый шаблон в заметки, внесите правку, протестируйте сценарий в тестовом режиме и только потом отпускайте в работу.