Перейти к содержимому

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

Тип узлаКатегорияВыходыОбязательная настройкаЧто делает
trigger_commentтриггер1post_id, когда post_scopespecificЗапускает кампанию, когда кто-то комментирует страницу
trigger_dmтриггер1нетЗапускает кампанию, когда кто-то отправляет странице личное сообщение
conditionлогика2 (Match / No Match)match_type, плюс text или keyword_list_id для типов сопоставления, которые их читаютСопоставляет текст сообщения и выбирает ветку, или паркует выполнение до прихода ответа
send_dmсообщение1, плюс один на каждую кнопку postbackmessage_type и ключи, которые читает этот типОтправляет личное сообщение: текст, изображение, карточка, или текст с кнопками
reply_commentкомментарии1textПублично отвечает под комментарием, который запустил выполнение
send_commentкомментарии1text, post_idПубликует новый комментарий на указанном посте
hide_commentкомментарии1нетСкрывает комментарий, который запустил выполнение
delete_commentкомментарии1нетУдаляет комментарий, который запустил выполнение
delayлогика1нетУдерживает выполнение и продолжает его позже
random_splitлогикапо одному на ветвьpathsОтправляет каждое выполнение по одной ветви, выбранной случайно
add_tagконтакт1tag_idsДобавляет теги контакту
remove_tagконтакт1tag_idsУдаляет теги у контакта
stopлогика0нетЗавершает выполнение
  • Категория: триггер
  • Выходы: 1, и подключается только к condition
  • Обязательная настройка: post_id, когда post_scopespecific
КлючТипЧто задаёт
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
}
  • Категория: триггер
  • Выходы: 1, и подключается только к condition
  • Обязательная настройка: нет
КлючТипЧто задаёт
unique_per_userлогическое значениеВключает ограничение “один раз на человека”, описанное ниже.

Запускает выполнение, когда кто-то отправляет подключённой странице личное сообщение. Ключа post_scope нет, потому что личное сообщение не привязано к посту. Действия с комментарием недоступны в кампании, чей триггер — trigger_dm.

unique_per_user — та же настройка, что и на trigger_comment, и ограничивает кампанию одним выполнением на человека.

{
"unique_per_user": false
}
  • Категория: логика
  • Выходы: 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
}
  • Категория: сообщение
  • Выходы: 1, плюс один дополнительный выход на каждую кнопку postback
  • Обязательная настройка: message_type и ключи, которые читает этот тип
КлючТипЧто задаёт
message_typeстрокаtext, image, card или text_with_buttons. Решает, какие ключи ниже читаются.
textстрокаТекст сообщения.
image_urlстрокаИзображение для сообщения image, и картинка на card.
titleстрокаЗаголовок на card.
subtitleстрокаВторая строка на card.
buttonsмассивКнопки на карточке или в сообщении с кнопками. Каждая запись несёт id, typeweb_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"
}
  • Категория: комментарии
  • Выходы: 1
  • Обязательная настройка: text
КлючТипЧто задаёт
textстрокаОтвет, публикуемый под комментарием-триггером.

Публикует публичный ответ под комментарием, который запустил выполнение. Переменные с именем отправителя в text подставляются перед публикацией ответа.

Узел недоступен в кампании, запускаемой trigger_dm, и холст отказывается размещать его после delete_comment.

{
"text": "Sent you the price list in a DM."
}
  • Категория: комментарии
  • Выходы: 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"
}
  • Категория: комментарии
  • Выходы: 1
  • Обязательная настройка: нет
КлючТипЧто задаёт
also_block_userлогическое значениеБлокирует автора комментария на том же шаге. Только Facebook.

Скрывает комментарий, который запустил выполнение.

also_block_user блокирует автора комментария на том же шаге и работает только на Facebook — опция отключена в кампании Instagram.

  • Категория: комментарии
  • Выходы: 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
}
  • Категория: логика
  • Выходы: по одной на каждую запись в paths
  • Обязательная настройка: paths
КлючТипЧто задаёт
pathsмассивОдна запись { "percent": number } на выход. Каждый процент от 0 до 100, а сумма не может превышать 100.

Распределяет трафик между ветками: каждое выполнение следует по одной ветви, выбранной случайно. Задайте один процент на ветвь на холсте; каждый от 0 до 100, а сумма не может превышать 100.

Считайте проценты распределением, которое вы запрашиваете, а не гарантированным соотношением, и подтвердите фактическое распределение в истории выполнений, прежде чем полагаться на него в чём-то важном.

Без настроенных процентов узел откатывается к двум равным ветвям.

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

{
"paths": [{ "percent": 70 }, { "percent": 30 }]
}
  • Категория: контакт
  • Выходы: 1
  • Обязательная настройка: tag_ids
КлючТипЧто задаёт
tag_idsмассивЧисловые идентификаторы тегов, которые нужно добавить.

Добавляет указанные теги контакту, для которого выполняется выполнение, наряду с тегами, которые контакт уже несёт.

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

{
"tag_ids": [12, 19]
}
  • Категория: контакт
  • Выходы: 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 завершает тестовое выполнение вместо планирования возобновления.