Use Case 7b: Оцінка після діалогу (CSAT / NPS)
Рівень: базовий · Модулі: Scenario Builder, Custom Data · Actions: custom_modules__set, опційно statistic__set
Необхідні права та доступ
| Що потрібно | Де в меню | Навіщо |
|---|---|---|
| Scenario Builder | Меню → Scenario Builder | CSAT-секція, connect з chat_closed_alias |
| Custom Data | Меню → Custom Data | Модель feedback_scores, поле INTEGER |
Якщо розділу немає в меню — перевірте права облікового запису або зверніться до підтримки ConnectiveOne.
Бізнес-контекст
Після завершення діалогу з оператором (або самообслуговування) бот просить оцінити якість обслуговування і зберігає результат. Типова вимога: оцінка лише кнопками, вільний текст не потрапляє в INTEGER-поле.
Очікуваний результат
- Entry у секцію CSAT через alias після закриття діалогу (
chat_closed/exit_*). - Клієнт обирає оцінку кнопками 1 / 3 / 5 (або ваш набір).
- Оцінка зберігається в Custom Data (поле типу INTEGER).
- Вільний текст замість кнопки не потрапляє в INTEGER-поле (edge
errorабо validation). - Опційно:
statistic__setдля платформенної статистики.
Архітектура flow
[Connect blocks] chat_closed_alias → exit_csat
→ send-message-keyboard (1 / 3 / 5)
├─ кнопки → custom_modules__set (rate: INTEGER)
├─ source-handle → Router / validation (НЕ напряму в __set)
└─ error на __set → «Оберіть оцінку кнопкою»
→ (опційно) statistic__set
→ «Дякуємо за оцінку»
Зв'язок з іншими налаштуваннями
Alias закриття діалогу (chat_closed_alias / exit_*) задається в connect-блоці і має збігатися в усіх гілках connect у сценарії. Закриття діалогу ініціює вхід у CSAT-секцію — це поведінка операторського контуру + сценарію разом.
Рекомендується мати connect з Use Case 3 перед налаштуванням CSAT.
Покрокова реалізація
Крок 0. Custom Data — модель оцінок
Custom Data → Нова модель feedback_scores:
| Поле | Тип | Alias |
|---|---|---|
| Оцінка | INTEGER | rate |
| Канал | text | channel |
| Коментар | text | comment (опційно) |
Тип INTEGER для rate — обов'язково; free-text у це поле викличе помилку запису.
Крок 1. Connect-блоки — єдиний exit alias
У кожному operator_panel__connect_to_operator_with_msg (і інших connect, якщо є):
| node_params | Значення | Навіщо |
|---|---|---|
chat_closed_alias |
exit_csat |
Після закриття діалогу — вхід у CSAT-секцію |
Audit (self-check): пройдіть усі connect-блоки в сценарії — alias однаковий; немає дубльованого alias entrypoint у CSAT-секції.
Крок 2. Entry alias — секція CSAT
- Секція з точкою входу
exit_csat. send-message-keyboard: «Оцініть обслуговування» + кнопки1,3,5.
| Параметр | Навіщо |
|---|---|
validation.type |
none лише якщо source-handle від'єднано або захищений |
| Edges на кожну кнопку | → custom_modules__set з feedback_scores:rate = значення кнопки |
Критично: edge source-handle (fallback для вільного тексту) — не вести напряму в custom_modules__set. Варіанти:
- Від'єднати source-handle.
- Або → Router / повторне питання / validation.
Крок 3. Action — custom_modules__set
| node_params | Значення |
|---|---|
module_name |
feedback_scores |
set_to |
feedback |
| constants | feedback_scores:rate з кнопки, feedback_scores:channel = {{channel}} |
Edges: success → подяка · error → «Не вдалося зберегти оцінку» + перевірити тип поля.
Крок 4 (опційно). statistic__set
Якщо інстанс використовує платформенну статистику CSAT — додайте action після успішного запису в CD згідно з довідником actions.
Крок 5. Канали без keyboard
Перевірте supportedMessengers на ноді keyboard: для email / каналів без кнопок — окрема гілка (текстова оцінка з validation або пропуск CSAT).
Критерії приймання (self-check Runs)
Типові помилки
| Симптом | Причина | Що зробити |
|---|---|---|
| Помилка типу INTEGER | Free-text у rate |
Захистити source-handle, validation |
| CSAT не запускається | Різні chat_closed_alias |
Audit усіх connect-блоків |
| Дубль entry | Два exit_csat у секціях |
Залишити один entrypoint |
| Запис OK, статистика порожня | Немає statistic__set |
Додати опційно за docs |