PD Документация ← На главную

Сценарии

Сценарии — это визуальные конвейеры автоматизации, определяющие, как и когда отправляются уведомления. Создавайте их в редакторе Приложения → Сценарии — свободном холсте с узлами.

Типы узлов

Триггер (Trigger)

Каждый сценарий начинается с узла «Триггер». Он создаётся автоматически и не может быть удалён. Триггер срабатывает при вызове triggerWorkflow через GraphQL или POST /api/v1/workflows/:id/trigger через REST.

Отправка (Send)

Отправляет уведомление через настроенный канал.

ПараметрОписание
КаналPush (APNs, FCM, Web Push — без канала) или один из каналов приложения: Email, SMS, Telegram, MAX, In-App
ШаблонШаблон выбранного типа канала; тема и текст подставляют поля контакта и payload запуска
ПолучательВсегда контакт, запустивший сценарий: его устройства для push, email / phone / maxUserId для каналов
КатегорияНеобязательно: контакты, отключившие категорию для этого канала, пропускаются

Задержка (Delay)

Приостанавливает выполнение на заданный период перед переходом к следующему узлу.

ПараметрОписание
DurationЗадержка в секундах, минутах, часах или днях

Фильтр (Filter)

Продолжает сценарий по условию на основе значения поля.

ПараметрОписание
FieldКлюч payload запуска (plan), поле контакта (locale, contact.email) или ключ metadata контакта (plan, contact.metadata.plan); без префикса ищется сначала в payload, затем в metadata и полях контакта
Operatoreq, neq, contains
ValueЗначение для сравнения

Если условие не выполнено, сценарий завершается без выполнения последующих узлов.

Построение сценария

  1. Откройте Приложения → Сценарии и нажмите Новый сценарий
  2. Перетащите узлы из левой палитры на холст
  3. Соедините узлы, протянув связь от правого разъёма одного узла к левому разъёму следующего
  4. Кликните узел, чтобы настроить его в правой панели
  5. Нажмите Сохранить по завершении
  6. Установите статус сценария «Активен», чтобы разрешить запуск

Запуск сценария

graphql
mutation {
  triggerWorkflow(input: {
    workflowId: "019c9a99-8aad-77b4-b2b2-719f3f8e0610"
    subscriberId: "019c9359-fe1d-73bc-90fd-594d284d24f3"
    payload: {
      name: "John"
      orderId: "ORD-001"
    }
    # Необязательно: повторный запуск с тем же ключом вернёт уже начатый
    # прогон вместо повторного выполнения сценария.
    idempotencyKey: "order-ORD-001-confirmation"
  }) {
    id
    status
    startedAt
  }
}

Из вашего бэкенда то же самое одним REST-вызовом (контакт — по вашему external_id или по PushData-id; ответ 202):

bash
curl -X POST https://api.pushdata.ru/api/v1/workflows/WORKFLOW_ID/trigger \
  -H "Authorization: ApiKey pd_ВАШ_СЕКРЕТНЫЙ_КЛЮЧ" \
  -H "Content-Type: application/json" \
  -d '{"contact_external_id":"user-123","payload":{"name":"Иван","orderId":"ORD-001"},"idempotency_key":"order-ORD-001-confirmation"}'
json
{ "execution_id": "0192…", "workflow_id": "019c…", "status": "pending", "started_at": "2026-09-14T12:00:00.000Z" }

Правила

  • Сценарий должен быть Активен, чтобы его можно было запустить (иначе 409 workflow_inactive)
  • Если у какого-либо шага SEND нет жёстко заданного получателя, subscriberId обязателен
  • Объект payload доступен внутри шаблонов как {{ variable }}; это должен быть JSON-объект не больше 64 КБ (иначе 400)
  • idempotencyKey (≤ 200 символов, уникален в пределах сценария) делает запуск безопасным для повторов: тот же ключ возвращает существующий прогон
  • Подписчик должен быть контактом приложения сценария

Порядок выполнения

Сценарий — линейный пайплайн: шаги выполняются один за другим в порядке цепочки, нарисованной на холсте (по связям, а не по визуальному расположению). Не прошедший FILTER завершает прогон со статусом filtered; ветвлений и шага digest нет. Прогон запускается только через triggerWorkflow (API или дашборд); событийных и cron-триггеров нет. Используйте раздел Запуски для отслеживания истории выполнения.