Связи реакций

Реакции редко работают в одиночку — они вызывают друг друга кнопками, цепочками, веткой «иначе», ответами в диалоге и так далее. Связи реакций показывают этот граф переходов: для любой реакции видно, куда она ведёт (исходящие связи) и откуда в неё приходят (входящие связи). Это помогает не потеряться в больших сценариях и безопасно удалять реакции.

Что такое связь

Связь — это направленный переход от одной реакции к другой, помеченный механизмом, который этот переход породил. Платформа обходит реакцию целиком и собирает все исходящие переходы, отбрасывая ссылки на саму себя и пустые цели, а одинаковые переходы схлопывает. Список связей доступен из редактора реакции и по API: GET /api/bots/{id}/reactions/{id}/links.

Входящие и исходящие

  • Исходящие — на какие реакции ссылается текущая (её кнопки, цепочки, ветка «иначе» и т. д.).
  • Входящие — какие реакции ссылаются на текущую. Полезно перед удалением: если на реакцию кто-то ссылается, удаление разорвёт сценарий.

12 механизмов связей

  • Кнопка (button) — inline-кнопка типа «Вызов реакции» открывает другую реакцию при нажатии.
  • Замена кнопкой (button_replace) — кнопка с поведением «заменить сообщение» подставляет содержимое привязанной реакции.
  • Динамическая кнопка (dynamic_button) — кнопка из блока «Динамические кнопки из списка» ведёт в реакцию. См. Динамические кнопки и параметры.
  • Блок «Реакция» (block) — блок сообщения, который вызывает другую реакцию по ходу отправки.
  • Цепная реакция (chain) — действие «Цепная реакция» запускает другую реакцию.
  • Ветка «иначе» (else) — если условия не выполнились, управление уходит в указанную реакцию.
  • Веб-запрос: успех (web_success) — реакция, запускаемая при успешном веб-запросе.
  • Веб-запрос: ошибка (web_error) — реакция, запускаемая при ошибке веб-запроса.
  • Ожидаемый ответ (expected_answer) — реакция, которая срабатывает на ответ пользователя в шаге диалога.
  • Таймаут ожидания (expected_timeout) — реакция, срабатывающая, если ответа не было до таймаута.
  • Следующая реакция (goto_next) — действие «Следующая реакция» передаёт управление следующей подходящей реакции в списке.
  • Сценарий (flow) — реакция, привязанная к завершению сценария (flow).

Зачем смотреть граф

  • Навигация по сценарию — быстро перейти к связанной реакции, не ища её в списке.
  • Безопасное удаление — увидеть входящие связи и не сломать переходы.
  • Аудит — проверить, что все ветки сценария ведут куда нужно и нет «висящих» переходов.

Что дальше