---
title: Пользовательские сценарии
canonical: https://developer.unico.io/ru/dual-api/developers/sdks-and-tools/flutter/capture-flow/capture-types/user-journeys
locale: ru
generated_by: markdown-export
---

Пользовательские сценарии (User Journeys) — это многоэтапные сессии захвата, организуемые SDK совместно с настроенным потоком. Например, поток `idchecktrustdocssign` выполняет селфи + документ + подпись в рамках одной сессии.

:::secondary[Продукты]
Доступные сценарии зависят от потока, настроенного для вашей интеграции. Полное соответствие «продукт → поток → возможность» см. в разделе [Продукты](/products).
:::

## Принцип работы

Плагин делегирует управление базовым нативным SDK:

1. Плагин открывает камеру (Android или iOS) с оверлеем SmartFrame.
2. Нативный SDK оркестрирует последовательность захватов, необходимых для потока (селфи, документ, подпись).
3. SDK самостоятельно передаёт результаты в Unico — клиент никогда не получает данные изображений напрямую и не управляет ими.
4. Возвращает объект `SuccessResult` с `processId` через канал платформы.

Оркестрация полностью выполняется SDK — вам не нужно реализовывать последовательность шагов в коде Dart.

## Режим камеры (умный захват)

В SDK по умолчанию включены **интеллектуальное кадрирование** и **автоматический захват**. Настройте режим камеры в builder следующим образом:

```dart
UnicoCheckCameraOpener _opener = new UnicoCheck(this)
    .setAutoCapture(autoCapture: true)
    .setSmartFrame(smartFrame: true)
    .build();
```

## Запуск пользовательского сценария

****Шаг 2** — Реализуйте слушатели сценария на `UnicoSelfie`**

Добавьте колбэки сценария в класс состояния:

  | Метод | Описание |
  |---|---|
  | `onSuccess(SuccessResult result)` | Захват выполнен успешно — возвращает `SuccessResult` с `processId` (Unico обрабатывает изображение внутренне) |
  | `onErrorSelfie(UnicoError error)` | Захват не удался — возвращает `UnicoError` с кодом и описанием |

  :::warning[Данные изображения недоступны]
  В отличие от потока Liveness, колбэк User Journey **не возвращает** `base64` или `encrypted`. Unico обрабатывает изображение внутренне и возвращает только `processId`.
  :::

  ```dart
  @override
  void onSuccess(SuccessResult result) {
    debugPrint('processId: ${result.processId}');
  }

  @override
  void onErrorSelfie(UnicoError error) { }
  ```

****Шаг 3** — Вызовите `openCameraSelfie`**

Метод `openCameraSelfie` открывает камеру. Для пользовательских сценариев передайте `webAppToken`, предоставленный Unico, вместо JSON-файла с учётными данными:

  ```dart
  _opener.openCameraSelfie(
    listener: this,
    webAppToken: token,
  );
  ```

## Сбор данных мониторинга

Метод `openCameraSelfie` предоставляет перегрузку, принимающую метаданные через `UnicoCheckPrepareInfo` для идентификации пользовательской сессии и потока:

- `externalUserId` (String, **обязательный**) — Идентификатор пользователя в вашей системе. Автоматически хешируется с помощью SHA-256 перед передачей.
- `useCase` (String, необязательный) — Идентификатор контекста или текущего выполняемого потока. Передаётся в открытом виде.

```dart
_opener.openCameraSelfie(
  listener: this,
  webAppToken: token,
  prepareInfo: UnicoCheckPrepareInfo(
    externalUserId: 'external_user_id',
    useCase: 'use_case', // optional
  ),
);
```

Полное описание обработки результата см. в разделе [Получение результата](/developers/sdks-and-tools/flutter/capture-flow/receiving-the-result).