Use Case 10: Тікет з бота + categorizer
Перед стартом: прочитайте Categorizer pattern. Виконуйте в навчальному боті після базового рівня (Use Case 1–9).
Необхідні права та доступ
| Модуль / налаштування | Навіщо |
|---|---|
| Scenario Builder | Збірка flow з categorizer і create-тікета |
| Fast Line Pro | Categorizer-агент (тип «Чат-бот») |
| Settings → Tickets | Теми тікетів і subject_alias |
| Settings → Bots | Канал для тесту (preview або Telegram) |
| Runs / Chat preview | Self-check: ticket_id, edges success/error |
Якщо розділу Settings → Tickets немає в меню — перевірте права облікового запису або зверніться до того, хто керує доступами у вашій організації / до підтримки ConnectiveOne.
Бізнес-контекст
Клієнт описує проблему вільним текстом у боті. Система має автоматично визначити тип звернення, зібрати обов'язкові поля та створити тікет у ConnectiveOne. Номер тікета має бути доступний у Runs для подальшої перевірки.
Очікуваний результат
- Форма збору: тема, опис, пріоритет
- Categorizer → змінна категорії →
subject_aliasчерез Router /switch action_tickets_create→ edgessuccessіerror- Клієнт отримує підтвердження з номером тікета
ticket_idзбережено у Runs/constants після success
Архітектура
MessageKeyboard («Подати скаргу») → WaitForInput (тема, опис, пріоритет)
→ action_fastline_pro (categorizer) → Router за категорією
→ action_tickets_create
├─ success → «Тікет створено: {{ticket_id}}»
└─ error → «Не вдалося створити» + retry або завершення
Покрокова реалізація
Крок 0. Теми тікетів у Settings
Зв'язок з іншими налаштуваннями:
subject_aliasі custom fields тікета мають відповідати темам у Settings → Налаштування Тікетів. Детальніше: налаштувати тікети.
Створіть (або використайте) теми з alias для навчання:
| Alias (приклад) | Призначення |
|---|---|
training_payment |
Проблеми з оплатою |
training_delivery |
Проблеми з доставкою |
training_damage |
Пошкоджений товар |
training_order |
Неправильне замовлення |
Запишіть alias — вони потрібні в Router на кроці 5.
Крок 1. Fast Line Pro — categorizer
- Fast Line Pro → створіть агента типу Чат-бот (наприклад, «Training Ticket Categorizer»).
- У prompt вставте текст з файлу categorizer-training.txt — секція Use Case 10 (тікети).
- Перевірте в Тестування агента: вхід «не прийшла оплата» → вихід
payment.
Що робить categorizer: перетворює вільний опис на одну категорію (payment, delivery, damage, order, other).
| Параметр Fast Line Pro | Значення |
|---|---|
| Тип | Чат-бот (не Agent) |
| Prompt | categorizer-training.txt |
| Вихід у сценарії | змінна ticket_category |
Крок 2. MessageKeyboard — вхід у flow
| Параметр | Значення |
|---|---|
| Текст | «Хочете подати звернення?» |
| Кнопка | «Подати скаргу» · payload ticket_start |
| Тип клавіатури | inline |
Edges: кнопка → перша нода WaitForInput (тема).
Крок 3. WaitForInput — збір полів
Виконайте три ноди послідовно (або одну з кількома полями, якщо ваш інстанс підтримує):
| Нода | messageText | outputVariable |
|---|---|---|
| 1 | «Коротко опишіть тему звернення» | ticket_title |
| 2 | «Детальний опис проблеми» | ticket_description |
| 3 | «Пріоритет: low / normal / high» | ticket_priority |
Validation: none на навчанні (або обмежте пріоритет списком, якщо потрібно).
Edges: останній WaitForInput → Action categorizer.
Крок 4. Action — action_fastline_pro (categorizer)
| node_params | Значення | Навіщо |
|---|---|---|
agent_name |
Training Ticket Categorizer |
Ім'я з Fast Line Pro |
user_input |
{{ticket_description}} |
Текст для класифікації |
save_response |
ticket_category |
Категорія для Router |
Edges (обов'язково):
| Edge | Куди |
|---|---|
| Основний вихід | Router (мапінг alias) |
| fallback | MessageKeyboard: «Не вдалося визначити тип. Спробуйте переформулювати опис.» |
Крок 5. Router — мапінг категорії на subject_alias
Нода: Router (action_router), режим first_match + default branch.
| Правило | subject_alias |
|---|---|
ticket_category equals payment |
training_payment |
equals delivery |
training_delivery |
equals damage |
training_damage |
equals order |
training_order |
| Default | training_order (або окрема тема «інше») |
Після Router — Set subject_alias (якщо потрібно) або одразу action_tickets_create.
Альтернатива: Action switch з тими самими умовами.
Крок 6. Action — action_tickets_create
| node_params | Значення | Навіщо |
|---|---|---|
subject_alias |
{{subject_alias}} |
Тема тікета з Settings |
ticket_description |
{{ticket_description}} |
Опис (v2 API, якщо доступно) |
additional_fields |
title, пріоритет за docs теми | Custom fields теми |
На нових інстансах може бути
action_tickets_create_v2— перевірте Node Inspector; контракт аналогічний.
Edges (обов'язково):
| Edge | Куди | Навіщо |
|---|---|---|
success |
MessageKeyboard: «Тікет створено. Номер: {{ticket_id}}» | Клієнт бачить результат |
error |
MessageKeyboard: «Не вдалося створити тікет. Перевірте дані або спробуйте пізніше.» | Без error edge — тиша |
Troubleshooting у сценарії
| Симптом | Що перевірити |
|---|---|
Edge error після create |
subject_alias існує в Settings; custom fields теми; v1 vs v2 action |
Немає ticket_id у Runs |
Edge success підключений; action зберігає id у constants |
| Categorizer повертає «зайве» | Prompt — лише одне слово категорії; перевірте Fast Line Pro окремо |
| «Залипання» chat_room_id | Параметри create: не перевикористовуйте старий room без логіки; порівняйте новий Run vs той самий діалог |
Детальніше: Edge-driven flow · Коли не сценарій
Self-check (Runs)
Перед переходом до Use Case 11 переконайтеся:
Зафіксуйте результат у results-template.md.
Самостійне завдання
Додайте правило: якщо categorizer повернув payment, автоматично встановлюйте ticket_priority = high перед create (через Set або окрему гілку Router).
Довідкові посилання
Наступний крок: Use Case 11: Broadcast