Перейти к основному содержимому

Работа с блоками

Блок — это один экран диалога. Подписчик получает сообщение блока, может нажать кнопку и перейти к следующему. Из блоков собирается сценарий на доске.

Каждый блок отвечает за один акт коммуникации:

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

Как открыть блок

На доске сценария кликните по блоку → откроется редактор блока в полноэкранном режиме.

Открытие блока Скриншот 1. Редактор блока.


Часть 1. Содержимое блока

Текст сообщения

Главное поле блока. Поддерживает:

Для подстановки переменных и шаблонов используйте кнопку «Подстановки» под полем ввода.

  • Сохранить ответ на блок в переменную: укажите имя переменной (_answer по-умолчанию).

Медиа

В блок можно прикрепить:

  • Изображение (jpg, png, webp);
  • Видео (mp4, mov);
  • Аудио / голос (mp3, ogg, oga);
  • Документ (pdf, doc, xls и т.д.);
  • Стикер / GIF.

Медиа в блоке Скриншот 2. Прикрепление медиа.

В настройках кнопок (см. ниже) есть опции:

  • Сгруппировать медиа — несколько одинаковых медиа отправятся одним сообщением (альбомом). От 2 до 10 штук, для картинок и PDF.
  • Сообщение вместе с медиа — текст подпишется под медиа, а не отдельным сообщением.
Удаление вложения необратимо и не ждёт сохранения

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

То же самое во вложениях условий сценария действий, в шаблоне документа и в картинках лендинга.

Если файл всё же пропал (например, его снесла очистка неиспользуемых), бот отправит сообщение без него: текст и кнопки уйдут как обычно. Раньше одно пропавшее вложение не давало уйти всему сообщению.


Часть 2. Кнопки

Кнопки — главный инструмент управления диалогом. Они исключают опечатки и явно ведут клиента дальше.

Типы кнопок

ТипЧто делает
Ссылка (URL)Открывает внешний сайт / WebApp / MiniApp / Ссылку на оплату
ТегиДобавляет/Удаляет теги
БлокНажатие переводит на указанный блок сценария
ЗначениеПрисваивается в качестве ответа подписчика
НазадВозвращает сценарий на шаг назад
ЗавершитьЗавершение сценария
Скопировать текстНажатие копирует текст в буфер обмена подписчика

Настройки кнопок

Скриншот 3. Типы кнопок.

Кнопка «Скопировать текст»

Промокод, номер заказа, реквизиты для перевода — то, что человек всё равно выделяет пальцем в сообщении. Кнопка копирует это в буфер обмена одним нажатием; в поле «Что скопировать» работают подстановки, поэтому копировать можно и значение переменной.

Кнопка работает в Telegram (только при включённых inline-кнопках) и в МАКС. В остальных мессенджерах она не показывается — если бот многоканальный, дублируйте значение текстом в сообщении.

Настройки рядов и поведения

Кнопка settings в правом верхнем углу блока открывает настройки для каждого мессенджера отдельно. Вкладки: Telegram, MAX, VK.

Настройки кнопок

Скриншот 4. Настройки кнопок по мессенджерам.

Telegram — основные опции

ОпцияНазначение
Кнопок в рядуСколько кнопок в одной строке. Последнее значение применяется ко всем следующим рядам
Кнопки под сообщениемInline-клавиатура (по умолчанию). Если убрать — кнопки будут под полем ввода (reply-клавиатура)
Сгруппировать медиаАльбом из 2-10 однотипных медиа
Сообщение вместе с медиаТекст идёт подписью к медиа
Очистить клавиатуруУбрать кнопки под полем ввода (для запроса контакта/локации не использовать)
Запрос номера телефонаКнопка получит номер. Сохраняется в #{client_phone}
Запрос месторасположенияКоординаты в #{client_latitude} и #{client_longitude}
Заменить предыдущее сообщениеПредыдущее сообщение удаляется перед отправкой нового
Отключить предпросмотр ссылокУбирает превью URL в сообщении
Отключить звуковое уведомлениеТихая отправка
Защищённое сообщениеПодписчик не сможет переслать/сохранить
Приём трансляции геопозицииLive-локация — координаты обновляются в #{client_latitude}, #{client_longitude}. При обновлении вызывается блок с этой отметкой

MAX и VK

Свои наборы настроек на отдельных вкладках. Делайте настройки для всех мессенджеров, в которых работает бот.

Кнопка контакта/локации — особый случай

Она всегда первая в ряду. Не сочетайте её с инлайн-клавиатурой («Кнопки под сообщением») — Telegram такое не поддерживает.

Экран, который перерисовывает сам себя

Мультисписок, чек-лист, переключатели опций — всё, где кнопка возвращает подписчика на тот же блок, — требует отметки «Заменить предыдущее сообщение» и в Telegram, и в MAX.

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

Постраничному выводу списка отметка не нужна: он убирает предыдущую страницу сам.


Часть 3. Ожидание ответа и переход «иначе»

Свободный ввод от клиента

Если в блоке предусмотрен текстовый ответ — бот его ждёт. Ответ становится доступен в шаблоне [Answer] или [AnswerN] (где N — номер блока) или [AnswerID(ID блока)].

Сохранить ответ в переменную/список можно через Сценарий действий → операцию «Ответ».

Запасной переход «иначе» (wronganswer)

Если клиент написал не то, что ожидалось (не нажал кнопку, написал текст вне условий) — должен сработать запасной переход.

В блоке выберите «Блок при неправильном ответе» → укажите блок, куда увести клиента. Обычно — «Повтори вопрос» или «Я не понял».

Без «иначе» диалог зависает

Если в блоке кнопки + ожидание текста, а ни одно условие не сработало — бот молчит. Всегда настраивайте wronganswer для блоков-вопросов.

Wronganswer — запасной переход

Скриншот 5. Настройка запасного перехода.


Часть 4. Условия и проверки

В блоке можно настроить условные переходы — стрелка пойдёт только при выполнении проверки.

Виды проверок

  • Сравнение значений: #{age} > 18, [Answer1] = да.
  • Содержит / не содержит: [Answer1] INCLUDE доставка.
  • И: #{x} = 1 & #{y} > 5.
  • ИЛИ: #{x} = 1 | #{y} > 5.

Конструктор условия позволяет добавлять символы кнопками: +, -, *, /, (, ), &, |, =, !=, >, >=, <, <=, Содержит, НЕ содержит.

«Не равно» — это !=

Привычное по таблицам и SQL <> конструктор не понимает: условие с ним всегда ложно, и переход не сработает — молча, без ошибки. То же самое со словами «И» и «ИЛИ»: соединяйте условия знаками & и |. Проще всего набирать условие кнопками конструктора — там только рабочие знаки.

Кавычки — с обеих сторон или ни с одной

Конструктор сравнивает стороны условия как текст, вместе с кавычками. Поэтому '[Answer1]' = 'да' работает, [Answer1] = да работает, а вот смешивать нельзя: в [Answer1] = 'да' сравнивается да со строкой 'да' — с кавычками внутри. Совпадения не будет никогда, переход молча не сработает, а с != наоборот — сработает всегда.

Надёжнее брать в кавычки обе стороны: '[Answer1]' = 'да'. Тогда ответу можно быть каким угодно — с пробелами, знаками & и |, пустым.

Числа сравниваются без кавычек: #{age} > 18, #{готово} = 1.

Проверка на пустоту — тоже в кавычках с обеих сторон: '#{комментарий}' = '' (пусто) и '#{комментарий}' != '' (что-то есть). Без кавычек слева такое условие выглядит рабочим, но считается неверно: сходит с рук, только пока в переменной одно слово из букв. Появятся запятая, двоеточие или пробел с цифрами — ветка молча замолчит, а на пустом значении она не срабатывает вообще.

Конструктор условий

Скриншот 6. Конструктор условного перехода.

Несколько условий

  • Выполняется первое истинное условие

Часть 5. Сценарий действий блока

В блоке доступны две точки для подключения фоновой логики:

  • До отправки — действия выполняются перед показом сообщения клиенту. Используйте для расчётов, чтения списков, формирования персонального контента.
  • После отправки — действия после показа. Удобно для логов, постановки тегов, уведомлений менеджеру.

Кнопка «Добавить новый сценарий действий» под списком выбора сценария действий создаёт новый сценарий действий.

Сценарии действий до и после

Скриншот 7. Сценарий действий «до» отправки блока.

→ Подробно: Сценарии действий.


Часть 6. Отправить сотруднику

Блок умеет одновременно с ответом клиенту отправить сообщение привязанному сотруднику — менеджеру, мастеру, администратору. Клиент этого сообщения не видит.

Включите «Отправить сотруднику» и напишите текст. Получателей задают двумя способами:

  • «Отправить всем» — сообщение уйдёт всем активным сотрудникам аккаунта. Выбирать никого не нужно;
  • без этой отметки — выберите одного или нескольких сотрудников из списка.
Что выбрать

«Отправить всем» переживает перенос бота в другой аккаунт: получателей бот находит в момент отправки. Конкретный сотрудник хранится идентификатором подписчика, и в чужом аккаунте такого подписчика нет — сообщение уйдёт в никуда. Поэтому в ботах, которыми вы делитесь или которые ставите из готовых, оставляйте «Отправить всем», а потом при желании поменяйте на конкретного.

К сообщению можно прикрепить:

  • кнопки — ссылка на переписку, теги, переход к блоку;
  • медиафайлы — фото и документы, которые пришли от клиента или подготовлены заранее;
  • File ID файла для Telegram и MAX — фото, документа, видео, аудио.

В тексте и в кнопках работают переменные и шаблоны замен — сотруднику сразу уходит имя клиента, его ответы и ссылка на диалог.

Сообщение без текста

Если текста нет, но есть вложение или видео, сообщение всё равно уйдёт. Одни кнопки без текста и вложений не отправляются — мессенджеру нечего показать.

Кнопка «Запустить блок»

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


Часть 7. Задержка отправки

У каждого блока можно задать задержку — за сколько отправить сообщение после предыдущего блока:

  • Сразу — без задержки;
  • Минуты / часы / дни — отложить.

Задержка отправки

Скриншот 8. Настройка задержки и времени отправки.

Опции расписания (вне сценария):

  • В любое время — отправить как только подошёл срок;
  • В заданное время — отправить только в окно (например, не ночью, а с 9 до 21).

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

Таймер на секунды

Задержка меньше минуты ведёт себя иначе, чем минуты и часы: бот выдерживает её прямо в том же обращении, не откладывая блок в расписание. На этом собирается таймер вида «не ответил за 30 секунд — идём дальше»:

  1. У блока, откуда идёт отсчёт, включите «Переход без ожидания ответа» — бот пойдёт по переходу сам.
  2. У блока, на который ведёт переход, поставьте задержку 30 секунд.
  3. Текст этого блока — [Actions], а сценарий «до отправки» решает, что показать: событие уже случилось — сценарий заканчивается без сообщения, и подписчик ничего не увидит; не случилось — «Запустить блок» на нужный шаг.

Поле «Число повторений» (появляется у задержек меньше минуты) повторяет отсчёт до десяти раз: 30 секунд, проверка, снова 30 секунд.

Задержка читается только у блока, на который пришли переходом

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

Круг попыток: «не ответил — предлагаем следующему»

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

  1. Экран ожидания («ищем оператора») помечен «Переход без ожидания ответа» и ведёт переходом на блок круга.
  2. У блока круга задержка 1 минута, текст [Actions] и сценарий «до отправки»: он смотрит, случилось ли ожидаемое.
  3. Не случилось — сценарий делает шаг (предлагает заявку следующему в списке) и «Запустить блок» обратно на экран ожидания. Оттуда переход без ожидания снова уводит на блок круга — и так по кругу.
  4. Случилось или круг исчерпан — сценарий уводит на обычный экран, и цикл заканчивается сам.
У круга обязано быть условие выхода

Счётчик попыток дошёл до числа участников, список кончился, заявку приняли — что-то, что точно наступит. Круг без выхода будет слать людям сообщения, пока бота не выключат.

Две мелочи, без которых круг выглядит неопрятно:

  • Отличить самоход от сообщения подписчика. При переходе без ожидания бот подставляет ответ ..., поэтому автоматический шаг ловится условием '[Answer]' = '...', а всё остальное — это подписчик что-то написал.
  • Экран круга должен переписывать себя — включите «Заменить предыдущее сообщение», иначе в переписке накопятся копии «ищем дальше».

Часть 8. Архитектура блока

Принцип 1. Один блок — одна задача

Не пихайте 5 вопросов в один блок. Каждый вопрос — отдельный блок с отдельным ответом [Answer1], [Answer2].

Принцип 2. Кнопки лучше свободного ввода

Где можно — давайте кнопки. Свободный ввод оставляйте для имени, телефона, email, комментариев.

Принцип 3. Используйте подстановку, а не статику

Здравствуйте, [Name]! лучше, чем Здравствуйте, друг!. Клиент чувствует, что его «узнают».

Принцип 4. Тяжёлая логика — в сценарий действий

Не вычисляйте суммы в условиях. Считайте в сценарии действий «до отправки», сохраняйте в переменные — а блок просто покажет результат.

Принцип 5. Запасной переход обязателен

Каждый блок-вопрос должен иметь wronganswer. Не понимаете, куда уводить? Уведите на тот же блок — пусть переспросит.

Принцип 6. Настройки для каждого мессенджера

Если бот работает в Telegram + MAX — заполните обе вкладки настроек кнопок. Конфигурация Telegram не переносится на MAX автоматически.


Частые ошибки

  • Пустой блок без перехода — диалог обрывается. Добавьте кнопку или авто-переход к следующему блоку.
  • Кнопка без целевого блока — нажатие = тишина. Нарисуйте стрелку на доске.
  • [Answer] вместо [Answer1][Answer] это последний ответ, а вам, возможно, нужен конкретный блок.
  • Не настроен wronganswer для вопросов — бот не реагирует на «неправильный» ответ.
  • Запрос контакта/локации + кнопки под сообщением — Telegram не позволит сочетание. Уберите одну опцию.
  • Группировка медиа разных типов — не сработает. Альбом только из одинаковых (только картинки или только PDF).
  • Подстановка переменной с ошибкой в имени — клиент получит пустоту. Проверяйте имя через кнопку «Подставить».

Что дальше