---
title: "Use Case 13: Capstone — інтегрований бот"
description: "Збірний проєкт: один training bot з меню — оператор, тікет, FAQ або Custom Data."
level: capstone
use_case: 13
prerequisites:
  - ../basic/use-case-01-faq-ai.md
  - ../basic/use-case-03-handoff-to-operator.md
  - ../basic/use-case-07-custom-data.md
  - ../basic/use-case-09-scenario-audit.md
  - ./../advanced/use-case-10-tickets-categorizer.md
  - ./../advanced/use-case-11-broadcast.md
---

# Use Case 13: Capstone — інтегрований бот

> **Ціль:** один навчальний бот об'єднує навички онбордингу клієнта **без Copilot** — типовий MVP для клієнта. Завершення — **self-check**, без здачі наставнику.

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

| Модуль / налаштування | Навіщо |
|------------------------|--------|
| **Scenario Builder** | Головне меню і три гілки flow |
| **Fast Line Pro** | FAQ-гілка (Use Case 1) |
| **Settings → Operator Panel** | Connect-гілка (Use Case 3) |
| **Settings → Tickets** | Тікет-гілка (Use Case 10) |
| **Custom Data** | Опційна третя гілка замість FAQ (Use Case 7) |
| **Runs / Chat preview** | Self-check усіх гілок |

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

Клієнт отримує один вхід у бота з головним меню: поставити питання AI, звернутися до оператора або подати формальне звернення (тікет або скарга в базу). Це перевірка, що ви вмієте зібрати робочий MVP для клієнта без зовнішнього супроводу.

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

```text
MessageKeyboard (головне меню)
├─ «Оператор» → flow Use Case 3
├─ «Скарга» / «Тікет» → flow Use Case 10
└─ «FAQ» → flow Use Case 1
   (або «Скарга в базу» → flow Use Case 7)
```

**Без Copilot** у мінімальному capstone — Copilot див. [Use Case 12](/uk/learn/implementer/training/optional/use-case-12-copilot-cd-lookup.md) (optional).

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

```text
Start → MessageKeyboard (головне меню)
   ├─ operator    → [секція / підграф Use Case 3]
   ├─ ticket      → [секція / підграф Use Case 10]
   └─ faq         → [секція / підграф Use Case 1]
        (або complaint → Use Case 7)

Кожна гілка: повернення в меню або End після завершення
```

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

### Крок 0. Підготовка в існуючому training bot

Використовуйте **той самий** навчальний бот, де проходили Use Case 1–11. Не створюйте новий бот — імпортуйте або скопіюйте вже перевірені фрагменти сценарію.

Переконайтеся, що з попередніх Use Case працюють:

| Use Case | Мінімум для capstone |
|----------|----------------------|
| [Use Case 1](/uk/learn/implementer/training/basic/use-case-01-faq-ai.md) | Fast Line Pro + fallback edge |
| [Use Case 3](/uk/learn/implementer/training/basic/use-case-03-handoff-to-operator.md) | connect: success / limit / error |
| [Use Case 10](/uk/learn/implementer/training/advanced/use-case-10-tickets-categorizer.md) | create: success / error, `ticket_id` |
| [Use Case 7](/uk/learn/implementer/training/basic/use-case-07-custom-data.md) | *(опційно)* запис у CD + id у Runs |
| [Use Case 9](/uk/learn/implementer/training/basic/use-case-09-scenario-audit.md) | метод audit unconnected edges |

---

### Крок 1. Головне меню

**Нода:** MessageKeyboard після Start.

| Кнопка | Payload | Куди веде |
|--------|---------|-----------|
| «Оператор» | `menu_operator` | Connect flow |
| «Подати звернення» | `menu_ticket` | Ticket + categorizer flow |
| «FAQ» | `menu_faq` | FAQ flow |
| *(опційно)* «Скарга в базу» | `menu_complaint` | Custom Data flow |

| Параметр | Рекомендація |
|----------|--------------|
| Output Variable | `main_menu_choice` (опційно) |
| Default edge | «Оберіть пункт головного меню.» |

**Edges:** кожна кнопка → **окремий** вхід у відповідну секцію або підграф.

---

### Крок 2. Секції або підграфи

Рекомендовано винести кожну гілку в **окрему секцію** сценарію:

| Секція (приклад) | Зміст |
|------------------|-------|
| `sec_operator` | Кнопка «Поговорити з оператором» → `operator_panel__connect_to_operator_with_msg` |
| `sec_ticket` | Повний flow Use Case 10 |
| `sec_faq` | Вітання FAQ → WaitForInput → `action_fastline_pro` |
| `sec_complaint` | Flow Use Case 7 (якщо обрано замість FAQ) |

Після завершення гілки — MessageKeyboard «Повернутися в меню» → edge на головне меню.

---

### Крок 3. Обов'язкові edges на критичних нодах

Перевірте методом [Use Case 9](/uk/learn/implementer/training/basic/use-case-09-scenario-audit.md):

| Нода | Мінімум edges |
|------|---------------|
| `action_fastline_pro` (FAQ) | відповідь + **fallback** |
| `operator_panel__connect_to_operator_with_msg` | **success** + **limit** + **error** |
| `action_tickets_create` | **success** + **error** |
| `action_fastline_pro` (categorizer) | основний + **fallback** |
| Головне меню | кожна кнопка + **default** |

На edge **`limit`** має бути **ваше** повідомлення клієнту про очікування — не тиша.

---

### Крок 4. Self-check у Runs (повний прогін)

Виконайте **три окремі Runs** (або один Run з послідовним поверненням у меню):

| # | Сценарій | Що перевірити в Runs |
|---|----------|----------------------|
| 1 | FAQ: питання з бази знань | `ai_answer`; fallback на невідоме питання |
| 2 | Оператор: connect | edge success або **limit** з текстом клієнту |
| 3 | Тікет: опис → categorizer → create | `ticket_id` у constants; edge error протестований |

Якщо третя гілка — Custom Data: id скарги у Runs/constants.

---

### Крок 5. Документація data flow

Заповніть розділ **Use Case 13** у [results-template.md](/uk/learn/implementer/training/results-template.md):

- Текстовий data flow (3–5 речень на гілку)
- Які `subject_alias` використані
- Один приклад root cause, який ви знайшли через Runs під час збірки

## Критерії завершення (self-check)

- [ ] **3 гілки меню** працюють у Runs
- [ ] Fallback Fast Line Pro **не дає тиші**
- [ ] Connect має повідомлення на edge **`limit`**
- [ ] Тікет або CD: `ticket_id` / complaint id у Runs/constants
- [ ] Use Case 9 audit: **0 unconnected edges** на критичних нодах
- [ ] (Опційно) CSAT-гілка [Use Case 7b](/uk/learn/implementer/training/basic/use-case-07b-csat-nps.md) протестована в Runs
- [ ] Data flow описано в result template

## Troubleshooting

| Симптом | Що перевірити |
|---------|----------------|
| Після гілки «зависає» | End vs повернення в меню; unconnected edge |
| FAQ працює окремо, не з меню | Edge payload головного меню → правильна секція |
| Тікет без `ticket_id` | Use Case 10 success edge; subject_alias |
| Оператор — тиша при limit | Підключено edge limit → MessageKeyboard |

→ [Коли не сценарій](/uk/learn/implementer/training/reference/when-not-scenario.md)

## Самостійне завдання

Розширте capstone **одним** optional-модулем на вибір:

- [Пріоритетний сегмент](/uk/learn/implementer/training/optional/use-case-priority-segment.md) — різний `subject_alias` у connect
- Deeplink + registered users ([Use Case 6](/uk/learn/implementer/training/basic/use-case-06-registered-users.md))
- [Use Case 12: Copilot](/uk/learn/implementer/training/optional/use-case-12-copilot-cd-lookup.md)

## Довідкові посилання

- [Огляд для інтегратора](/uk/learn/implementer/implementer-overview.md)
- [Тест сценарію](/uk/scenariobuilder/how-to/test-scenario.md)
- [Edge-driven flow](/uk/learn/implementer/training/concepts.md#edge-driven-flow)
- [Шаблон результатів](/uk/learn/implementer/training/results-template.md)

**Optional далі:** [Use Case 12](/uk/learn/implementer/training/optional/use-case-12-copilot-cd-lookup.md) · [Advanced Fast Line Pro](/uk/learn/implementer/training/optional/use-case-advanced-fastline.md)
