Інструкція
Markdown статтіПовідомити про помилку

Use Case 6: Реєстрація + повторний візит

Рівень: базовий · Модулі: Scenario Builder, Settings → Registered Users · Actions: registered_users__get, registered_users__check_phone, 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

Preview vs канал. Кожен Run у Preview — новий клієнт (новий chat_id). Профіль шукається за chat_id + channel, тому другий Preview Run не побачить реєстрацію з першого. Повторний візит з вітанням по імені перевіряйте в реальному каналі (Telegram / віджет), де chat_id стабільний між діалогами.

Міні-приклад

  1. Клієнт пише «Олена» → «Привіт, Олена!» — ім'я з змінної діалогу, все ок до кінця цього Run.
  2. Клієнт повертається завтра в тому ж каналі (той самий Telegram / віджет):
    • без registered_users__set — бот знову «не знає» Олену;
    • з __set на першому візиті + __get на старті другого — «Вітаємо, Олена!».

Правило: все, що зібрали на реєстрації, збережіть через registered_users__set. На наступному візиті спочатку registered_users__get.

Очікуваний результат

  • registered_users__get на старті → success / error.
  • error → збір даних → registered_users__set.
  • success → «Вітаємо, {{client.first_name}}
  • Повторний візит у каналі після реєстрації → __get success з тим самим ім'ям.

Архітектура flow

Start → registered_users__get
   ├─ success → «Вітаємо, {{client.first_name}}!»
   └─ error → WaitForInput (ім'я, телефон) → registered_users__check_phone → registered_users__set → «Дякуємо!»

Якщо збираєте телефон текстом: registered_users__check_phone перед registered_users__set. __set не нормалізує 050…380… — без check_phone номер збережеться як введено.

Покрокова реалізація

Крок 0. Registered Users — поля моделі

Settings → Registered Users → додати поля профілю (якщо ще немає):

Поле в моделі Тип Навіщо
first_name text Ім'я для вітання
phone phone Опційно для Use Case 5/6

Дані для запису (__set) потрапляють через constants reg_first_name, registration:first_name, reg_phone / registration:phone тощо. Для текстового телефону зазвичай outputVariable: reg_phone, потім registered_users__check_phone.

Як читати після __get (не плутати з записом): дія виставляє два обʼєкти — client (стандартні колонки профілю: first_name, phone, …) і registration (кастомні поля з колонки data). У повідомленнях використовуйте крапку: {{client.first_name}}. Плейсхолдер {{registration:first_name}} (з двокрапкою) після __get не заповнюється — це інший механізм (плоский ключ), його немає серед констант після читання.

На гілці реєстрації (до __get) звертайтеся до змінної введення з цього ж діалогу ({{reg_first_name}}), бо профіль ще не читали.


Крок 1. Action на Start — registered_users__get

Що робить: шукає профіль за chat_id + channel поточного діалогу; якщо знайдено — завантажує константи client (рядок профілю) і registration (обʼєкт data).

node_params Значення Навіщо
check_by_phone false На навчанні — lookup по поточному чату

Edges:

Edge Коли Куди Навіщо
success Профіль є MessageKeyboard «Вітаємо, {{client.first_name}} Повторний візит
error Новий клієнт гілка реєстрації (крок 2) Очікувана гілка, не баг

Крок 2. Гілка error — збір даних

WaitForInput — ім'я

Параметр Значення
messageText «Як до вас звертатися?»
outputVariable reg_first_name

WaitForInput — телефон (опційно)

Параметр Значення
messageText «Ваш номер телефону»
outputVariable reg_phone

Action — registered_users__check_phone (якщо збирали телефон)

Edge Коли Куди
success Номер нормалізовано в reg_phone (380…) registered_users__set
error Невалідний формат повідомлення «Перевірте номер»

Edges: ланцюжок WaitForInput → registered_users__check_phoneregistered_users__set.


Крок 3. Action — registered_users__set

Що робить: збирає constants профілю (registration:*, reg_*) і зберігає запис у БД Registered Users. Не нормалізує телефон — очікує вже підготовлений reg_phone після check_phone.

node_params Значення Навіщо
check_by_phone false Зв'язок з поточним chat_id
active 1 Активний профіль

Edges:

Edge Куди
success MessageKeyboard «Дякуємо за реєстрацію, {{reg_first_name}}

Гілка error для __set у типовому сценарії немає (дія повертає success після збереження). Невалідний телефон обробляйте на registered_users__check_phone.

На цій гілці імʼя ще з змінної діалогу (reg_first_name). Після __get на наступному візиті використовуйте {{client.first_name}}.


Крок 4. Тест: Preview і повторний візит у каналі

A. Preview (гілка реєстрації)

  1. Preview: пройти error → реєстрацію → success на __set.
  2. (Опційно) Settings → Registered Users — є запис з ім'ям: __set спрацював.
  3. Новий Preview Run: на Start __get знову errorочікувано. Preview щоразу створює нового клієнта; між Run профіль «не підхоплюється».

B. Канал (критерій повторного візиту)

  1. Той самий користувач у Telegram або віджеті: перший діалог — реєстрація (__set success).
  2. Другий діалог того ж користувача: на Start __getsuccess, {{client.first_name}} заповнене.

Без кроку B ви довели лише запис профілю, не розпізнавання при поверненні.

Критерії приймання (self-check)

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

Симптом Причина Що зробити
Другий діалог у каналі знову реєстрація __set не виконався або невірні поля Перевірити trace першого діалогу / Run
Дані не збереглися Поле не в моделі Registered Users Додати поле в Settings
Телефон 066… у базі __set без check_phone Додати registered_users__check_phone перед __set
Після __get «Вітаємо, !» / порожнє імʼя У повідомленні {{registration:first_name}} (двокрапка) замість {{client.first_name}} Після __get{{client.first_name}}; двокрапка шукає плоский ключ, якого __get не виставляє
Другий Preview Run знову реєстрація Preview = новий chat_id щоразу Очікувано; повторний візит перевіряйте в каналі

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

Працюєте з власним ШІ-агентом?Встановіть відкритий skill, щоб ваш ШІ-агент працював з актуальною офіційною документацією ConnectiveOne.Отримати skillПотрібна підтримка?Не знайшли відповідь або потрібна допомога команди ConnectiveOne? Створіть запит у Client Portal.Створити запит