---
title: "Маршрутизируйте комментарии в ЛС"
description: "Отправьте личное сообщение каждому, кто комментирует ключевое слово на вашем посте, и сначала ответьте публично, используя четыре узла на холсте кампании — триггер, условие, ответ и ЛС."
canonical: https://docs.afp.monster/ru/guides/route-comments-to-dm
updated: 2026-08-19
pageType: guide
---

Четыре узла делают это. Узел `trigger_comment` слушает подключённую страницу, узел `condition` совпадает с текстом комментария против списка ключевых слов, узел `reply_comment` отвечает публично под комментарием, и узел `send_dm` отправляет личное сообщение. Подключите их в этом порядке, сохраните граф и включите кампанию — следующий комментарий, который совпадёт, получит оба ответа.

![Четырёхузловая кампания: триггер комментария, условие на списке ключевых слов, публичный ответ на комментарий на выходе Match, и узел отправки ЛС после него](../../../../assets/screenshots/guides/route-comments-to-dm/four-node-graph.webp)

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

- Кампания на подключённой странице, открытая на холсте. См. [Построение кампании на холсте](/ru/guides/build-a-campaign).
- Список ключевых слов, хранящий слова, которые вы хотите поймать. См. [Сопоставление комментариев со списками ключевых слов](/ru/guides/keyword-lists).

## Как отправить ЛС каждому, кто комментирует ключевое слово на моём посте?

```d2 title="The four-node comment-to-DM campaign: trigger, keyword condition, public reply, private message"
direction: down
trigger: "trigger_comment\nвсе посты или один пост"
cond: "condition\nсписок ключевых слов" {shape: diamond}
reply: "reply_comment\nпубличный ответ"
dm: "send_dm\nличное сообщение"
halt: stop
trigger -> cond
cond -> reply: Match
reply -> dm
cond -> halt: "No Match"
```

1. Добавьте узел `trigger_comment`. Выберите, наблюдает ли он за каждым постом на странице или за одним конкретным постом; конкретный пост нуждается в самом посте, выбранном в панели настроек.
2. Подключите триггер к узлу `condition`. Триггер подключается только к условию, так что этот шаг не опционален.
3. В условии установите тип совпадения на **Список ключевых слов** (Keyword list) и выберите ваш список. Комментарии, содержащие одно из его слов, покидают выход **Match**; всё остальное покидает **No Match**.
4. От выхода **Match** добавьте узел `reply_comment` и напишите публичный ответ.
5. Подключите `reply_comment` к `send_dm` и напишите личное сообщение. ЛС может быть текстом, изображением, карточкой или текстом с кнопками.
6. От выхода **No Match** добавьте узел `stop` — или оставьте его неподключённым, что заканчивает выполнение так же хорошо, но труднее читать на холсте.
7. Нажмите **Сохранить кампанию** (Save campaign), затем включите кампанию и подтвердите.

И публичный ответ, и ЛС могут обращаться к комментатору по имени через переменную шаблона. 

:::note
Узлы запускаются в порядке, в котором вы их подключаете, так что публичный ответ публикуется до отправки ЛС. Расположение `send_dm` первым тоже работает — это меняет, какое сообщение комментатор видит первым.
:::

## Зачем публично отвечать также, как и отправлять ЛС?

Два ответа достигают разных аудиторий. Узел `reply_comment` публикует под комментарием, где все, читающие пост, видят его. Узел `send_dm` достигает одного человека: комментатора.

Публичный ответ также даёт ЛС место, откуда прийти. AFP доставляет первое ЛС выполнения как частный ответ на комментарий, который его запустил, и обращается к человеку напрямую для каждого сообщения после этого.

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

То, конвертирует ли пара лучше, чем одно ЛС — это утверждение о результатах, а не о поведении. 

## Что такое 24-часовое окно сообщений?

Facebook и Instagram ограничивают, когда страница может писать человеку, и этот лимит описывается как 24-часовое окно. AFP работает в нём, обращаясь к первому ЛС выполнения через триггерный комментарий, а не через человека, и переключаясь на человека для сообщений, следующих за ним.



ЛС, которое платформа отклоняет, записывается как ошибка на этом выполнении, и выполнение не продвигается дальше узла `send_dm`. Узлы после него никогда не запускаются, вот почему кампания, чьё ЛС часто проваливается, выглядит как "публичный ответ сработал, и ничего другого не сделал".

## Стоит ли скрывать комментарий после ответа?

Добавьте узел `hide_comment` после `reply_comment`, когда комментарий — это то, что вы не хотите оставлять на посте — вопрос о цене, на который вы отвечаете приватно, или повторяющаяся фраза спама. На Facebook тот же узел может заблокировать автора комментария; эта опция недоступна на Instagram.

Скрытие — плохой выбор в трёх случаях:

- **Публичный ответ — это точка.** Скрытие убирает комментарий из публичной ветки, так что обмен, который вы опубликовали для других читателей, больше не является частью разговора, который они видят. 
- **Кампания запускается через ЛС.** Действия комментария недоступны, когда триггер — `trigger_dm`, так что холст отклоняет подключение: выполнение, запущенное через ЛС, не имеет комментария, на который можно действовать.
- **Вы хотели, чтобы комментарий был убран навсегда.** Это `delete_comment`, и он преграждает остальную часть паттерна: холст отклоняет `reply_comment` или `hide_comment` где-либо после него, потому что комментарий больше не существует.

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

## Что если я хочу другой набор комментариев?

Четыре настройки меняют то, что паттерн ловит, и ни одна из них не нуждается в другом узле.

| Цель | Настройка | Эффект |
|---|---|---|
| Ответить каждому человеку один раз | Настройка "один раз на человека" триггера | Человек, который комментирует снова, не запускает другое выполнение |
| Следить за одним постом вместо всей страницы | Пост-масштаб триггера, установленный на конкретный пост | Комментарии на каждом другом посте игнорируются |
| Поймать каждый комментарий, что бы он ни говорил | Тип совпадения условия, установленный на любое сообщение | Условие перестаёт ветвиться: его выход **No Match** исчезает, и подключение, уже покидающее этот выход, сбрасывается |
| Совпасть со всем, кроме ваших ключевых слов | Настройка обратных ключевых слов условия | Комментарии, не содержащие ни одного из слов списка, покидают **Match** |
| Пропустить комментарии, несущие изображение, GIF или ссылку | Фильтры изображения, GIF и ссылки условия | Эти комментарии маршрутизируются в **No Match** вместо ответа |

## Почему моя кампания не отправляет ЛС?

| Симптом | Причина | Исправление |
|---|---|---|
| Никакой комментарий не создаёт ничего | Кампания выключена, или граф с триггером никогда не был сохранён | Сохраните граф, затем включите кампанию — только триггер в текущей сохранённой версии запускает выполнения |
| Публичный ответ появляется, ЛС никогда не приходит | ЛС было отказано, и ошибка была записана на выполнении, которое остановилось на этом узле | Откройте выполнение и прочитайте узел, на котором оно остановилось. См. [Тест и отладка кампании](/ru/guides/test-and-debug-campaigns) |
| Каждый комментарий совпадает, включая те, без ваших ключевых слов | Условие указывает на список ключевых слов, который был удалён, или на пустой — оба падают в совпадение | Укажите условие на список, который существует и имеет слова в нём |
| Человек комментирует дважды, и только первый комментарий отвечает | Один человек не может иметь два выполнения одной и той же кампании, запущенных одновременно; совпадающий комментарий, прибывающий во время одного, пропускается | Нечего исправлять — или сократите граф, чтобы выполнения заканчивались быстрее |
| Комментарии на ваших других постах игнорируются | Триггер привязан к одному конкретному посту | Переключите триггер на все посты или укажите его на пост, на котором вы тестируете |
| Ваш собственный тестовый комментарий ничего не делает | Комментарии, которые страница публикует как сама, никогда не триггерят кампанию | Комментируйте с личного профиля вместо от имени страницы |
| Один комментарий создаёт два ЛС | Две активные кампании на одной странице обе совпадают с ним, и каждая запускает своё выполнение | Деактивируйте кампанию, которую вы не используете, или сузьте один список ключевых слов |
| Узел `send_comment` не публикует ничего | `send_comment` нуждается в посте, на который он должен комментировать, и не делает ничего без него | Выберите пост в панели настроек этого узла или используйте `reply_comment`, чтобы ответить под триггерным комментарием |

## Связанное

- [Построение кампании на холсте](/ru/guides/build-a-campaign) — создание, сохранение и активация кампании, в которой живёт этот паттерн.
- [Сопоставление комментариев со списками ключевых слов](/ru/guides/keyword-lists) — создание и повторное использование списка, против которого условие совпадает.
- [Типы узлов](/ru/reference/node-types) — каждое поле на `trigger_comment`, `condition`, `reply_comment` и `send_dm`.
- [Тест и отладка кампании](/ru/guides/test-and-debug-campaigns) — запустите этот паттерн без публикации чего-либо, и прочитайте, что сделало каждое выполнение.
- [Модерация комментариев](/ru/guides/comment-moderation) — скрытие, удаление и блокировка за пределами одной кампании.
