---
title: "Use Case 3: Передача на оператора"
description: "Ескалація зі сценарію через operator_panel__connect: success, limit, error, subject_alias, теми, skill groups, alias після close і таймери."
---

# Use Case 3: Передача на оператора зі сценарію

**Рівень:** базовий · **Модулі:** Scenario Builder, Settings → Operator Panel · **Action:** `operator_panel__connect_to_operator_with_msg`

## Необхідні права та доступ

| Що потрібно | Де в меню | Навіщо |
|-------------|-----------|--------|
| **Scenario Builder** | Меню → Scenario Builder | Connect-нода в сценарії |
| **Settings → Operator Panel → Теми** | Налаштування → Операторська панель → Теми | Тема з alias для `subject_alias` |
| **Settings → Operator Panel → Групи навичок** | Налаштування → Операторська панель → Групи навичок | Skill group теми для `auto_connect_operator` |

Якщо розділу **Теми** немає в меню — перевірте права облікового запису або зверніться до підтримки ConnectiveOne.

## Бізнес-контекст

Після меню (або FAQ) клієнт натискає «Поговорити з оператором». Якщо вільних операторів немає — клієнт отримує **ваше** повідомлення про очікування (edge `limit`), а не тишу. Після закриття чату або таймауту сценарій може продовжитися через **alias** (підготовка до CSAT у [Use Case 7b](/uk/learn/implementer/training/basic/use-case-07b-csat-nps.md)).

## Очікуваний результат

- Edge **`success`** → connect виконано (перевірка в Runs).
- Edge **`limit`** → клієнт отримує **ваше** повідомлення про очікування.
- Edge **`error`** → зрозуміле повідомлення про помилку (не тиша).
- `subject_alias` узгоджений з темою в Settings; тема прив'язана до **skill group** з операторами.
- Задано `chat_closed_alias` (заготовка entrypoint) і розуміння таймерів неактивності / очікування оператора.

## Архітектура flow

```text
MessageKeyboard («Оператор») → Action (operator_panel__connect_to_operator_with_msg)
   ├─ success → MessageKeyboard «Оператор підключився»
   ├─ limit   → MessageKeyboard «Зараз усі зайняті. Очікуйте…»
   └─ error   → «Не вдалося підключити. Спробуйте пізніше»

Після закриття чату (оператором) → chat_closed_alias → (напр. секція «Дякуємо» / заготовка для UC-7b)
```

## Зв'язок з іншими налаштуваннями

| Що | Навіщо |
|----|--------|
| **Тема** (`subject_alias`) | Маршрутизація діалогу в правильну чергу / папку OP |
| **Skill group теми** | Звідки `auto_connect_operator` бере вільного оператора |
| **Оператор у skill group** | Інакше `limit` або `success` без живого оператора |
| **Alias після close / timeout** | Продовження сценарію після життєвих подій чату |

→ [Налаштувати теми](/uk/settings/how-to/configure-subjects.md) · [Налаштувати групи навичок](/uk/settings/how-to/configure-skill-groups.md)

## Покрокова реалізація

### Крок 0. Тема, skill group і оператор (якщо ще немає)

Settings → Operator Panel → **Теми** → створіть тему для навчання:

| Поле | Приклад |
|------|---------|
| Назва | Training Support |
| **alias** | `training_support` |
| **Skill group** | Training Support SG *(прив'яжіть існуючу або створіть нову)* |

Settings → Operator Panel → **Групи навичок** — переконайтеся, що в групі теми є **хоча б один тестовий оператор** (для E2E).

Запишіть alias теми — він піде в `subject_alias` connect-ноди.

---

### Крок 1. MessageKeyboard — кнопка ескалації

| Параметр | Значення | Навіщо |
|----------|----------|--------|
| Текст | «Потрібен оператор?» | |
| Кнопка | «Поговорити з оператором» · payload `operator` | Запуск connect |
| Output Variable | *(опційно)* | Достатньо edge кнопки |

**Edges:** кнопка `operator` → Action connect.

---

### Крок 2. Action — `operator_panel__connect_to_operator_with_msg`

**Що робить action:** створює чат-кімнату в Operator Panel, призначає тему, намагається підключити оператора, повертає подію за результатом.

| node_params | Рівень | Значення (приклад) | Навіщо |
|-------------|--------|-------------------|--------|
| `subject_alias` | **must** | `training_support` | Маршрутизація в тему / чергу |
| `auto_connect_operator` | **must** | `true` | Вільний оператор з skill group теми; інакше **limit** |
| `chat_closed_alias` | **should** | `training_chat_closed` | Після закриття оператором → entrypoint (UC-7b: CSAT) |
| `custom_timeout_time` | **should** | `30` | Таймаут неактивності діалогу (хв); спрацьовує `chat_closed_by_timeout_alias` |
| `connection_timeout_time` | **should** | `120` | Секунди очікування оператора → `connection_timeout_alias` |
| `customTextToOperator` | nice | «Клієнт з навчального бота» | Контекст для оператора в OP |
| `add_button` | nice | `false` | На навчанні не ускладнюємо UI чату |

**Пов'язані alias (за потреби):** `chat_closed_by_timeout_alias`, `connection_timeout_alias`, `chat_closed_by_client_alias` — деталі в [довіднику action](/uk/actionjail/reference/actions/operator_panel__connect_to_operator_with_msg.md).

**Заготовка entrypoint:** створіть секцію з точкою входу `training_chat_closed` і простим MessageKeyboard «Дякуємо за звернення» — у [Use Case 7b](/uk/learn/implementer/training/basic/use-case-07b-csat-nps.md) заміните на CSAT.

**Edges (обов'язково мінімум success + limit + error):**

| Edge | Коли | Куди | Навіщо |
|------|------|------|--------|
| **`success`** | Чат створено, клієнт підключений | MessageKeyboard «Вас підключено до оператора» | Клієнт знає, що діалог у OP |
| **`limit`** | Немає вільних операторів | MessageKeyboard «Зараз усі оператори зайняті…» | **Ваш** текст черги |
| **`error`** | Помилка створення чату | «Не вдалося підключити…» | Failsafe ([Use Case 9](/uk/learn/implementer/training/basic/use-case-09-scenario-audit.md)) |
| `banned` *(якщо є)* | Клієнт у бані | Повідомлення про блокування | Рідко на навчанні, але edge краще підключити |

---

### Крок 3. MessageKeyboard після `limit`

| Параметр | Приклад |
|----------|---------|
| Текст | «Зараз усі оператори зайняті. Ми відповімо найближчим часом — зачекайте в цьому чаті.» |

Без цієї ноди клієнт часто бачить **тишу** після `limit`.

---

### Крок 4. Тест у Runs

1. **Runs / preview:** натиснути «Оператор» → перевірити, який edge спрацював (`success`, `limit` або `error`).
2. Переконатися, що після edge **`limit`** клієнт бачить ваше повідомлення (не тиша).
3. Якщо завжди `error` — перевірити `subject_alias`, тему та skill group у Settings.
4. У trace / constants перевірити, що `chat_closed_alias` записано (якщо задано).

**Опційно (E2E):** якщо на інстансі є тестовий оператор і канал — перевірте, що діалог потрапив у тему з відповідним alias. Це не обов'язковий критерій завершення Use Case 3.

**Повідомлення про чергу:** текст формує **інтегратор** у ноді після `limit`. Для навчання достатньо статичного зрозумілого тексту.

## Критерії приймання (self-check Runs)

- [ ] Edges **success**, **limit**, **error** підключені на полотні.
- [ ] Після `limit` клієнт бачить ваше повідомлення (не тиша).
- [ ] `subject_alias` = alias теми в Settings → Operator Panel → Теми.
- [ ] Тема прив'язана до skill group; у групі є оператор (для E2E).
- [ ] Задано `chat_closed_alias` і існує entrypoint-секція з цим alias.
- [ ] Розумієте призначення `custom_timeout_time` і `connection_timeout_time`.
- [ ] У Runs видно, який edge спрацював після натискання «Оператор».
- [ ] (Опційно E2E) Діалог з'являється в Operator Line у правильній темі.
- [ ] *(Опційно)* Той самий connect-flow перезібрано через Instance Agent і звірено в Runs ([правило](/uk/learn/implementer/training/prerequisites.md#правило-instance-agent)).

## Типові помилки

| Симптом | Причина | Що зробити |
|---------|---------|------------|
| Завжди `error` | Невірний `subject_alias` або теми немає | Створити тему, звірити alias |
| Тиша після connect | Немає MessageKeyboard після `limit` | Додати текст очікування |
| Діалог не в тій темі | Alias не збігається | Звірити Settings і `node_params` |
| `success`, але оператор не бачить | Немає операторів у skill group теми | Додати оператора в skill group теми |
| Після close сценарій не продовжується | Немає `chat_closed_alias` або entrypoint | Задати alias + секція з entry |
| Закриття по неактивності «нічого не робить» | Не задано `chat_closed_by_timeout_alias` | Див. повний довідник connect action |

## Пов'язана документація

- [Параметри connect action](/uk/actionjail/reference/actions/operator_panel__connect_to_operator_with_msg.md)
- [Connect to operator node](/uk/scenariobuilder/explanation/connect-to-operator-node.md)
- [Налаштувати теми](/uk/settings/how-to/configure-subjects.md)
- [Налаштувати групи навичок](/uk/settings/how-to/configure-skill-groups.md)
- [FAQ — connect зі сценарію](/uk/learn/implementer/training/reference/faq.md)
- Далі: [Use Case 4 — Mock CRM](/uk/learn/implementer/training/basic/use-case-04-api-integration.md)
