AGONTS

Сценарии (Flows)

Блок-схемы разговора: режимы, триггеры, ноды, слоты, переходы, отладка.

Flow — блок-схема разговора. Квадратики (ноды) = шаги. Стрелочки (edges) = переходы. Вы рисуете мышкой в визуальном редакторе. Бот выполняет строго по схеме.

Flow — вторая по важности сущность в платформе после агента. Без flow агент — просто «вольный разговор» — он отвечает на вопросы, но не ведёт клиента к результату. Flow превращает разговор в воронку с предсказуемой конверсией.

Зачем нужен flow

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

Без flow

Клиент: Хочу записаться.
Агент:  Конечно! На какую услугу?
Клиент: На чистку.
Агент:  Понял.

*(тишина. Разговор кончился. Записи нет. Данные клиента нигде не сохранены.
  Клиент уходит.)*

С flow

[Старт]

[Спроси: какая услуга?]

[Спроси: когда удобно?]

[Найди свободные слоты] ← лезет в CRM

[Есть слоты?]
  ├─ да  → [Предложи 3 варианта]
  │           ↓
  │       [Собери имя и телефон]
  │           ↓
  │       [Запиши в CRM]
  │           ↓
  │       [Подтверди клиенту]
  │           ↓
  │       [Отправь SMS-напоминание]
  │           ↓
  │       [Конец — успех]

  └─ нет → [Извинись]

          [Предложи другой день или перевод на оператора]

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

Преимущества flow для бизнеса

Аналитика воронки

Видно, где клиенты отваливаются: 40% не доходят до подтверждения → вопрос задан неудачно, меняем.

A/B-тесты

Два варианта одной ноды → замерили конверсию за неделю → оставили лучший.

Контроль качества

Записи в CRM делаются одинаково всегда. Нет забытых полей.

Масштабируемость

Один flow обрабатывает тысячи клиентов параллельно с одинаковым качеством.

Compliance

В регулируемых индустриях — phrasing и последовательность вопросов зафиксированы.

Graceful degradation

Нет слотов → предлагаем альтернативу. Клиент рассержен → переводим человека. Всё продумано заранее.


Два режима flow

Разговор. Flow для живого общения — чат, звонок, виджет. Ноды задают ход диалога.

Когда использовать: на другом конце — клиент, и надо с ним поговорить.

Типичные сценарии:

  • Запись на приём.
  • Оформление заказа.
  • Квалификация лида (продажи).
  • Техподдержка с решением типовых проблем.
  • Оффбординг (отмена подписки с удержанием).

Автоматизация. Flow без клиента. Запускается по триггеру — расписанию, событию, webhook.

Когда использовать: нужно что-то сделать без диалога.

Типичные сценарии:

  • Утренняя сводка в Slack («сколько продаж за вчера, сколько заявок»).
  • Обработка webhook-событий (пришёл платёж → создать запись → отправить email).
  • Cron-обзвон (напомнить клиентам за день до приёма).
  • Ежедневная выгрузка отчёта из БД.
  • Мониторинг статусов (каждый час проверять, нет ли зависших заказов).

На старте вам нужен conversation. Automation — позже, когда первый разговорный бот уже работает, и вы хотите автоматизировать рутину вокруг.


Триггеры: с чего flow начинается

У каждого flow есть триггер — источник запуска.

  • Вручную — клиент открыл чат / нажал «позвонить» / вы кликнули «запустить». Самый частый триггер для conversation-flow.
  • По расписанию (cron) — cron-выражение: 0 9 * * * = каждое утро в 9:00. Для automation-flow с периодическими задачами.
  • Webhook — POST-запрос на ваш специальный URL стартует flow. Для интеграций с внешними системами («новый платёж» → webhook → обработка).
  • Событие — внутреннее событие платформы (новая сессия, новое сообщение, клиент попросил оператора).

Cron-выражения — шпаргалка

0 9 * * *       каждый день в 09:00
*/15 * * * *    каждые 15 минут
0 9-18 * * 1-5  каждый час с 09 до 18 в будни
0 0 1 * *       первого числа каждого месяца в полночь

Используйте crontab.guru для проверки.


Ноды: типы шагов

Flow состоит из нод (квадратиков). Два семейства — conversation и automation. Можно смешивать, если есть смысл.

Conversation-ноды (для разговора)

  • entry — точка входа. Первая реплика: «Здравствуйте!». У flow всегда ровно один entry.
  • ask-client — агент задаёт клиенту вопрос: «Как вас зовут?». Ждёт ответа, кладёт в слот.
  • slot-filler — агент собирает несколько полей сразу (имя, телефон, дату), переспрашивает пока не заполнено всё. Самая мощная нода для сбора данных.
  • intent-router — определяет намерение клиента, направляет в нужную ветку. «Запись» → A, «жалоба» → B, «вопрос о цене» → C.
  • decision — условное ветвление: if slot.age >= 18 then A else B.
  • data-lookup — запрос в вашу внешнюю систему через MCP. Проверить слоты, статус заказа, баланс счёта.
  • action — выполняет действие: записать в CRM, отправить SMS, создать заявку в Jira.
  • transfer-human — передача живому оператору. Сессия уходит в очередь.
  • end-conversation — финальная реплика, завершение: «Записал, до встречи!» или «К сожалению, свободных мест нет».
  • subflow — вложенный переиспользуемый flow. Например, «сбор контактов» — один subflow, используется в 10 разных основных flow.

Automation-ноды (для автоматизации)

  • trigger — стартовая точка (cron / webhook / event). Аналог entry для automation.
  • ai-step — один вызов LLM на данных из контекста (например, «суммаризировать отчёт из БД»).
  • integration — HTTP / SQL / API-интеграция. Запросить данные, послать данные.
  • transform — преобразование данных внутри контекста (извлечь поле, собрать массив, отфильтровать).
  • condition — ветвление (как decision, но без диалога).
  • human-gate — пауза: ждать подтверждения человека перед продолжением. Нужна для критичных действий (массовые рассылки, удаление данных).
  • output — финальный результат: отправить email, сообщение в Slack, ответ на webhook.

Слоты: память разговора

Слот — именованная переменная, которую агент собирает по ходу диалога. Живёт в контексте сессии.

Примеры слотов

Для записи на приём:

  • service — какую услугу хочет клиент;
  • date — когда (ISO-дата или относительно — «завтра», «послезавтра»);
  • preferred_time — предпочтительное время («утром», «14:00»);
  • name — имя клиента;
  • phone — телефон для подтверждения.

Для техподдержки:

  • issue_type — тип проблемы;
  • product_id — какой продукт;
  • severity — критичность;
  • contact_email — куда писать ответ.

Как агент их заполняет

Нода slot-filler смотрит, какие слоты ещё не заполнены, и спрашивает их по очереди. При этом:

  • Клиент может ответить на несколько сразу — LLM поймёт и распарсит. «Я Иван, телефон +79161234567, хочу на чистку завтра» → все четыре слота заполнены за одну реплику.
  • Если клиент сказал непонятное — агент переспросит, но не бесконечно (обычно 3 попытки, потом передача оператору).
  • Клиент может передумать: «Нет, поменяйте на четверг» — slot перезаписывается.

Использование в других нодах

После заполнения слоты доступны через {{ slot.name }} в любой последующей ноде:

Текст ноды end-conversation:
«{{ slot.name }}, записал вас на {{ slot.date }} в {{ slot.time }}.
До встречи!»

Результат: «Алексей, записал вас на 20 апреля в 14:00. До встречи!».

Слоты живут только в контексте сессии — забываются после завершения разговора. Для долговременной памяти (история заказов, предпочтения) используйте CRM и базу знаний.


Переходы (edges)

Стрелка между двумя нодами — переход (edge). Бывает двух типов:

После ноды A всегда иди в B. Используется, когда нет ветвления.

[ask-client: "Как вас зовут?"] ─────▶ [ask-client: "Какой телефон?"]

Идёт в B только если выполнено условие. Типичные условия:

slot.service == "чистка"
slot.age >= 18
slot.answer contains "согласен"
slot.answer matches /да|конечно|подтверждаю/i
lookup.available_slots.length > 0
intent == "complaint"

Если у ноды несколько выходов — они проверяются сверху вниз. Последний без условия = «иначе» (fallback).

[decision]
  ├─ slot.age < 18           → [end-conversation: "Только для 18+"]
  ├─ slot.service == "нет"   → [ask-client: "Уточните услугу"]
  └─ (без условия — else)    → [slot-filler: имя, телефон]

Синтаксис условий

Доступны:

  • ==, != — равенство/неравенство.
  • >, <, >=, <= — сравнения (для чисел и дат).
  • contains — подстрока.
  • matches — регулярное выражение.
  • &&, || — логические операторы.
  • slot.X, lookup.Y, context.Z — доступ к данным.

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

  • Регистр имеет значение: slot.serviceslot.Service.
  • Типы: slot.age == "18" (строка) ≠ slot.age == 18 (число). Если слот заполнен из текста клиента — это строка.
  • Отсутствие else: если ни одно условие не выполнилось и нет fallback — сессия зависнет. Всегда делайте «else» для страховки.

Пример: полный flow записи на приём

                    [entry]
                «Здравствуйте! Клиника Улыбка, чем помочь?»

                [intent-router]

     ┌─────────────────┼─────────────────┐
     │                 │                 │
«запись»          «вопрос»           «жалоба»
     ↓                 ↓                 ↓
[slot-filler]   [data-lookup]     [transfer-human]
 service, date   в базу знаний     priority=9
     ↓                 ↓
[data-lookup]    [ai-step: ответ]
 найти слоты

 [decision]

     ├─ нет слотов
     │      ↓
     │  [end-conversation: "Свободных мест нет, запишу на другой день?"]

     └─ есть

     [ask-client: "Есть X, Y, Z. Какое выбираете?"]

     [slot-filler]
      chosen_time

     [slot-filler]
      name, phone

     [ask-client: "Записываю на {{name}}, {{phone}}, на {{date}} в {{time}}. Подтверждаете?"]

     [decision: confirmed]
         ├─ нет  → [end-conversation: "Отменил"]
         └─ да   → [action: book_appointment(...)]

                   [action: send_sms_reminder(...)]

                   [end-conversation: "Готово! Жду вас."]

Это не псевдокод — именно так это выглядит в редакторе. Мышкой тянете ноды из палитры, соединяете стрелками, настраиваете условия. За 30–60 минут собирается полноценный сценарий на 10-20 нод.


Как создать flow: пошагово

Заполните базу

  • Имя: человеческое, для команды («Запись на приём в стоматологию»).
  • Режим: conversation (если для диалога) или automation (если для фоновых задач).
  • Триггер: обычно manual. Cron/webhook/event — для специфичных сценариев.

Откроется холст

Пустой холст с одной нодой entry по центру. Слева — палитра нод, справа — панель настроек выбранной ноды.

Стройте по одной ноде

Перетаскивайте нужные типы из палитры на холст. Соединяйте стрелками (тяните от кружка справа у ноды к другой ноде).

Совет: начните с главного «хребта» сценария — линейной цепочки без ветвлений. Ветвления добавите потом.

Настройте каждую ноду

Клик по ноде → справа открывается панель: текст вопроса, условия переходов, параметры.

Для ask-client и slot-filler — пишите вопросы на человеческом языке, как говорил бы оператор.

Для data-lookup и action — выбираете MCP-инструмент и маппинг параметров.

Настройте условия переходов

Кликните по стрелке → в панели справа добавьте условие (если нужно).

Критично: у каждого condition/decision должен быть «else» — случай, когда ни одно условие не сработало. Иначе сессия зависнет.

Сохранить → протестировать в draft

Статус draft — flow не запускается автоматически, но его можно запустить вручную из интерфейса.

В разделе Чаты → Новый чат выберите агента → запустите этот flow → пройдите разговор «как клиент». Проверьте все ветки.

Опубликовать (draft → active)

Когда всё работает — поменяйте статус. Flow становится доступным в продакшене и работает по триггеру.

Начните с 3–4 нод. Добавлять легче, чем удалять запутанное. Первая версия вашего flow будет «сломана» в 80% случаев — это нормально. Реальные сценарии выявляются на первых 50–100 клиентах.


Статусы flow

  • draft — черновик. Не запускается автоматически по триггеру. Можно тестировать вручную.
  • active — активный. Триггер работает, flow запускается автоматически.
  • paused — на паузе. Триггер отключён временно, но flow не удалён. Удобно для срочной заморозки (нашли баг — ставим на паузу пока чиним).
  • archived — в архиве. Не показывается в основном списке, но историю можно посмотреть.

Режим выполнения: deterministic vs agentic

У flow есть важная настройка — execution mode.

Детерминистический. Жёстко следует нарисованной схеме. Переходы — только по условиям на стрелках.

Когда выбирать:

  • Регулируемые процессы (банки, медицина, страховка).
  • Compliance-требования (фразы должны быть стандартизированы).
  • Когда важна 100% предсказуемость.
  • Для сценариев, где цена ошибки высока (финансовые транзакции).

Плюсы: полный контроль, предсказуемое поведение. Минусы: менее гибко, бот не умеет «выйти за рамки» в нестандартных случаях.

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

Когда выбирать:

  • Свободные разговоры (продажи, консультации).
  • Когда клиенты часто «перескакивают» между темами.
  • Когда нужна гибкость и естественность.

Плюсы: гибко, естественно звучит. Минусы: менее предсказуемо, труднее отлаживать.

Рекомендация на старте: deterministic. Когда привыкнете к механике, попробуете agentic на отдельных flow и сравните конверсию. Для большинства кейсов детерминистический даёт лучшие результаты при меньшей сложности.


Паттерны flow

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

Паттерн 1: защита от бесконечного slot-filling

Проблема: клиент не даёт валидный ответ, slot-filler крутится бесконечно.

Решение:

[slot-filler, max 3 попытки]

   [decision: заполнено?]
         ├─ да  → дальше по сценарию
         └─ нет → [transfer-human: "Переведу на администратора"]

Паттерн 2: подтверждение перед критичным действием

Проблема: бот записывает в CRM неправильные данные, клиент отказывается.

Решение:

[slot-filler: name, phone, date]

[ask-client: "Записываю {{name}}, {{phone}}, {{date}}. Всё верно?"]

   [decision]
         ├─ "да"  → [action: book_appointment]
         └─ "нет" → [slot-filler] (переспрашиваем)

Сокращает ошибочные записи на 95%.

Паттерн 3: fallback на оператора

Проблема: бот застрял в нестандартной ситуации, клиент раздражается.

Решение: в intent-router или decision на каждом шаге добавляем ветку:

intent matches /жалоба|претензия|оператор|человек/i

[transfer-human, priority=8]

А также общий fallback на entry:

[entry] → [intent-router]

              ├─ известное намерение → обычный flow
              └─ unknown → [ai-step: "попытайся понять"]

                           [decision]
                               ├─ понял → flow
                               └─ не понял → transfer-human

Паттерн 4: проактивная продажа

Проблема: клиент записался — хочется предложить дополнительные услуги.

Решение: после action: book_appointment добавляем:

[action: book_appointment]

[ai-step: "Проанализируй тип услуги и клиента. Если уместно — предложи
          доп. услугу."]

   [decision: stood_up?]
         ├─ да  → обычное end
         └─ предложил → [ask-client: "...как вам такое?"]

                        [action: add_service]

                        [end-conversation]

Конверсия допродаж: 5-15%.

Паттерн 5: soft-ретеншен

Проблема: клиент хочет отменить заказ / услугу / подписку. Отпустить — потеря дохода. Удержать силой — нельзя.

Решение:

[intent: cancel]

[ask-client: "Жаль расставаться. Скажите, что именно не устраивает?"]

[ai-step: классификация проблемы]

  [decision]
    ├─ цена → [ask-client: "У нас есть скидка 20%, интересно?"]
    ├─ качество → [transfer-human: "Решим с менеджером"]
    ├─ не нужно → [action: cancel_gracefully]
    └─ другое → [transfer-human]

В среднем удерживает 15-30% отмен.


Как отлаживать flow

Когда flow ломается — пошагово.

Шаг 1: повторите сценарий в песочнице

Чаты → Новый чат → ваш агент → запустить ваш flow. Пройдите тот же диалог, что и реальный клиент.

Шаг 2: смотрите flow_runs

Для каждого запуска flow создаётся запись в таблице flow_runs. В админке: Сценарии → ваш flow → Запуски. Видно:

  • куда пошёл разговор на каждом шаге;
  • значения слотов в каждый момент;
  • результаты MCP-вызовов;
  • где flow сломался (если сломался).

Шаг 3: проверьте условия переходов

Самая частая ошибка — регистр или тип данных. slot.Service вместо slot.service, "18" (строка) вместо 18 (число).

Шаг 4: проверьте MCP-инструменты

data-lookup или action падают с ошибкой? Проверьте:

  • отметили ли инструмент в агенте;
  • правильные ли параметры передаются;
  • жив ли MCP-сервер (Настройки → MCP-серверы → статистика).

Шаг 5: улучшите формулировки нод

Клиент не понял вопрос бота — перепишите формулировку проще. Не знаете как — попросите коллегу без контекста пройти flow «как клиент».

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


Метрики здоровья flow

Смотрите еженедельно. Критичные показатели:

МетрикаЗдоровое значениеЧто делать если плохо
Доля успешных прохождений (дошли до целевой ноды)40–70%<25% — flow слишком сложный или ведёт не туда
Средняя длина прохождения (нод)5–12>20 — слишком запутанный, упростите
Где отваливаются (дроп-рейт по нодам)5–15% на шаг>30% на одной ноде — там проблема
Доля переходов на оператора10–25%>40% — бот не справляется, нужно усиливать
Средняя длительность flow (секунды)<60 сек для простых>180 сек — клиенты устают, сокращайте

Что смотреть в аналитике

В Аналитика → Flows видно для каждого flow:

  • Количество запусков за период.
  • Воронка: сколько дошло до каждой ноды.
  • Где самые большие отвалы.
  • Средняя длительность.
  • Разбивка по успешно/неуспешно/перевод на оператора.

On this page

Зачем нужен flowБез flowС flowПреимущества flow для бизнесаДва режима flowТриггеры: с чего flow начинаетсяCron-выражения — шпаргалкаНоды: типы шаговConversation-ноды (для разговора)Automation-ноды (для автоматизации)Слоты: память разговораПримеры слотовКак агент их заполняетИспользование в других нодахПереходы (edges)Синтаксис условийЧастые ошибкиПример: полный flow записи на приёмКак создать flow: пошаговоОткройте «Сценарии → Новый сценарий»Заполните базуОткроется холстСтройте по одной нодеНастройте каждую нодуНастройте условия переходовСохранить → протестировать в draftОпубликовать (draft → active)Статусы flowРежим выполнения: deterministic vs agenticПаттерны flowПаттерн 1: защита от бесконечного slot-fillingПаттерн 2: подтверждение перед критичным действиемПаттерн 3: fallback на оператораПаттерн 4: проактивная продажаПаттерн 5: soft-ретеншенКак отлаживать flowШаг 1: повторите сценарий в песочницеШаг 2: смотрите flow_runsШаг 3: проверьте условия переходовШаг 4: проверьте MCP-инструментыШаг 5: улучшите формулировки нодЧастые ошибкиМетрики здоровья flowЧто смотреть в аналитике