Use Case 6: Реєстрація + повторний візит
Рівень: базовий · Модулі: Scenario Builder, Settings → Registered Users · Actions: registered_users__get, registered_users__set
Необхідні права та доступ
| Що потрібно | Де в меню | Навіщо |
|---|---|---|
| Scenario Builder | Меню → Scenario Builder | Get/set на Start і в гілці реєстрації |
| Settings → Registered Users | Налаштування → Registered Users | Поля профілю first_name, phone |
Якщо розділу немає в меню — перевірте права облікового запису або зверніться до підтримки ConnectiveOne.
Бізнес-контекст
Перший візит — реєстрація (ім'я, опційно телефон); наступний — вітання по імені без повторного опитування.
Ключова ідея: змінні діалогу vs профіль клієнта
До Use Case 6 ви працювали з {{user_input}}, кнопками та API — це змінні поточного діалогу. Use Case 6 додає запам'ятати клієнта між зверненнями.
| Змінні діалогу (state) | Registered Users (профіль) | |
|---|---|---|
| Простими словами | «Стікер» на одну розмову | «Картка» клієнта в базі |
| Скільки живе | Один Run / один діалог | Наступний візит, новий діалог |
| Як записати | Автоматично між нодами ({{user_name}} тощо) |
Action registered_users__set |
| Як прочитати | {{назва}} у наступних нодах цього ж Run |
registered_users__get → edge success / error |
Міні-приклад
- Клієнт пише «Олена» → «Привіт, Олена!» — ім'я з змінної діалогу, все ок до кінця цього Run.
- Клієнт повертається завтра (або новий Run у preview):
- без
registered_users__set— бот знову «не знає» Олену; - з
__setна першому візиті +__getна старті другого — «Вітаємо, Олена!».
- без
Правило: все, що зібрали на реєстрації, збережіть через registered_users__set. На наступному візиті спочатку registered_users__get.
Очікуваний результат
registered_users__getна старті → success / error.- error → збір даних →
registered_users__set. - success → «Вітаємо, {{registration:first_name}}!»
- Новий Run після реєстрації →
__getsuccess з тим самим ім'ям.
Архітектура flow
Start → registered_users__get
├─ success → «Вітаємо, {{registration:first_name}}!»
└─ error → WaitForInput (ім'я, телефон) → registered_users__set → «Дякуємо!»
Покрокова реалізація
Крок 0. Registered Users — поля моделі
Settings → Registered Users → додати поля профілю (якщо ще немає):
| Поле в моделі | Тип | Навіщо |
|---|---|---|
first_name |
text | Ім'я для вітання |
phone |
phone | Опційно для Use Case 5/6 |
Дані в action потрапляють через constants registration:first_name, registration:phone тощо.
Крок 1. Action на Start — registered_users__get
Що робить: шукає профіль за chat_id + channel поточного діалогу; якщо знайдено — завантажує в registration:*.
| node_params | Значення | Навіщо |
|---|---|---|
check_by_phone |
false |
На навчанні — lookup по поточному чату |
Edges:
| Edge | Коли | Куди | Навіщо |
|---|---|---|---|
success |
Профіль є | MessageKeyboard «Вітаємо, {{registration:first_name}}!» | Повторний візит |
error |
Новий клієнт | гілка реєстрації (крок 2) | Очікувана гілка, не баг |
Крок 2. Гілка error — збір даних
WaitForInput — ім'я
| Параметр | Значення |
|---|---|
| messageText | «Як до вас звертатися?» |
| outputVariable | registration:first_name |
WaitForInput — телефон (опційно)
| outputVariable | registration:phone |
Edges: ланцюжок WaitForInput → Action registered_users__set.
Крок 3. Action — registered_users__set
Що робить: збирає всі constants registration:* і зберігає профіль у БД Registered Users.
| node_params | Значення | Навіщо |
|---|---|---|
check_by_phone |
false |
Зв'язок з поточним chat_id |
active |
1 |
Активний профіль |
Edges:
| Edge | Куди |
|---|---|
| success | MessageKeyboard «Дякуємо за реєстрацію, {{registration:first_name}}!» |
| error | «Не вдалося зберегти дані» + перевірити поля моделі |
Крок 4. Тест «між діалогами»
- Preview: пройти
error→ реєстрацію →successна__set. - Завершити Run → новий Run.
- На Start
__get→ має бутиsuccess,{{registration:first_name}}заповнене.
Критерії приймання (self-check Runs)
Типові помилки
| Симптом | Причина | Що зробити |
|---|---|---|
| Другий Run знову реєстрація | __set не виконався або невірні поля |
Перевірити trace першого Run |
__set error |
Поле не в моделі Registered Users | Додати поле в Settings |
{{registration:first_name}} порожній |
Невірний outputVariable | Формат registration:first_name |
| Профіль «зникає» | Тест у тому ж Run | Завершити Run і відкрити новий |