---
title: "Use Case 1: FAQ-бот з AI"
description: "Перший AI-бот на Fast Line Pro: збір питання, відповідь з бази знань і fallback, якщо відповіді немає."
---

# Use Case 1: FAQ-бот з AI-відповідями

**Рівень:** базовий · **Модулі:** Fast Line Pro, Scenario Builder · **Action:** `action_fastline_pro`

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

| Що потрібно | Де в меню | Навіщо |
|-------------|-----------|--------|
| **Scenario Builder** | Меню → Scenario Builder | Збірка сценарію FAQ |
| **Fast Line Pro** | Меню → Fast Line Pro | AI-агент і база знань |
| **Fast Line Pro → База знань** | Fast Line Pro → База знань | Документи FAQ; дочекайтеся індексації |
| **Settings → Bots** | Налаштування → Bots | Канали для preview / Telegram |

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

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

Компанія хоче автоматично відповідати на часті питання без залучення операторів. Клієнт ставить питання у чаті — бот відповідає з бази знань; якщо відповіді немає, клієнт отримує зрозуміле fallback-повідомлення, а не тишу.

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

- Клієнт пише питання після вітання.
- Fast Line Pro відповідає з бази знань.
- Якщо відповіді немає — спрацьовує **fallback** edge з текстом на кшталт «Спробуйте переформулювати».
- У Runs видно змінну `{{ai_answer}}` після успішного запиту до AI.

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

```text
Start → MessageKeyboard (вітання + «Задати питання»)
     → WaitForInput (зберегти питання)
     → Action (action_fastline_pro)
        ├─ основний вихід → MessageKeyboard ({{ai_answer}})
        └─ fallback → «Спробуйте переформулювати»
```

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

### Крок 0. Fast Line Pro (поза Scenario Builder)

| Що | Навіщо |
|----|--------|
| Fast Line Pro → вкладка **Чат-боти** | Для FAQ достатньо відповідей з бази знань; інструменти не потрібні |
| База знань → txt, 5–10 Q&A | Малий файл швидше індексується на навчанні |
| **Статус індексації** | Дочекайтеся завершення обробки документа в БЗ перед тестом у сценарії |
| **Назва** (напр. `Training FAQ Bot`) | Має **буква в букву** збігатися з `agent_name` у сценарії (назва параметра історична — тип може бути «Чат-бот») |

Перевірка: Fast Line Pro → «Тестування» — відповіді з БЗ працюють без сценарію.

**Чат-бот vs Агент у Fast Line Pro**

У модулі два типи ШІ-додатків. Це **не** «навчання vs production» і не те саме, що бот у Scenario Builder / Settings → Bots.

| Тип | Що вміє | Коли обирати |
|-----|---------|--------------|
| **Чат-бот** | Відповіді з бази знань і промпту; **без** інструментів | FAQ, categorizer, типовий `action_fastline_pro` |
| **Агент** | Те саме + **Інструменти** (зовнішні дії) і розширені режими (напр. streaming) | Коли AI має щось *зробити*, а не лише відповісти з БЗ |

**Для цього Use Case:** створюйте **Чат-бот**. Агент знадобиться пізніше, якщо з’являться tools — див. [Advanced Fast Line Pro](/uk/learn/implementer/training/optional/use-case-advanced-fastline.md).

Опційно після fallback: edge «Поговорити з оператором» → connect (якщо Operator Panel уже налаштовано в [Use Case 3](/uk/learn/implementer/training/basic/use-case-03-handoff-to-operator.md)).

---

### Крок 1. Start

| Параметр | Значення | Навіщо |
|----------|----------|--------|
| Тригер | Повідомлення в каналі (за замовчуванням) | Запуск при першому повідомленні клієнта в preview / Telegram |

**Edges:** один вихід → наступна нода (вітання).

---

### Крок 2. MessageKeyboard — вітання

**Нода:** Повідомлення з кнопками (`send-message-keyboard`).

| Параметр (Inspector) | Значення | Навіщо |
|----------------------|----------|--------|
| Текст повідомлення | «Привіт! Я FAQ-бот. Натисніть кнопку, щоб задати питання.» | Перше повідомлення клієнту |
| Тип клавіатури | **inline** | Кнопки під повідомленням — зручно в Telegram і preview |
| Кнопка 1 | Текст: «Задати питання» · payload: `ask` | Одна гілка — спрощує Use Case 1 |
| Output Variable | *(можна не задавати)* | Для Use Case 1 достатньо переходу по edge кнопки |

**Edges:** вихід кнопки `ask` → WaitForInput. Якщо клієнт напише текст замість кнопки — увімкніть валідацію `none` або додайте edge «будь-який текст» → той самий WaitForInput.

---

### Крок 3. WaitForInput — збір питання

**Нода:** Очікування вводу (`wait-for-input`).

| Параметр | Значення | Навіщо |
|----------|----------|--------|
| messageText | «Напишіть ваше питання одним повідомленням» | Запит до клієнта |
| outputVariable | `question` | Текст потрапить у `{{question}}` для AI |
| Validation → type | `none` | На навчанні приймаємо будь-який текст |

**Edges:** один вихід (успішний ввід) → Action `action_fastline_pro`.

---

### Крок 4. Action — `action_fastline_pro`

**Нода:** Action → шаблон **`action_fastline_pro`**.

**Що робить action:** надсилає `user_input` агенту Fast Line Pro, отримує відповідь з бази знань, записує її у змінну.

| node_params (JSON) | Значення | Навіщо |
|--------------------|----------|--------|
| `agent_name` | `Training FAQ Bot` | Ім'я агента з Fast Line Pro |
| `user_input` | `{{question}}` | Питання з попередньої ноди |
| `save_response` | `ai_answer` | **Ім'я змінної** для відповіді → далі `{{ai_answer}}` |
| `conversation_id` | `fl_conversation_id` | Зберігає контекст між питаннями в одному Run (рекомендовано) |
| `vision_file` | `false` | Use Case 1 без вкладень |

**Edges (обов'язково обидва):**

| Edge | Куди | Навіщо |
|------|------|--------|
| Основний вихід (відповідь є) | MessageKeyboard з `{{ai_answer}}` | Клієнт бачить відповідь AI |
| **fallback** | MessageKeyboard: «Не знайшов відповіді. Спробуйте переформулювати.» | Без fallback бот «замовкає», якщо БЗ не дала відповіді |

---

### Крок 5. MessageKeyboard — показ відповіді

| Параметр | Значення | Навіщо |
|----------|----------|--------|
| Текст | `{{ai_answer}}` | Підставляє відповідь AI |
| Кнопка (опційно) | «Ще питання» → edge назад до WaitForInput | Цикл FAQ без перезапуску Run |

**Edges:** за бажанням — loop на WaitForInput або End.

---

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

1. Scenario Builder → **Runs** → Chat preview.
2. Пройти: вітання → «Задати питання» → текст з FAQ → перевірити `{{ai_answer}}` у trace.
3. Питання **поза** FAQ → має спрацювати **fallback**, не порожній текст.

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

- [ ] Питання з бази знань → клієнт бачить відповідь AI у preview.
- [ ] Питання поза FAQ → спрацьовує **fallback**, не тиша.
- [ ] У trace є змінна `ai_answer` після успішного запиту.
- [ ] `agent_name` у сценарії збігається з іменем агента в Fast Line Pro.
- [ ] Обидва edges (`основний` і `fallback`) підключені на полотні.
- [ ] База знань проіндексована (відповіді є в «Тестування» Fast Line Pro).
- [ ] *(Опційно)* Той самий FAQ-flow перезібрано через Instance Agent і звірено в Runs ([правило](/uk/learn/implementer/training/prerequisites.md#правило-instance-agent)).

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

| Симптом | Причина | Що зробити |
|---------|---------|------------|
| Бот «замовкає» після питання | Немає edge **fallback** | Підключити fallback → MessageKeyboard |
| Порожня відповідь | Невірний `agent_name` | Звірити ім'я в Fast Line Pro і `node_params` |
| `{{ai_answer}}` буквально в тексті | Змінна не записана | Перевірити `save_response` і trace Runs |
| AI не відповідає взагалі | БЗ не проіндексована, порожній промпт або збій у FLP | Перевірити «Тестування» у Fast Line Pro без сценарію; потім `agent_name` і fallback |

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

- [Використати action_fastline_pro](/uk/fastlinepro/how-to/use-action-fastline-pro.md)
- [Тест сценарію](/uk/scenariobuilder/how-to/test-scenario.md)
- [Матриця тестування — Use Case 1](/uk/learn/implementer/training/reference/testing-matrix.md)
- [FAQ — Fast Line Pro](/uk/learn/implementer/training/reference/faq.md)
- [Глосарій actions](/uk/learn/implementer/training/reference/actions-glossary.md)
- Далі: [Use Case 2 — розгалуження за вибором](/uk/learn/implementer/training/basic/use-case-02-menu-branching.md)
