# Як використати action в сценарії?

Actions дозволяють розширити функціональність сценарію: інтегруватися з зовнішніми системами, обробляти дані, виконувати складну логіку. Ця інструкція допоможе додати та налаштувати action в сценарії Scenario Dialog.

## Коли знадобиться

- Потрібно відправити HTTP запит до зовнішнього API
- Потрібно валідувати дані, введені користувачем
- Потрібно виконати умовну логіку (if-else, switch)
- Потрібно інтегруватися з AI-агентами FastLine Pro
- Потрібно створити тікет або виконати іншу системну дію
- Потрібно використати кастомну логіку, створену через ActionJail

## Що важливо знати

- **Action** — це JavaScript функція, яка виконується під час виконання сценарію
- **Стандартні actions** — вбудовані в платформу (98 actions), доступні всім ботам
- **Кастомні actions** — створені через модуль ActionJail під конкретні задачі
- **Параметри action** — налаштування, які передаються в action при виконанні
- **Результат action** — значення, яке повертає action (може використовуватися для умовних переходів)

## Перед початком

- [x] Ви увійшли в систему з правами інтегратора або адміністратора
- [x] У вас є відкритий сценарій в редакторі Scenario Dialog
- [x] Ви знаєте, який action потрібен (стандартний або кастомний)

## Покрокова інструкція

### 1. Відкрити редактор сценарію

1. Перейдіть до модуля **Сценарій** через `Меню -> Сценарій`
2. Виберіть бота та відкрийте сценарій для редагування
3. Переконайтеся, що ви знаходитесь на потрібній секції сценарію

### 2. Додати ноду типу Action

1. На рабочее полотно (canvas) натисніть правою кнопкою миші або використайте кнопку **"Додати ноду"**
2. У модальному вікні виберіть тип ноди **"Action"** (або **"Дія"**)
3. Нода з'явиться на рабочее полотно (canvas) — перетягніть її в потрібне місце

### 3. Вибрати action

1. Клацніть на ноду Action, щоб вибрати її — справа відкриється панель редагування (RightSideBar)
2. У полі **"Шаблон дії"** або **"Action template"** виберіть потрібний action з випадаючого списку
3. Список містить:
   - **Стандартні actions** — вбудовані в платформу (наприклад, `action_validate`, `action_send_request`)
   - **Кастомні actions** — створені через ActionJail (якщо вони є в системі)

### 4. Налаштувати параметри action

1. Після вибору action в панелі редагування з'явиться форма з параметрами
2. Заповніть обов'язкові параметри (позначені зірочкою `*`)
3. За потреби заповніть опціональні параметри
4. Використовуйте змінні та макроси для динамічних значень (наприклад, `{{user_input}}`)

**Приклад для `action_send_request`:**
- **URL** — адреса API endpoint
- **Method** — метод HTTP запиту (GET, POST, PUT, DELETE)
- **Headers** — заголовки запиту (опціонально)
- **Body** — тіло запиту (опціонально)

**Приклад для `action_validate`:**
- **Input** — значення для валідації (може бути змінна)
- **Type** — тип валідації (email, phone, number, text)
- **Error message** — повідомлення про помилку

### 5. Налаштувати переходи (за потреби)

1. Якщо action повертає значення для умовних переходів, налаштуйте edges:
   - **Успішне виконання** → з'єднайте з нодою, яка виконується при успіху
   - **Помилка** → з'єднайте з нодою обробки помилок
   - **Умовні значення** → додайте кілька edges з різними умовами (наприклад, для `if_else`)

2. Для налаштування умовних переходів:
   - Виберіть edge (зв'язок) між нодами
   - У панелі редагування edge вкажіть умову переходу (наприклад, `result === 'success'`)

### 6. Зберегти зміни

1. Перевірте налаштування action в панелі редагування
2. Натисніть кнопку **"Зберегти"** знизу екрана або використайте комбінацію клавіш `Ctrl+S` (або `Cmd+S` на Mac)
3. Система збереже всі зміни та покаже повідомлення про успіх

## Що відбувається після

Action додано до сценарію та буде виконуватися під час роботи бота. Коли бот досягне цієї ноди, він викличе відповідну функцію action, передасть параметри та обробить результат.

## Як переконатися, що все вдалось

- Перевірте, що нода Action відображається на рабочее полотно (canvas)
- Переконайтеся, що action вибрано в панелі редагування
- Перевірте, що всі обов'язкові параметри заповнені
- Переконайтеся, що нода з'єднана з іншими нодами через edges
- Спробуйте відкрити сценарій ще раз — всі зміни повинні зберегтися

## Типові помилки та рішення

**Проблема:** Action не виконується або повертає помилку
- **Рішення:** Перевірте, чи всі обов'язкові параметри заповнені правильно, чи правильно вказані URL/endpoints для HTTP запитів

**Проблема:** Не можу знайти потрібний action в списку
- **Рішення:** Перевірте, чи action існує в системі (стандартні actions завжди доступні, кастомні — тільки якщо створені через ActionJail)

**Проблема:** Action виконується, але результат не обробляється
- **Рішення:** Перевірте, чи правильно налаштовані умовні переходи (edges) після action

## Пов'язані матеріали

- [Що таке actions та як вони працюють](/uk/scenariodialog/explanation/actions-in-scenarios.md) — детальне пояснення
- [Actions Reference — повний довідник по всіх 98 actions](/uk/actionjail/reference/actions-reference.md) — таблиця з описом, конфігурацією та повертаємими значеннями для кожного action
- [ActionJail модуль](/uk/actionjail/operator-hub.md) — створення кастомних actions
- [Створити кастомний action](/uk/actionjail/how-to/admin-manage-actions.md)
