# Про налаштування alias при вихідному діалозі

При завершенні діалогу з оператором можна налаштувати alias для різних ситуацій, таких як закриття чату оператором, завершення за таймаутом або закриття клієнтом. Це дозволяє контролювати поведінку користувача після завершення діалогу та забезпечувати коректний перехід до наступних кроків сценарію.

## Контекст і проблема

У багатьох випадках потрібно контролювати поведінку користувача після завершення діалогу:
- Відправка feedback після закриття чату оператором
- Повідомлення про таймаут при неактивності
- Обробка ситуації, коли не вдалося встановити з'єднання
- Реакція на закриття чату клієнтом

Налаштування alias при вихідному діалозі вирішує цю задачу, дозволяючи вказати, куди перенаправити користувача в різних ситуаціях.

## Основні концепції

### Типи ситуацій завершення діалогу

**Закриття чату оператором:**
- Оператор закриває чат вручну
- Користувач перенаправляється на вказаний alias

**Завершення за таймаутом:**
- Чат закривається автоматично через неактивність
- Користувач перенаправляється на вказаний alias

**Невдале з'єднання:**
- Не вдалося встановити з'єднання з оператором
- Користувач перенаправляється на вказаний alias

**Закриття клієнтом:**
- Клієнт закриває чат самостійно
- Користувач перенаправляється на вказаний alias

### Способи налаштування

**Через константи:**
- `initiated_dialog_alias_chat_closed` — alias для закриття оператором
- `initiated_dialog_alias_chat_closed_by_timeout` — alias для таймауту

**Через параметри action:**
- `chat_closed_alias` — alias для закриття оператором
- `chat_closed_by_timeout_alias` — alias для таймауту
- `connection_timeout_alias` — alias для невдалого з'єднання
- `chat_closed_by_client_alias` — alias для закриття клієнтом

## Варіанти підходів

### Константи vs параметри action

**Константи:**
- ✅ Плюси: Глобальні налаштування для всіх діалогів
- ❌ Мінуси: Менша гнучкість для окремих випадків

**Параметри action:**
- ✅ Плюси: Гнучкість для окремих випадків
- ❌ Мінуси: Потрібно налаштовувати для кожного випадку

**Чому використовуємо обидва підходи:**
Константи забезпечують глобальні налаштування, а параметри action дозволяють перевизначити їх для окремих випадків.

## Прийняті рішення

### Пріоритет налаштувань

Константи мають пріоритет над параметрами action. Якщо константи налаштовані, вони будуть використані замість параметрів action.

### Fallback механізм

Якщо константи не налаштовані, користувач буде перенаправлений за alias, які були задані під час останнього підключення до оператора. Якщо користувач ніколи не звертався до оператора, система перенаправить його за alias `entry`.

## Наслідки для користувачів і імплементації

### Для інтеграторів

При налаштуванні alias важливо:

1. **Визначити необхідні ситуації** — які ситуації потрібно обробити
2. **Створити alias блоки** — в сценарії для кожної ситуації
3. **Налаштувати константи або параметри** — залежно від потреб
4. **Перевірити fallback механізм** — для користувачів без налаштувань

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

**Помилка:** Користувач не перенаправляється після закриття чату  
**Проблема:** Не налаштовані константи або параметри action  
**Рішення:** Додати константи або параметри action з правильними alias

**Помилка:** Використовується неправильний alias  
**Проблема:** Константи мають пріоритет над параметрами action  
**Рішення:** Перевірити налаштування констант та їх пріоритет

**Помилка:** Користувач перенаправляється на неіснуючий alias  
**Проблема:** Alias не існує в сценарії  
**Рішення:** Перевірити наявність alias блоків у сценарії

## Приклади використання

### Налаштування через константи

1. Перейти до розділу "Константи" в сценарії
2. Додати константи:
   - `initiated_dialog_alias_chat_closed` = "feedback"
   - `initiated_dialog_alias_chat_closed_by_timeout` = "timeout_message"

### Налаштування через параметри action

```json
{
  "auto_connect_operator": true,
  "chat_closed_alias": "feedback",
  "chat_closed_by_timeout_alias": "timeout_message",
  "connection_timeout_alias": "retry_connection",
  "chat_closed_by_client_alias": "goodbye"
}
```

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

- **Explanation:** [Підключення чату з оператором](/uk/operatorline/explanation/connect-chat-to-operator.md) — налаштування підключення до оператора

