Use Case 5: Формат номера телефону
Рівень: базовий · Модулі: Scenario Builder, Action Jail · Action: кастомна дія Action Jail
Необхідні права та доступ
| Що потрібно | Де в меню | Навіщо |
|---|---|---|
| Scenario Builder | Меню → Scenario Builder | WaitForInput, виклик кастомної дії |
| Action Jail | Меню → Action Jail | Створення і тест JS-дії |
Якщо розділу немає в меню — перевірте права облікового запису або зверніться до підтримки ConnectiveOne.
Бізнес-контекст
Клієнт вводить телефон у різних форматах (0800…, 380…, +380…) — для CRM, Registered Users і API потрібен єдиний формат +380XXXXXXXXX.
Очікуваний результат
- Action Jail дія: вхід
raw_phone→ вихідnormalized_phone. - Виклик зі сценарію → показ нормалізованого номера клієнту.
- Невалідний ввід → edge error і повторний запит (не тиша).
Архітектура flow
WaitForInput (raw_phone) → Action (кастомна дія Action Jail)
├─ success → MessageKeyboard «Ваш номер: {{normalized_phone}}»
└─ error → «Невірний формат» → loop на WaitForInput
Покрокова реалізація
Крок 1. Action Jail — нова дія
Action Jail → Створити дію (можна AI-генерація з промптом нижче).
Контракт дії (що має робити код):
| Вхід (з сценарію) | Вихід | Логіка |
|---|---|---|
raw_phone (string) |
normalized_phone |
Прибрати пробіли/дужки; якщо 10 цифр з 0 — додати +38; якщо вже +380… — лишити |
| — | подія error |
Якщо менше 10 цифр або не схоже на UA номер |
Промпт для AI-генерації (приклад):
«Action Jail: нормалізувати український телефон у формат +380XXXXXXXXX. Вхід raw_phone, вихід normalized_phone, return error якщо невалідно.»
Тест у Action Jail (вкладка «Тестування»):
| raw_phone | Очікування |
|---|---|
0800123456 |
+380800123456 або +380… за вашим правилом |
380501234567 |
нормалізується до +380501234567 |
+380501234567 |
без змін |
abc |
error |
Крок 2. WaitForInput — сирий номер
| Параметр | Значення |
|---|---|
| messageText | «Введіть номер телефону» |
| outputVariable | raw_phone |
| Validation | phone або none на першому проході |
Edges: → Action (кастомна дія).
Крок 3. Action — кастомна дія з Action Jail
| node_params | Значення | Навіщо |
|---|---|---|
raw_phone |
{{raw_phone}} |
Передати ввід з WaitForInput |
(Імена параметрів — як у формі вашої дії в Inspector.)
Edges:
| Edge | Куди | Навіщо |
|---|---|---|
| success / основний | MessageKeyboard «Ваш номер: {{normalized_phone}}» | Показати результат |
| error | «Невірний формат. Спробуйте ще раз» → loop на WaitForInput | Не залишати клієнта без відповіді |
Крок 4. MessageKeyboard — результат
| Текст | Нормалізований номер: {{normalized_phone}} |
Крок 5 (опційно). MessageKeyboard з URL-кнопкою
| Параметр | Значення | Навіщо |
|---|---|---|
| Кнопка | Текст + URL у розширених налаштуваннях кнопки | Без Action Jail для простого посилання |
| ActionType | open-url (Telegram) |
Перевірити в preview / TG |
→ Use Case 11 (просунутий рівень) для broadcast alias і масової відправки.
Критерії приймання (self-check Runs)
Типові помилки
| Симптом | Причина | Що зробити |
|---|---|---|
{{normalized_phone}} порожній |
Немає return { normalized_phone: '…' } у коді |
Виправити Action Jail |
| Завжди error | Параметр у сценарії ≠ імені в Action Jail | Звірити node_params і форму дії |
| Бот «замовкає» | Edge error не підключений | Підключити error → MessageKeyboard |
| Тест у Action Jail OK, у Runs — ні | Інша назва action у сценарії | Обрати правильну дію в Inspector |