СправочникКампании
Типы узлов
Тринадцать типов узлов можно добавить в кампанию из палитры холста: два триггера, четыре узла логики, один узел сообщения, четыре действия с комментарием и два действия с контактом. Каждый тип несёт свои ключи настройки и фиксированное число выходов, и эти две вещи решают, что делает выполнение на этом узле и куда идёт дальше. Типы узлов, которые существуют в рантайме, но не имеют плитки в палитре, перечислены в схеме графа кампании.
| Тип узла | Категория | Выходы | Обязательная настройка | Что делает |
|---|---|---|---|---|
trigger_comment | триггер | 1 | post_id, когда post_scope — specific | Запускает кампанию, когда кто-то комментирует страницу |
trigger_dm | триггер | 1 | нет | Запускает кампанию, когда кто-то отправляет странице личное сообщение |
condition | логика | 2 (Match / No Match) | match_type, плюс text или keyword_list_id для типов сопоставления, которые их читают | Сопоставляет текст сообщения и выбирает ветку, или паркует выполнение до прихода ответа |
send_dm | сообщение | 1, плюс один на каждую кнопку postback | message_type и ключи, которые читает этот тип | Отправляет личное сообщение: текст, изображение, карточка, или текст с кнопками |
reply_comment | комментарии | 1 | text | Публично отвечает под комментарием, который запустил выполнение |
send_comment | комментарии | 1 | text, post_id | Публикует новый комментарий на указанном посте |
hide_comment | комментарии | 1 | нет | Скрывает комментарий, который запустил выполнение |
delete_comment | комментарии | 1 | нет | Удаляет комментарий, который запустил выполнение |
delay | логика | 1 | нет | Удерживает выполнение и продолжает его позже |
random_split | логика | по одному на ветвь | paths | Отправляет каждое выполнение по одной ветви, выбранной случайно |
add_tag | контакт | 1 | tag_ids | Добавляет теги контакту |
remove_tag | контакт | 1 | tag_ids | Удаляет теги у контакта |
stop | логика | 0 | нет | Завершает выполнение |
trigger_comment
Заголовок раздела «trigger_comment»- Категория: триггер
- Выходы: 1, и подключается только к
condition - Обязательная настройка:
post_id, когдаpost_scope—specific
| Ключ | Тип | Что задаёт |
|---|---|---|
post_scope | строка | all или specific. Отсутствующий ключ считается как all. |
post_id | строка | Пост, который слушает область specific. Панель настроек предлагает посты подключённой страницы. |
unique_per_user | логическое значение | Включает ограничение “один раз на человека”, описанное ниже. |
Запускает выполнение, когда на подключённую страницу приходит комментарий. При post_scope, установленном на specific, кампанию запускают только комментарии на посте, указанном post_id; все остальные комментарии на странице игнорируются.
unique_per_user ограничивает кампанию одним выполнением на человека.
{ "post_scope": "specific", "post_id": "104857392017465_998234511", "unique_per_user": true}trigger_dm
Заголовок раздела «trigger_dm»- Категория: триггер
- Выходы: 1, и подключается только к
condition - Обязательная настройка: нет
| Ключ | Тип | Что задаёт |
|---|---|---|
unique_per_user | логическое значение | Включает ограничение “один раз на человека”, описанное ниже. |
Запускает выполнение, когда кто-то отправляет подключённой странице личное сообщение. Ключа post_scope нет, потому что личное сообщение не привязано к посту. Действия с комментарием недоступны в кампании, чей триггер — trigger_dm.
unique_per_user — та же настройка, что и на trigger_comment, и ограничивает кампанию одним выполнением на человека.
{ "unique_per_user": false}condition
Заголовок раздела «condition»- Категория: логика
- Выходы: 2 — выход 0 это Match, выход 1 это No Match
- Обязательная настройка:
match_type, плюсtextилиkeyword_list_idдля типов сопоставления, которые их читают
| Ключ | Тип | Что задаёт |
|---|---|---|
match_type | строка | any, contains, exact или keyword_list. Решает сравнение и то, какие ключи ниже читаются. |
text | строка | Текст, с которым сравнивают contains и exact. |
keyword_list_id | число | Сохранённый список ключевых слов, с которым сравнивает keyword_list. |
reverse_keywords | логическое значение | Инвертирует результат сравнения keyword_list. |
wait_for_reply | логическое значение | Паркует выполнение на этом узле вместо оценки сообщения, которое до него дошло. |
filter_images | логическое значение | Медиафильтр на входящем сообщении. |
filter_gifs | логическое значение | Медиафильтр на входящем сообщении. |
filter_links | логическое значение | Медиафильтр на входящем сообщении. |
Оценивает сообщение и отправляет выполнение через выход Match или No Match. Правила сопоставления ключевых слов описывает, с чем сравнивает каждый тип сопоставления и какой выход он производит.
wait_for_reply паркует выполнение на этом узле вместо немедленной оценки, и оно остаётся там, пока человек не ответит. Состояния выполнения описывает, сколько выживает припаркованное выполнение и что его будит.
Медиафильтры — это отдельные настройки на том же узле, не участвующие в сравнении ключевых слов. Сопоставление комментариев со списками ключевых слов описывает построение списка, на который указывает keyword_list_id.
{ "match_type": "keyword_list", "keyword_list_id": 41, "reverse_keywords": false, "wait_for_reply": true}send_dm
Заголовок раздела «send_dm»- Категория: сообщение
- Выходы: 1, плюс один дополнительный выход на каждую кнопку
postback - Обязательная настройка:
message_typeи ключи, которые читает этот тип
| Ключ | Тип | Что задаёт |
|---|---|---|
message_type | строка | text, image, card или text_with_buttons. Решает, какие ключи ниже читаются. |
text | строка | Текст сообщения. |
image_url | строка | Изображение для сообщения image, и картинка на card. |
title | строка | Заголовок на card. |
subtitle | строка | Вторая строка на card. |
buttons | массив | Кнопки на карточке или в сообщении с кнопками. Каждая запись несёт id, type — web_url или postback, title, и url для кнопки web_url. |
buttons_text | строка | Одна подпись кнопки на строку, для сообщения text_with_buttons. Каждая строка становится кнопкой postback, чья полезная нагрузка — эта подпись. |
Отправляет одно личное сообщение человеку, для которого выполняется выполнение. message_type выбирает, какие ключи читаются: text для обычного сообщения, image_url для изображения, title, subtitle и image_url для карточки, и buttons_text для текста с кнопками.
Переменные с именем отправителя в text, title и subtitle подставляются перед отправкой сообщения.
Кнопка postback добавляет узлу собственный выход, так что выполнение может продолжиться по разной ветке в зависимости от того, какую кнопку нажал человек.
Узел без какой-либо настройки ничего не отправляет, и выполнение переходит к следующему узлу.
{ "message_type": "text_with_buttons", "text": "Thanks for commenting. Which size do you want?", "buttons_text": "Small\nMedium\nLarge"}reply_comment
Заголовок раздела «reply_comment»- Категория: комментарии
- Выходы: 1
- Обязательная настройка:
text
| Ключ | Тип | Что задаёт |
|---|---|---|
text | строка | Ответ, публикуемый под комментарием-триггером. |
Публикует публичный ответ под комментарием, который запустил выполнение. Переменные с именем отправителя в text подставляются перед публикацией ответа.
Узел недоступен в кампании, запускаемой trigger_dm, и холст отказывается размещать его после delete_comment.
{ "text": "Sent you the price list in a DM."}send_comment
Заголовок раздела «send_comment»- Категория: комментарии
- Выходы: 1
- Обязательная настройка:
text,post_id
| Ключ | Тип | Что задаёт |
|---|---|---|
text | строка | Комментарий, публикуемый на указанном посте. |
post_id | строка | Пост, на котором публикуется комментарий. |
Публикует новый комментарий верхнего уровня на посте, указанном post_id. Отката к посту, из которого пришло выполнение, нет: без post_id узел ничего не делает, и выполнение переходит к следующему узлу.
Узел недоступен в кампании, запускаемой trigger_dm.
{ "text": "Restocked today — sizes S to XL are back.", "post_id": "104857392017465_998234511"}hide_comment
Заголовок раздела «hide_comment»- Категория: комментарии
- Выходы: 1
- Обязательная настройка: нет
| Ключ | Тип | Что задаёт |
|---|---|---|
also_block_user | логическое значение | Блокирует автора комментария на том же шаге. Только Facebook. |
Скрывает комментарий, который запустил выполнение.
also_block_user блокирует автора комментария на том же шаге и работает только на Facebook — опция отключена в кампании Instagram.
delete_comment
Заголовок раздела «delete_comment»- Категория: комментарии
- Выходы: 1
- Обязательная настройка: нет
| Ключ | Тип | Что задаёт |
|---|---|---|
also_block_user | логическое значение | Блокирует автора комментария на том же шаге. Только Facebook. |
Удаляет комментарий, который запустил выполнение. also_block_user работает только на Facebook, так же как на hide_comment.
После этого узла холст отклоняет reply_comment и hide_comment, потому что комментария, на который эти узлы должны бы действовать, больше не существует.
- Категория: логика
- Выходы: 1
- Обязательная настройка: нет
| Ключ | Тип | Что задаёт |
|---|---|---|
delay_seconds | число | Сколько ждёт выполнение, от 1 до 31536000 секунд. |
only_if_no_reply | логическое значение | Отменяет остаток выполнения, если человек ответил, пока шло ожидание. |
Удерживает выполнение и планирует его продолжение позже. delay_seconds ограничивается диапазоном от 1 до 31536000 секунд (365 дней), и значение вне этого диапазона обрезается без ошибки. Узел без настроенного значения ждёт 60 секунд.
only_if_no_reply проверяется, когда ожидание истекает: если человек ответил в любой момент во время него, выполнение завершается на задержке вместо продолжения по ветке.
{ "delay_seconds": 3600, "only_if_no_reply": true}random_split
Заголовок раздела «random_split»- Категория: логика
- Выходы: по одной на каждую запись в
paths - Обязательная настройка:
paths
| Ключ | Тип | Что задаёт |
|---|---|---|
paths | массив | Одна запись { "percent": number } на выход. Каждый процент от 0 до 100, а сумма не может превышать 100. |
Распределяет трафик между ветками: каждое выполнение следует по одной ветви, выбранной случайно. Задайте один процент на ветвь на холсте; каждый от 0 до 100, а сумма не может превышать 100.
Считайте проценты распределением, которое вы запрашиваете, а не гарантированным соотношением, и подтвердите фактическое распределение в истории выполнений, прежде чем полагаться на него в чём-то важном.
Без настроенных процентов узел откатывается к двум равным ветвям.
Выбранная ветвь решает, какой выход берёт выполнение. Если у этого выхода нет связи, выполнение завершается на этом узле.
{ "paths": [{ "percent": 70 }, { "percent": 30 }]}add_tag
Заголовок раздела «add_tag»- Категория: контакт
- Выходы: 1
- Обязательная настройка:
tag_ids
| Ключ | Тип | Что задаёт |
|---|---|---|
tag_ids | массив | Числовые идентификаторы тегов, которые нужно добавить. |
Добавляет указанные теги контакту, для которого выполняется выполнение, наряду с тегами, которые контакт уже несёт.
Когда за выполнением нет контакта, узел ничего не меняет, и выполнение переходит к следующему узлу.
{ "tag_ids": [12, 19]}remove_tag
Заголовок раздела «remove_tag»- Категория: контакт
- Выходы: 1
- Обязательная настройка:
tag_ids
| Ключ | Тип | Что задаёт |
|---|---|---|
tag_ids | массив | Числовые идентификаторы тегов, которые нужно удалить. |
Удаляет указанные теги у контакта, для которого выполняется выполнение, и оставляет остальные теги этого контакта на месте. Поля контакта перечисляет остальную часть записи контакта.
Когда за выполнением нет контакта, узел ничего не меняет, и выполнение переходит к следующему узлу.
{ "tag_ids": [19]}- Категория: логика
- Выходы: 0
- Обязательная настройка: нет
Завершает выполнение, как только до него доходят, и записывает, что поток был остановлен. У узла нет выхода, так что после него ничего нельзя подключить.
Типы узлов вне палитры
Заголовок раздела «Типы узлов вне палитры»Ещё восемь типов узлов существуют в рантайме, не несут плитки в палитре и панели настроек, и никогда не появляются в кампании, построенной на холсте. Схема графа кампании называет их и описывает, что делает выполнение на каждом из них. Считайте их типами только для рантайма, а не функциями.
Примечания
Заголовок раздела «Примечания»- Выходы нумеруются с 0.
conditionиспользует 0 для Match и 1 для No Match,random_splitиспользует одно число на ветвь в настроенном порядке, а каждый другой узел продолжает с 0. - Выполнение следует по связи, выходящей из выхода, который выбрал узел. Когда у этого выхода нет связи, выполнение завершается на этом узле.
- Узел, чьё действие вызывает ошибку, записывает ошибку за выполнением и не продвигается, так что выполнение не идёт дальше этого узла.
- Выполнение, которое приходит на узел, уже посещённый, завершается ошибкой цикла с именем этого узла. Каждый узел запускается не более одного раза за выполнение.
- Тип узла, который рантайм не распознаёт, пропускается с предупреждением, и выполнение продолжается с выхода 0.
- Действие с комментарием, у которого нет комментария, на который можно подействовать, ничего не делает, и выполнение продолжается.
- Плитки палитры фильтруются по платформе кампании, так что палитра в кампании Instagram может предлагать меньше типов узлов, чем палитра в кампании Facebook.
- То, какие типы узлов могут идти за какими, применяется во время перетаскивания связи, а не при сохранении кампании. Схема графа кампании перечисляет эти ограничения.
- В тестовом выполнении
add_tagиremove_tagзаписывают, что они бы сделали, и оставляют контакт нетронутым, аdelayзавершает тестовое выполнение вместо планирования возобновления.
Связанное
Заголовок раздела «Связанное»- Схема графа кампании — как хранятся узлы, связи и настройка
- Построение кампании — добавление и подключение этих узлов на холсте
- Правила сопоставления ключевых слов — с чем сравнивает каждый тип сопоставления
condition - Состояния выполнения — как выглядит выполнение, проходя через эти узлы
- Поля контакта — запись контакта, в которую пишут узлы тегов