> For the complete documentation index, see [llms.txt](https://docs.graspil.com/ru/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.graspil.com/ru/app/automations.md).

# Автоматизации

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

{% hint style="info" %}
Раздел доступен в личном кабинете: <https://app.graspil.com/workflows>
{% endhint %}

## Зачем это нужно

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

Примеры того, что можно сделать:

* Пользователь оплатил заказ → через 5 минут отправить сообщение с благодарностью и ссылкой на чат поддержки.
* Пользователь зарегистрировался, но за 3 дня не сделал ни одного действия → напомнить ему о боте.
* Каждый понедельник в 10:00 → отправить отчёт о статистике в ваш Telegram-канал через webhook.
* Пользователь оставил заявку → создать сделку в вашей CRM автоматически.
* Пользователь достиг определённого уровня активности → выставить ему кастомное поле «VIP», чтобы потом использовать это в рассылках и отчётах.
* Бот отправляет сообщение с кнопками — например, опрос «Понравился сервис?» с кнопками «Да» и «Нет» → в зависимости от того, какую кнопку нажал пользователь, сразу продолжить сценарий своей веткой для каждой кнопки — так можно строить простые опросы, квизы и меню с несколькими вариантами ответа (подробнее см. ниже, в разделе про кнопки).

## Из чего состоит автоматизация

Любая автоматизация строится из блоков, которые вы соединяете друг с другом стрелками на холсте — похоже на блок-схему. Блоков четыре типа:

| Блок         | Что делает                                                                     |
| ------------ | ------------------------------------------------------------------------------ |
| **Триггер**  | С чего всё начинается. В каждой автоматизации он один                          |
| **Действие** | Что нужно сделать (отправить сообщение, вызвать webhook и т. д.)               |
| **Условие**  | Развилка: если условие выполняется — идём по одной ветке, если нет — по другой |
| **Ожидание** | Пауза перед следующим шагом — по времени или до наступления события            |

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

## Как создать автоматизацию

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

### Собираем схему на холсте

На холсте справа есть панель **«Добавить блок»** с тремя группами: **Триггеры**, **Логика**, **Действия**.

1. Сначала добавьте триггер — блок «С чего начать» появится первым на холсте. Триггер можно добавить только один — если он уже есть, раздел триггеров в панели скрывается.
2. Добавьте один или несколько блоков действий, логики, ожидания — по вашему сценарию.
3. Соедините блоки стрелками: зацепите выходной «хвостик» одного блока и протяните к следующему. У одного выхода может быть только одна исходящая стрелка — если потянуть новую, старая связь заменится.
4. Чтобы удалить связь между блоками — кликните на стрелку, появится кнопка «Удалить».
5. Чтобы настроить сам блок — кликните на него, откроется панель с настройками (зависит от типа блока, см. разделы ниже).

{% hint style="warning" %}
Если в схеме нет триггера, нет ни одного действия, или какие-то блоки не соединены друг с другом — опубликовать автоматизацию не получится. Система покажет, что именно нужно исправить.
{% endhint %}

## Триггер — с чего начинается автоматизация

При настройке триггера нужно выбрать **«Тип запуска»**:

* **«По событию»** — автоматизация запускается, когда пользователь совершает одно из выбранных событий (например, «оплата», «регистрация»). Можно выбрать сразу несколько событий — сработает на любое из них. Список событий — тот же, что используется в отчётах: подробнее про события см. [«Список событий»](/ru/app/reports/events.md).
* **«По расписанию»** — автоматизация запускается по таймеру: нужно указать **периодичность** (каждый день / раз в неделю / раз в месяц / раз в год) и **время запуска**.
* **«Ручной запуск»** — автоматизация не запускается сама, вы запускаете её вручную (например, для теста).

Для триггеров «По событию» и «По расписанию» можно дополнительно нажать **«Настроить фильтры»** и сузить, для каких именно пользователей будет работать автоматизация — например, только для пользователей с определённым тарифом или языком. Этот фильтр настраивается так же, как аудитория рассылки.

## Действия — что должен сделать бот

Доступные действия:

| Действие                       | Что делает                                                                                                                                                                                                                                                                                 |
| ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Отправить сообщение**        | Отправляет пользователю сообщение в Telegram — текст, фото, видео, документ и т. д., можно с кнопками. Текст можно сделать персональным, вставив имя пользователя и другие данные                                                                                                          |
| **Webhook**                    | Отправляет запрос на ваш сервер или внешний сервис — удобно, чтобы передать данные о пользователе в свою систему                                                                                                                                                                           |
| **Создать событие**            | Записывает новое событие в аналитику — пригодится, если хочете построить отчёт по результату работы автоматизации                                                                                                                                                                          |
| **Изменить кастомное поле**    | Меняет значение [доп. поля](/ru/app/custom-fields.md) пользователя — присвоить значение, увеличить или уменьшить число                                                                                                                                                                     |
| **AI-агент**                   | Передаёт ситуацию языковой модели и даёт ей на выбор заранее заданное меню исходов — модель сама решает, что сделать дальше, на каждом запуске. Подробнее см. ниже, в разделе «AI-агент»                                                                                                   |
| **Реферальная программа**      | Выполняет операции реферальной программы прямо из сценария: зарегистрировать реферера, получить его код/ссылку, узнать баланс, запросить выплату. Подробнее см. [«Реферальная система»](/ru/app/referral-system.md)                                                                        |
| **Проверка подписки на канал** | Проверяет, подписан ли пользователь на выбранный Telegram-канал — сразу выдаёт отдельные ветки «подписан» / «не подписан»                                                                                                                                                                  |
| **Заявка на вступление**       | Одобряет или отклоняет заявку пользователя на вступление в закрытый канал/группу                                                                                                                                                                                                           |
| **Удалить сообщение**          | Удаляет ранее отправленное или полученное сообщение в чате с пользователем — например, чтобы убрать использованный ответ пользователя из переписки                                                                                                                                         |
| **Интеграции**                 | Передать данные во внешний сервис, например создать сделку в CRM (amoCRM, Bitrix24), отправить офлайн-конверсию в Яндекс.Метрику, постбэк конверсии в трекер Keitaro, или принять оплату в боте через ЮKassa — подробнее в [«Кейс: приём оплаты через ЮKassa»](/ru/cases/case-yookassa.md) |

{% hint style="info" %}
Для действий с интеграциями нужно заранее настроить саму интеграцию в соответствующем разделе личного кабинета — без неё действие работать не будет. Список доступных интеграций постоянно расширяется. Если не нашли нужную вам интеграцию — напишите нам, мы добавим её в течение нескольких дней.
{% endhint %}

В текстовых полях действий (например, в тексте сообщения) можно использовать переменные — они автоматически заменяются на реальные данные пользователя или события в момент отправки. Например, вставив имя пользователя, каждый получатель увидит своё собственное имя. Подробнее про источники переменных (в том числе переменные, которые можно задать самому) — см. раздел «Переменные» ниже.

В сообщение можно добавить кнопки (инлайн-клавиатуру) — например, для опроса или меню с вариантами. При добавлении кнопки выберите для неё тип **«Продолжить сценарий»** — тогда кнопка превращается в отдельный выход из блока «Отправить сообщение»: вы можете протянуть от неё свою стрелку дальше по схеме, прямо как от обычного блока. Один клик — один выход; кнопок типа «Продолжить сценарий» в одном сообщении может быть сколько угодно, у каждой — своя ветка. Подробнее см. ниже, в разделе «Кнопки, продолжающие сценарий».

Кнопки других типов (например, обычная ссылка `url` или кнопка с произвольными данными для внешней интеграции) в ветвление автоматизации не вовлекаются.

### Сообщение на языке пользователя

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

1. Нажмите «+» рядом с вкладкой **«По умолчанию»** и выберите язык из списка — он собран автоматически по языкам пользователей вашего бота.
2. На новой вкладке впишите текст для этого языка — это не копия, а отдельный вариант сообщения именно для него.
3. Так можно добавить сколько угодно языков. Остальные настройки блока (кнопки, медиа, файл) при этом общие для всех языков — переключается только текст/подпись.

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

## AI-агент — решение принимает языковая модель

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

Что настраивается в блоке:

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

  * **Отправить сообщение** — модель сама формирует текст и отправляет его пользователю (по умолчанию — текущему, но можно указать фиксированный `user_id`).
  * **Изменить кастомное поле**.
  * **Продолжить без действия**.
  * **Ветка решения** — точка выхода без побочного эффекта, просто выбор пути: вы описываете, при каком условии подходит именно эта ветка (например, «сообщение пользователя — правильный ответ на вопрос»), а модель сама решает, какая ветка подходит по её описанию. Веток решения можно добавить сколько угодно — у каждой свой отдельный выход на холсте, как у обычного условия.

  Из точек выхода с побочным эффектом (не веток) на одном запуске сработает только одна — модель выбирает единственный подходящий исход.
* **Доступ к сообщениям пользователя** (опционально) — можно дать модели видеть недавнюю переписку с пользователем: последние N сообщений или за последние N минут, входящие/исходящие или оба направления. Это добавляет модели контекст, но не обязательно.
* **Индикация во время генерации** — что видит пользователь, пока модель формирует ответ: ничего, статус «печатает…», либо черновик ответа, который обновляется по мере генерации. Обычная отправка (без индикации) — самый предсказуемый вариант; при быстрой генерации Telegram может не успеть показать индикацию.

{% hint style="info" %}
**Тарификация:** каждый запуск AI-узла оплачивается отдельно, по количеству токенов выбранной модели (входящие и исходящие, цена уже включает наценку платформы) — расход виден в биллинге ресурса.
{% endhint %}

**Пример использования:** у бота есть викторина. В промте объясняется модели, что она должна проверить, является ли сообщение пользователя правильным ответом на заданный вопрос. Заданы две ветки решения — «Правильный ответ» и «Неправильный ответ» — с описанием, по какому критерию каждую выбирать. Модель читает последнее сообщение пользователя (через доступ к переписке) и сама решает, по какой ветке пойти дальше — с каждой ветки можно протянуть свою цепочку из «Отправить сообщение», «Условие» и т. д.

## Условие — разная логика для разных пользователей

Блок «Условие» создаёт развилку в схеме: если условие выполняется — выполнение пойдёт по одной стрелке от блока, если не выполняется — по другой (если вы её провели) или просто остановится.

Чтобы настроить условие, кликните на блок и нажмите **«Настроить условие»** — откроется конструктор условий (такой же, как при настройке аудитории рассылки): можно проверять поля пользователя (язык, дата регистрации, кастомные поля и т. д.), сравнивать их, объединять несколько условий через «И»/«ИЛИ».

**Пример:** «Если у пользователя в кастомном поле "Тариф" стоит значение "Premium" → отправить одно сообщение, иначе → отправить другое».

## Переключатель — несколько веток по одному значению

«Условие» — это развилка на два исхода (да/нет). «Переключатель» позволяет сразу разбить сценарий на много веток по значению одного поля — вместо цепочки из нескольких условий подряд.

Чтобы настроить, кликните на блок и нажмите **«Настроить кейсы»**. Каждый кейс — это своё условие (настраивается так же, как в блоке «Условие») и свой отдельный выход на холсте. Кейсы проверяются по порядку сверху вниз, срабатывает первый подошедший. Кроме кейсов у блока всегда есть отдельный выход **«Остальные»** — по нему пойдёт сценарий, если ни один кейс не подошёл; настраивать его отдельно не нужно, он есть всегда.

**Пример:** у пользователя есть кастомное поле «Тариф» — кейс «Free» → сообщение с предложением апгрейда, кейс «Standard» → сообщение о доступных допах, кейс «Premium» → ничего не отправлять; выход «Остальные» — на случай, если поле вообще не заполнено.

## Ожидание — пауза перед следующим шагом

Два вида блока ожидания:

* **Время ожидания** — просто пауза на заданное количество времени (например, подождать 1 час) перед тем, как перейти к следующему блоку.
* **Ожидание события** — пауза до тех пор, пока пользователь не совершит выбранное событие, но не дольше указанного времени (таймаут). Если событие так и не произошло — выполнение продолжится по таймауту.

**Пример использования:** «Пользователь оформил заказ → подождать события "оплата" не более 30 минут → если оплата произошла, поблагодарить; если нет — напомнить про незавершённый заказ».

## Переменные

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

* **Данные пользователя и события** — например, имя пользователя или значение события, которое запустило автоматизацию.
* **Данные, записанные предыдущими узлами схемы** — например, ответ вебхука (если в его настройках указано, в какую переменную сохранить нужное поле ответа) или то, что пользователь ввёл, пока схема стояла на «Ожидании события».
* **Переменные инициализации** — задаются один раз при старте автоматизации, на вкладке **«Переменные»** в боковой панели конструктора (переключатель «Блоки» / «Переменные» вверху панели). Укажите имя и значение (можно вставить переменную или JSON-массив) — такая переменная будет доступна во всех узлах схемы с самого начала, ещё до первого действия.
* **Блок «Записать переменную»** — отдельный узел в группе «Логика»: вычисляет значение (можно тоже с переменными) и сохраняет его под указанным именем прямо по ходу выполнения — начиная с этого узла переменная доступна везде дальше по графу. Полезно, если нужно один раз посчитать или скопировать значение и переиспользовать его в нескольких следующих узлах.

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

## Кнопки, продолжающие сценарий

Самый простой способ построить опрос, квиз или меню с вариантами — это кнопки с переключателем **«Продолжить сценарий»** на блоке «Отправить сообщение» (см. раздел «Действия» выше).

1. В блоке «Отправить сообщение» добавьте кнопку и выберите для неё тип **«Продолжить сценарий»**.
2. На холсте у блока появится отдельный выход для этой кнопки — протяните от него стрелку к следующему блоку, как обычно.
3. Если кнопок несколько — у каждой свой выход и своя ветка; пользователь увидит одно сообщение с несколькими кнопками, а дальше сценарий пойдёт по той ветке, что соответствует нажатой кнопке.

{% hint style="info" %}
Такая кнопка не одноразовая — она продолжает работать и после первого клика, и сценарий снова сработает, если пользователь нажмёт на неё ещё раз (или другую кнопку того же сообщения). Это удобно для постоянного меню, на которое можно нажимать сколько угодно раз.
{% endhint %}

**Пример использования:** «Бот отправляет вопрос "Понравился сервис?" с кнопками "Да" и "Нет" → ветка "Да" отправляет благодарность, ветка "Нет" — просит оставить отзыв с описанием проблемы».

{% hint style="warning" %}
Эта возможность отличается от обычного блока «Ожидание события»: там вы вручную выбираете отдельное событие и настраиваете таймаут с отдельной веткой, а кнопка «Продолжить сценарий» создаёт ветвление автоматически, без отдельного блока ожидания на холсте.
{% endhint %}

## Динамические кнопки — кнопка на каждый элемент списка

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

1. В блоке «Отправить сообщение» добавьте кнопку и выберите для неё тип **«Динамический список»**.
2. Укажите переменную, в которой лежит массив (например, переменную, куда вебхук или блок «Записать переменную» сохранил список слотов).
3. Задайте шаблон текста кнопки — он применяется к каждому элементу массива по отдельности, и для каждого элемента генерируется своя кнопка с его данными.
4. Все получившиеся кнопки ведут по одному общему выходу — куда бы ни нажал пользователь, дальше сценарий идёт по одной и той же ветке. Чтобы узнать, какой именно элемент выбрал пользователь, включите **«Сохранить в переменные при клике»** и укажите, какие поля элемента в какие переменные сохранить — дальше по графу эти переменные можно использовать как обычные.

**Пример использования:** бот показывает свободные слоты записи на приём, полученные вебхуком, — пользователь нажимает на нужную дату, и она сохраняется в переменную, которую дальше подставляют в подтверждающее сообщение и в вебхук записи.

{% hint style="info" %}
На одно сообщение — максимум 20 кнопок (ограничение Telegram на инлайн-клавиатуру). Если элементов в массиве больше, лишние не показываются.
{% endhint %}

## Сохранение, тест и публикация

* Изменения в схеме сохраняются как **черновик** — можно редактировать сколько угодно раз, ничего не сломается, пока вы не опубликуете.
* Кнопка **«Запустить тест»** (значок play) позволяет проверить, как сработает схема на тестовых данных, без реальной отправки пользователям — удобно, чтобы убедиться, что всё настроено верно, прежде чем включать автоматизацию для всех.
* Когда всё готово — нажмите **«Опубликовать»**. С этого момента автоматизация начинает работать самостоятельно: отслеживает свой триггер и выполняет действия для всех подходящих пользователей, без вашего участия.
* Если в схеме есть ошибки (например, не выбрано событие для триггера, или действие не заполнено) — система покажет список того, что нужно исправить, и не даст опубликовать, пока ошибки не устранены.

{% hint style="info" %}
Опубликованная версия схемы не меняется на ходу. Если вы захотите что-то поправить в работающей автоматизации, изменения сохранятся как новая версия-черновик — старая версия продолжит работать как ни в чём не бывало, пока вы не опубликуете новую.
{% endhint %}

## Статусы автоматизации

| Статус          | Что значит                                                                    |
| --------------- | ----------------------------------------------------------------------------- |
| **Черновик**    | Схема ещё не опубликована, автоматизация не работает                          |
| **Активна**     | Автоматизация опубликована и работает                                         |
| **Остановлено** | Автоматизацию остановили вручную — она временно не срабатывает, но не удалена |
| **В архиве**    | Автоматизация архивирована                                                    |
| **Ошибка**      | Что-то пошло не так при выполнении — стоит проверить настройки действий       |

Чтобы временно отключить работающую автоматизацию — откройте её и нажмите **«Остановить»**. Включить заново можно публикацией нужной версии.

## Настройка параллельных запусков

Если один и тот же пользователь может запустить автоматизацию заново, пока предыдущий запуск ещё не закончился (например, при триггере «По событию» и частых событиях), можно настроить поведение через значок шестерёнки/слайдеров на холсте:

| Вариант                        | Что происходит                                                                                   |
| ------------------------------ | ------------------------------------------------------------------------------------------------ |
| **Параллельно (по умолчанию)** | Каждый запуск выполняется независимо, даже если предыдущий ещё не закончился                     |
| **Отменить предыдущее**        | Новый запуск отменяет ещё не завершённый предыдущий и начинает заново                            |
| **Игнорировать новые**         | Пока выполняется один запуск для пользователя, новые срабатывания триггера для него игнорируются |

## История версий и статистика

На странице автоматизации (не в конструкторе, а на основной странице с её настройками) доступны:

* **История версий** — все сохранённые черновики и опубликованные версии; любую можно открыть в конструкторе для редактирования или опубликовать заново.
* **Статистика** — сколько раз автоматизация запускалась, сколько раз завершилась с ошибкой, для скольких уникальных пользователей сработала, в виде графика за выбранный период.
* **Запуски (выполнения)** — список последних срабатываний автоматизации с указанием пользователя, статуса и времени; для неудачных запусков есть кнопка повторного запуска, а также журнал ошибок с указанием, на каком блоке схемы что-то пошло не так.

## Запуск автоматизации на выбранную аудиторию (как рассылка)

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

1. Перейдите в раздел **«Рассылки»** → **«Создать кампанию»**.
2. На шаге выбора типа кампании выберите карточку **«Запуск автоматизации»**.
3. Соберите аудиторию — тем же конструктором, что и для обычной рассылки (все пользователи, по условиям, по списку и т. д.).
4. Выберите нужную автоматизацию из списка **«Выберите воркфлоу для запуска»** — в списке доступны только уже опубликованные автоматизации.
5. Запустите кампанию — автоматизация выполнится для каждого пользователя из выбранной аудитории, как если бы для него сработал триггер.

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

## Удаление

Удалить автоматизацию можно из списка («Автоматизации» → значок корзины у нужной строки) или со страницы самой автоматизации. Удаление безвозвратно — вместе с автоматизацией удаляются все её версии и история запусков.

{% hint style="info" %}
Хотите управлять автоматизациями программно из своей системы, а не через дашборд? См. [документацию по API автоматизаций](/ru/api/automations.md).
{% endhint %}
