Методы запуска сценариев в чат-ботах

Как сценарий (узел) бота запускается извне — двумя разными путями: реальным пользователем (диплинк, пуш, API) и разработчиком для проверки во время разработки (скрытая кнопка, отладка).

Методы запуска сценария для пользователя

Диплинк (start-параметр мессенджера)

Внешний запуск конкретного сценария бота — по прямой ссылке с параметром start, которую пользователь открывает из рассылки, сайта, QR-кода и т.д.

Создаётся в разделе Маркетинг → Лидогенерация → Диплинки кнопкой «Создать диплинк»: указываем название диплинка и посадочный узел — узел чат-бота, который откроется пользователю после перехода по ссылке.

После создания на вкладке «Ссылки» карточки диплинка появляются готовые ссылки по каждому подключённому каналу:

Для Telegram диплинк сразу даёт три ссылки:

  1. Refer-ссылка (refer.id/...) — в неё можно подставлять произвольные дополнительные параметры, например UTM-метки: они сохранятся автоматически.
  2. Стандартная ссылка (t.me/...?start=...) — обычная ссылка для подключённого мессенджера, подходит для большинства случаев (рассылки, сайт, QR-код).
  3. Ссылка tg://resolve?... — предназначена для размещения внутри самого Telegram (например, в тексте сообщений/кнопках внутри других ботов или чатов), а не для внешних каналов.

Внутри параметра start зашит идентификатор конкретного узла (c_14377) — по нему бот при старте открывает нужный сценарий.

Пуш

Push-уведомление может не просто напомнить о боте, а сразу открыть пользователю конкретный узел при переходе по нему — с помощью тега push_message.node:

{% datetime_now as current_time %}
{# перс. пуш: через 1 мин. #}
{% push_message.node "НАЗВАНИЕ УЗЛА" launch_at=current_time|add_minutes:'1'|date:'Y-m-d H:i' %}

launch_at — обязательный параметр (нужно всегда указывать время отправки, минимум через минуту от текущего момента). Подробнее про эту механику, отмену запланированного пуша и сравнение с автоворонками — в статье ⏳ Задержка перед отправкой: отложенные пуши или автоворонка.

API

Запуск узла сценария для конкретного пользователя можно вызвать и снаружи платформы — HTTP-запросом.

POST https://dashboard.fstrk.io/api/partners/push-messages/

Заголовки:

Content-Type: application/json
bot-key: <_>

Тело запроса состоит из двух блоков: идентификация получателя и содержимое.

Идентификация получателя (один из вариантов):

"chat": {
    "uuid": "00000000-0000-0000-0000-000000000000"
}
"chat": {
    "telegram_id": 123456789
}
"chat": {
    "telegram_username": "username"
}
"chat": {
    "max_id": 123456789
}
"chat": {
    "vkontakte_id": 123456789
}
"profile": {
    "phone_number": "79991234567"
}

Номер телефона указывается в формате E.164.

Содержимое (один из вариантов):

"content": {
    "type": "TEXT",
    "text": "Текст сообщения"
}
"content": {
 "type": "NODE",
 "node": {
    "name": "Имя узла"
},
 "get_params": {
    "foo": "bar"
}
}

get_params — необязательное поле.

Полный пример — запуск узла по номеру телефона с GET-параметрами:

{
 "profile": {
    "phone_number": "79991234567"
},
 "content": {
 "type": "NODE",
 "node": {
    "name": "Имя узла"
},
 "get_params": {
    "foo": "bar"
}
 }
}

Методы тестового запуска сценариев для разработчика

Скрытая кнопка в меню

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

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

Если тестируете на реальном боевом боте, а не в отдельном тестовом окружении, — проверьте, что тег присвоен только вашему аккаунту, а не случайно попадает на реальных пользователей.

Отладка

В карточке чата, в самом низу, есть раздел «Системное», где можно включить «Режим отладки» для конкретного чата.

В чате с включённым режимом отладки достаточно отправить сообщение вида n<id узла> (например, n14377) — и пользователя сразу переключит на нужный узел, без необходимости проходить сценарий заново или пользоваться диплинком/кнопками.

Итог

Запуск сценария для пользователя обычно идёт одним из трёх способов: диплинк (постоянная ссылка с открытием конкретного узла), отложенный пуш (запланированная отправка узла по времени) или прямой вызов через API (POST /api/partners/push-messages/ с идентификацией получателя и типом содержимого NODE). Для тестирования во время разработки удобнее два других приёма: скрытая по тегу кнопка в меню, ведущая на нужный узел, и режим отладки чата, где узел открывается командой n<id узла> прямо в переписке.