Use Case 2: Розгалуження за вибором клієнта
Рівень: базовий · Модулі: Scenario Builder · Ноди: MessageKeyboard
Перед стартом: прочитайте Edge-driven flow і Розгалуження: edges / Router / switch.
Необхідні права та доступ
| Що потрібно | Де в меню | Навіщо |
|---|---|---|
| Scenario Builder | Меню → Scenario Builder | Меню та edges |
Якщо розділу немає в меню — перевірте права облікового запису або зверніться до підтримки ConnectiveOne.
Бізнес-контекст
Бот показує меню: «Продаж», «Підтримка», «Інше» — і веде клієнта в різні гілки сценарію. Це основа більшості client-ботів: один вхід, кілька бізнес-напрямків.
Очікуваний результат
- Кнопки меню ведуть у різні гілки сценарію.
- Значення вибору зберігається у змінній
user_choice(для Runs і подальших кроків). - Якщо клієнт написав текст замість кнопки — зрозуміла підказка (default).
- Розуміння: для меню за кнопками основний спосіб — окремі edges, а не Router.
Архітектура flow
Start → MessageKeyboard (3 кнопки)
├─ edge «sales» → MessageKeyboard (гілка Продаж)
├─ edge «support» → MessageKeyboard (гілка Підтримка)
├─ edge «other» → MessageKeyboard (гілка Інше)
└─ edge default / вільний текст → «Оберіть пункт меню»
Важливо: для меню за кнопками — окремий edge на кожну кнопку MessageKeyboard + default для вільного тексту. Нода Router тут не підходить: вона працює з полями контексту звернення (канал, статус, теги…), а не з довільною змінною на кшталт
user_choice.
Покрокова реалізація
Крок 1. MessageKeyboard — меню
Нода: Повідомлення з кнопками.
| Параметр | Значення | Навіщо |
|---|---|---|
| Текст | «Оберіть тему звернення:» | Меню |
| Тип клавіатури | inline | Кнопки під повідомленням |
| Кнопка 1 | Текст: «Продаж» · payload / value: sales |
Стабільне значення |
| Кнопка 2 | «Підтримка» · support |
|
| Кнопка 3 | «Інше» · other |
|
| Output Variable | user_choice |
Записує вибір — перевіряйте в Runs |
Edges:
| Edge | Куди | Навіщо |
|---|---|---|
sales |
MessageKeyboard «Ви обрали Продаж…» | Окрема гілка за edge кнопки |
support |
«Підтримка…» | |
other |
«Інше…» | |
| Default | «Натисніть одну з кнопок меню.» | Не залишати клієнта без відповіді |
Крок 2. Три гілки-відповіді
Нода: MessageKeyboard (×3).
| Гілка | Текст (приклад) |
|---|---|
| sales | «Відділ продажу. Напишіть, що вас цікавить.» |
| support | «Підтримка. Опишіть проблему.» |
| other | «Загальні питання. Чим можемо допомогти?» |
Крок 3. Перевірка в Runs
- Кожна кнопка → своя гілка.
- У trace:
user_choice=sales|support|other. - Випадковий текст → default.
Коли знадобиться розгалуження за змінною (пізніше)
На цьому Use Case достатньо edges. Якщо після API, categorizer або іншої дії потрібно розгалузитись за збереженою константою сценарію — використовуйте Action switch (не Router). Деталі й типові пастки: Built-in actions — switch.
Legacy action
if_elseу старих ботах також порівнює вирази і має гілкуelse. Для нових flow за змінною —switch; для контексту звернення (канал, статус, теги) — Router.
Критерії приймання (self-check Runs)
Типові помилки
| Симптом | Причина | Що зробити |
|---|---|---|
| Усі кнопки ведуть в одну гілку | Один edge на всі кнопки | Окремий edge на кожен payload |
user_choice порожній |
Не задано Output Variable | Увімкнути Output Variable на MessageKeyboard |
| Бот «замовкає» після тексту | Немає default edge | Підключити default → підказка |
Не вдається обрати user_choice у Router |
Router не приймає довільні змінні сценарію | Для меню лишіться на edges; за константою — switch |