---
title: "Постройте кампанию на холсте"
description: "Создайте кампанию, добавьте и подключите узлы, настройте их, затем сохраните и активируйте — два отдельных действия, которые запускают кампанию на одной странице."
canonical: https://docs.afp.monster/ru/guides/build-a-campaign
updated: 2026-08-19
pageType: guide
---

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

![Холст кампании: палитра узлов слева, выбор страницы и управление сохранения и активации в заголовке, граф в центре, и панель настроек узла справа](../../../../assets/screenshots/guides/build-a-campaign/canvas-anatomy.webp)

## Что вам нужно сначала

- Подключённая Facebook-страница или бизнес-аккаунт Instagram. См. [Подключение страницы](/ru/start/connect-a-page).
- Активная подписка с местом для ещё одной кампании. Заголовок списка кампаний показывает ваш счётчик кампаний против лимита тарифа. См. [Тарифы и лимиты](/ru/reference/plans-and-quotas).
- Список ключевых слов, если кампания совпадает с текстом сообщения против него. См. [Сопоставление комментариев со списками ключевых слов](/ru/guides/keyword-lists).

## Как создать кампанию и выбрать её страницу?

1. Откройте **Кампании** (Campaigns) → **+ Новая автоматизация** (+ New automation). Открывается пустой холст.
2. Выберите подключённую страницу в заголовке холста. AFP выводит платформу из этой страницы: самостоятельный бизнес-аккаунт Instagram создаёт кампанию Instagram, Facebook-страница создаёт кампанию Facebook.
3. Назовите кампанию в заголовке.
4. Постройте граф, как ниже.
5. Нажмите **Сохранить кампанию**.

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

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

## Как добавить узлы и подключить их?

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

1. Перетащите плитку из палитры на холст.
2. Нажмите **+** заполнитель на ручке выхода узла, затем выберите тип — узел создаётся и подключается за одно движение.
3. Нажмите правой кнопкой на холст и выберите **Добавить узел** (Add node).

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

Связи помечены от выхода, который они покидают: условие имеет **Match** и **No Match**, случайное разделение — по одному на каждое плечо, каждый другой узел — один выход.

```d2 title="A campaign that replies publicly then sends a DM on a keyword match, and stops otherwise"
direction: right
trigger: trigger_comment
cond: "condition\nсписок ключевых слов" {shape: diamond}
reply: reply_comment
dm: send_dm
halt: stop
trigger -> cond
cond -> reply: Match
reply -> dm
cond -> halt: "No Match"
```

Добавление, перемещение, подключение и настройка всё происходят в вашем браузере, и позиции узлов хранятся с графом, так что повторное открытие кампании возвращает каждый узел туда, где вы его оставили. Ничего не достигает AFP, пока вы не сохраните.

## Какие связи холст отклоняет?

| Что вы не можете подключить | Почему |
|---|---|
| Что-либо в узел-триггер | Триггер запускает кампанию, так что у него нет входа |
| Узел сам к себе | Узел не может идти сразу после самого себя |
| Любая связь, которая позволяет графу достичь узла, который он уже прошёл | Граф запускается только вперёд |
| Вторая связь в узел | Узел принимает одну входящую связь |
| Вторая связь из одной ручки выхода | Одна ручка несёт одну связь — ветвитесь с условием или случайным разделением |
| Узел-триггер к чему-либо, кроме условия | Первый узел после триггера всегда условие |
| Условие к другому условию | Условия не могут быть сцеплены |
| Действие комментария, когда триггер — `trigger_dm` | Кампания, запускаемая через ЛС, не имеет комментария, на который можно действовать |
| `reply_comment` или `hide_comment` после `delete_comment` | Комментарий больше не существует в этот момент |

Два редактирования также удаляют связи, которые вы уже нарисовали, потому что ручка, из которой они пришли, исчезает: удаление кнопки из узла `send_dm` сбрасывает ветку, покинувшую эту кнопку, и установка условия на совпадение любого сообщения сбрасывает его ветку **No Match**.

## Как настроить узел?

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

| Узел | Что вы настраиваете |
|---|---|
| `trigger_comment` | Каждый пост на странице или один конкретный пост, и может ли один человек запускать его более одного раза |
| `trigger_dm` | Может ли один человек запускать его более одного раза |
| `condition` | Тип совпадения — любое сообщение, содержит, точно, или список ключевых слов — текст или список для совпадения, следует ли обратить результат ключевых слов, следует ли ждать ответ, и фильтры для изображений, GIF и ссылок |
| `send_dm` | Тип сообщения (текст, изображение, карточка, или текст с кнопками) и его содержимое |
| `reply_comment` / `send_comment` | Текст комментария; `send_comment` также нуждается в посте, чтобы комментировать |
| `delay` | Сколько ждать, от 1 до 31536000 секунд, и продолжать ли только если человек не ответил, пока кампания ждала |

Остальные типы принимают по одной настройке каждый: процент на каждое плечо `random_split` (от 0 до 100, в сумме не более 100), теги для применения на `add_tag` и `remove_tag`, и следует ли блокировать автора на `hide_comment` и `delete_comment` (только Facebook). `stop` не имеет настроек. [Типы узлов](/ru/reference/node-types) перечисляет каждое поле.

Узел с недействительной конфигурацией помечается на холсте, и **Сохранить кампанию** отключена с сообщением «Исправьте ошибки для сохранения» (Fix errors to save), пока вы не исправите его.

## В чём разница между сохранением и активацией?

Сохранение хранит граф. Активация решает, разрешено ли сохранённому графу запускаться. Кампания нуждается в обоих.

Каждое сохранение записывает **новую версию** графа. Выполнение, уже в полёте, остаётся на версии, на которой оно началось, так что редактирование никогда не меняет выполнение в процессе. Только триггер текущей версии запускает новые выполнения, и более старые версии очищаются, как только ни одно выполнение на них не ссылается.

Где вы переключаете активацию, меняет то, что проверяется:

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

Сохранение пустого графа разрешено: кампания сохраняет своё имя и страницу, но не имеет триггера, так что никакое событие не может запустить её.

Выключение кампании оставляет её страницу подписанной на события. Эта подписка заканчивается только когда последняя кампания на этой странице удалена.

:::note
Сохранение не активирует. Активная кампания запускает последнюю версию, которую вы сохранили, а не редактирования, всё ещё открытые в вашем браузере.
:::

## Как найти кампанию снова?

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

| Управление | Что оно делает |
|---|---|
| Поиск | Фильтрует по имени кампании, совпадая с любой его частью. Он не ищет внутри графа. |
| Фильтр страницы | Сужает список до кампаний, привязанных к одной подключённой странице. |
| Сортировка | Упорядочивает по тому, когда каждая кампания была обновлена в последний раз, самые новые первые, и может быть обращена. |
| Пагинация | Список возвращается по странице за раз, так что более старые кампании находятся за пагинатором, а не отсутствуют. |

Если ваш аккаунт сидит под мастер-аккаунтом, список также покрывает кампании на страницах в этом общем масштабе, а не только страницы, которые вы добавили сами. См. [Управление профилями под одним аккаунтом](/ru/guides/profiles-and-master-accounts).

## Как переименовать, дублировать или удалить кампанию?

**Переименование** редактированием имени в заголовке холста. Новое имя записывается при вашем следующем нажатии **Сохранить кампанию**, вместе с привязкой страницы и активным состоянием — эти три изменяются вместе, отдельно от самого графа.

**Дублирование** — не то, что холст делает для вас: создайте вторую кампанию и постройте её граф заново. 

**Удаление** из ряда кампании, затем подтвердите. Удаление убирает кампанию, каждую сохранённую версию её графа и её историю выполнений, включая тестовые выполнения. Если это была последняя кампания на этой странице, AFP также перестаёт подписываться на события этой страницы.

:::caution
Удаление кампании удаляет её выполнения вместе с ней, так что история, которую вы бы использовали, чтобы понять, что она делала, тоже уходит. Прочитайте её сначала — см. [Тест и отладка кампаний](/ru/guides/test-and-debug-campaigns).
:::

## Почему я вижу форму вместо холста?

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

Кнопка **Форма** (Form) в заголовке холста переключается на этот более старый вид формы. Узлы без эквивалента там — случайное разделение, ЛС с несколькими кнопками, много-теговые операции — блокируют переключение: диалог называет их и предлагает удалить их с холста. Условие, чья конфигурация только частично отображается, создаёт предупреждение вместо этого, и его узел остаётся.

Ничего не записывается, когда вы переключаете виды. Активное состояние переносится, и вы должны сохранить в виде формы, чтобы что-то сохранилось.

## Почему моя кампания не сохраняется и не срабатывает?

| Симптом | Причина | Исправление |
|---|---|---|
| **Сохранить кампанию** отключена, показывает «Исправьте ошибки для сохранения» (Fix errors to save) | Узел имеет недействительную конфигурацию | Заполните панель настроек помеченного узла |
| Уведомление говорит, что кампания не может быть активирована без страницы | Переключатель **Активно** был включён до выбора страницы | Выберите страницу в заголовке холста |
| Сохранение с включённым переключателем **Активно** перечисляет ошибки графа и не записывает ничего | Нет узла-триггера, или узел без входящей связи | Подключите каждый узел назад к триггеру, затем сохраните |
| Создание кампании отклоняется с ошибкой подписки | Подписка неактивна или истекла, или лимит кампаний тарифа заполнен | Обновите подписку или удалите кампанию, которую вы больше не запускаете |
| Кампания в списке, но её холст пуст | Ряд кампании был создан, и её первое сохранение графа не прошло | Перестройте узлы и сохраните снова |
| Кампания включена, и ничего не происходит | Текущая версия не имеет узла-триггера | Добавьте триггер, сохраните, затем подтвердите, что переключатель всё ещё включён |
| Одна из двух вкладок браузера не может сохранить | Версии пронумерованы на кампанию, так что одновременные сохранения сталкиваются, и одна из них теряет | Обновите холст, проверьте, какие изменения пережили, и сохраните снова |
| Кампания, которая раньше открывалась, теперь возвращает «не найдено» (not found) | Страница, к которой она привязана, вышла из вашего масштаба, например, когда ссылка мастер-аккаунта была удалена | Восстановите ссылку или перестройте кампанию на странице, которой вы владеете |

## Связанное

- [Маршрутизация комментариев в ЛС](/ru/guides/route-comments-to-dm) — четырёхузловой паттерн, с которого начинают большинство кампаний.
- [Типы узлов](/ru/reference/node-types) — каждый узел и каждое поле, которое он принимает.
- [Тест и отладка кампаний](/ru/guides/test-and-debug-campaigns) — запустите тестовое выполнение и прочитайте путь, который оно прошло.
- [Схема графа кампании](/ru/reference/campaign-graph-schema) — как узлы, рёбра и версии подходят вместе.
- [Отправьте свой первый автоответ](/ru/start/first-auto-reply) — самая короткая версия этой страницы.
