Чат-бот

Что делать, если бот работает в тестовом окне, но не работает в мессенджере?

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

Также причиной может быть ошибка подключения канала.

В этом случае рекомендуем проверить настройки по инструкциям подключения мессенджеров.

Как получить корректный номер телефона клиента?

Необходимо добавить проверку номера с помощью регулярных выражений.

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

Как настроить проверку?

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

Подходящие выражения:

  1. Номер телефона в России:

    ^((\+7|7|8)+([0-9]){10})$
    
  2. Номер телефона с кодом любой страны:

    ^(\+)?((\d{2,3}) ?\d|\d)(([ -]?\d)|( ?(\d{2,3}) ?)){5,12}\d$
    
  3. Email:

    ^[-\w.]+@([A-z0-9][-A-z0-9]+\.)+[A-z]{2,4}$
    

Убедитесь, что перед регулярным выражением в условии стрелки нет пробела.

Иначе схема чат-бота может работать с ошибками.

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

Так же, как бот может записать имя или возраст клиента, он может сохранить номер телефона или email.

Создайте блок с просьбой отправить номер телефона или email:

Проведите из него стрелку и укажите в условии соответствующее регулярное выражение:

В настройках условия обязательно выберите тип соответствия Регулярное выражение.

При таком условии чат-бот примет только корректный номер телефона или email.

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

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

Это не номер телефона. Пожалуйста, напишите номер телефона еще раз.

Выберите тип блока Не состояние.

У такого блока нет собственного условия, как у блока Состояние диалога, и пользователь не переходит в него как в отдельное состояние.

В данной схеме пользователь останется в предыдущем блоке, пока не введет корректный номер телефона:

Подробнее о блоке «Не состояние» читайте в отдельной статье.

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

Как узнать количество подписанных на бота?

В разделе «Аналитика» отображается:

  • общее количество клиентов;
  • количество клиентов по каждому мессенджеру.

Как сделать, чтобы разговор начинал сам бот?

Для каждого мессенджера используется отдельная настройка первого сообщения.

Подробнее читайте в статье «Первое сообщение в мессенджерах».

Как отправить «догоняющее» сообщение?

Если клиент перестал проходить воронку, ему можно отправить напоминание с помощью блока Не состояние.

Такой блок отправляет сообщение, но не перемещает пользователя по основной воронке.

Подробнее читайте в статье «Блоки “Не состояние”».

В соединении также необходимо:

  1. Настроить таймер.
  2. Включить переключатель Отменить, если покинул блок.

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

Как сделать, чтобы сразу отправлялась цепочка из 2–3 сообщений?

Соедините блоки стрелками и укажите в настройках каждой стрелки задержку 0 секунд.

Как отключить умные ответы, когда в чат вступает оператор или менеджер?

Укажите задержку после ответа оператора.

Как отследить переход по ссылке из предыдущего сообщения?

Можно использовать два способа:

  1. Добавить ссылку в кнопку.
  2. Использовать функцию proxy().

Способ 1. Ссылка в кнопке

Добавьте кнопку в настройках блока:

В настройках кнопки:

  1. Оставьте функцию По умолчанию.
  2. Укажите текст кнопки.
  3. Добавьте ссылку.

Включите параметр С уведомлением о клике:

Нажмите Добавить, а затем Сохранить:

После клика клиента по кнопке в диалоге появится уведомление:

Способ 2. Прокси-ссылка

Если мессенджер не поддерживает кнопки, используйте функцию:

proxy('ваша ссылка')

В калькуляторе блока создайте переменную, например link, и присвойте ей результат функции proxy():

В тексте сообщения вставьте переменную:

#{link}

Если клиент перейдет по ссылке, в диалоге появится уведомление:

Колбэк при переходе по ссылке из функции proxy() аналогичен колбэку кнопки с включенным уведомлением о клике.

Чтобы настроить реакцию бота на клик, укажите колбэк в условии блока типа:

  • Стартовое условие;
  • Не состояние с условием.

Реакция на конкретную ссылку

Если бот должен реагировать только на переход по определенной ссылке, укажите полный текст колбэка в условии блока:

Тип соответствия:

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

Реакция на переход по любой ссылке

Если бот должен реагировать на любой переход по ссылке, укажите часть колбэка:

link_was_pressed

Тип соответствия:

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

Я хочу запустить таргет на бота. Где взять ссылку?

Можно создать сайт или лендинг и разместить на нем ссылки на ботов.

Создавать сайт необязательно — можно использовать прокси-ссылки.

Ссылки с кнопок мини-лендинга использовать нельзя.

Верно ли, что функция «Задержка по времени» отправляет сообщение в конкретную дату и время?

Да. Сообщение будет отправлено в дату и время, указанные в настройках стрелки.

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

Например, если указано время отправки 21.07.2025 10:00 и задержка 1 час, сообщение будет отправлено 21.07.2025 в 11:00.

Можно ли создать два разных бота в одном аккаунте?

Да. В одном аккаунте можно создавать любое количество проектов.

Как сделать, чтобы стрелка с таймером и условием не планировалась после каждого сообщения клиента?

Если параметр Отменить сообщения с таймером отключен, а переход по таймеру зависит от условия, добавьте в поле Строки, на которые не отвечать:

#{question}

Почему текст &para, введенный в блоке, заменяется на символ ?

Это происходит из-за обработки HTML-сущностей браузером.

Браузер воспринимает &para как начало сущности ¶, которая отображается символом .

В качестве решения используйте:

&Para

Можно ли отправлять администратору уведомления, когда клиент пишет в онлайн-чат?

Да.

Подробнее об этом читайте в статье.

Можно ли сделать разные ссылки на одного бота с разной логикой?

Пример обращения в поддержку

Добрый день! У нас есть две ссылки, которые ведут на один и тот же сайт. Мы хотим понимать, откуда приходят заявки: одна ссылка будет в шапке профиля Telegram, а вторая — в рекламе. Можно ли использовать одного бота, но разделить эти два источника?

Да. Для этого можно создать два лендинга и указать для каждого свой тег.

Шаг 1. Создайте два сайта с разными тегами

Шаг 2. Укажите теги в условиях стартовых блоков

При переходе с лендинга Сайт для курса будет запускаться первая схема:

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

Можно ли отправить сообщение на следующий день после первого сообщения бота?

Пример обращения в поддержку

Человек переходит по рекламе и попадает в бота. Ему приходит приветственное сообщение, а на следующий день в 12:00 нужно отправить ссылку. Как это настроить?

Да.

В поле даты отправки стрелки укажите переменную:

next_day

Затем задайте необходимое время.

Как настроить, чтобы бот не мешал общению с клиентами?

В настройках проекта есть поле:

Время в минутах, на которое замирает бот после ответа оператора

Отсчет начинается с момента отправки сообщения оператором.

Если по ошибке установлено слишком большое значение и бот отключился надолго:

  1. Установите в этом поле 0.
  2. Отправьте клиенту сообщение от оператора.

Как настроить отписку через чат-бота?

Вложенные файлы

Можно ли отправлять изображения?

Да. Бот может отправлять изображения в сообщениях.

Для этого выберите нужный блок, добавьте вложение и укажите его тип, например Изображение.

Подробнее читайте в статье «Вложения».

Как отправить несколько изображений или файлов?

В одном блоке можно добавить несколько вложений одного типа:

Также можно создать несколько блоков подряд и отправлять в каждом отдельное вложение.

Чтобы файл отправлялся без текста, в поле ответа укажите:

#{none}

Почему вместо файлов приходят ссылки?

Это может означать, что:

  • выбран тип отправки файла ссылкой;
  • при отправке файла произошла ошибка;
  • файл по указанной ссылке недоступен.

Особенности отправки файлов:

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

Как включить превью ссылки?

При добавлении ссылки в текст сообщения можно включить отображение превью.

За отображение превью в Telegram, WhatsApp, Facebook и VK отвечает разметка Open Graph.

Open Graph содержит метатеги:

  • og:title — заголовок;
  • og:description — описание;
  • og:image — изображение.

После изменения изображения или описания может потребоваться обновить кеш ссылки с помощью специальных инструментов.

Какой максимальный размер файла?

При загрузке в конструктор максимальный размер файла — 20 МБ.

При отправке файла по ссылке ограничений со стороны конструктора нет.

Как отправить случайный текст или изображение?

Для выбора случайного значения используется функция:

random(low, high)

Функция принимает два параметра:

  • нижнюю границу;
  • верхнюю границу.

Пример:

random(-10, 10)

Результат — случайное целое число от -10 до 10.

Получение случайного значения из набора данных

Набором данных может быть:

  • массив;
  • словарь;
  • таблица.

Пример с массивами:

text = {
  "1": "Вас ждет солнечная Италия",
  "2": "Думаю, модная Франция поднимет настроение",
  "3": "Пора-пора, на берега родного Крыма",
  "4": "Изведайте уголки своей родины"
}

picture = {
  "1": "https://i.ibb.co/k4prZK0/itperv.jpg",
  "2": "https://i.ibb.co/mTthk8t/image.jpg",
  "3": "https://i.ibb.co/dJ1d6XK/5d42d4f8a593ad12cf3fb394-1.jpg",
  "4": "https://i.ibb.co/Y3YYGQD/DSCF6408-2.jpg"
}

Выберите случайный номер:

vibor = random(1, 4)

Получите значения из массивов:

txt = get(text, '#{vibor}')
pct = get(picture, '#{vibor}')

После этого выведите результаты клиенту.

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