# Логування сценарію чат-бота

{% hint style="info" %}
Логування сценарію чат-бота не є базовим функціоналом за замовчуванням і налаштовується індивідуально за запитом замовника.
{% endhint %}

Логування подій бота відбувається в конструкторі сценаріїв BotFlow. Для реалізації цієї задачі використовується спеціальна нода-підфлоу — `Log Bot/IVR Event`. Кожна подія фіксується в момент її виникнення як окремий запис у базі даних (таблиця `[bot_ivr_events]`).&#x20;

Щоб здійснити логування, потрібно додати цю ноду в схему (після дії, яку треба залогувати) та заповнити її властивості (Properties).

<figure><img src="https://2328171809-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fth75wDp9OEz0ABIMvgWP%2Fuploads%2Fgz4GhBib9JCB6sdypIf7%2Fimage.png?alt=media&#x26;token=d39f9a4e-076a-4a61-9f8d-5fe309919742" alt=""><figcaption></figcaption></figure>

## Налаштування ноди `Log Bot/IVR Event` <a href="#node-configuration" id="node-configuration"></a>

Відповідно до інтерфейсу властивостей ноди (Edit subflow instance), для коректного логування необхідно налаштувати наступні властивості (Properties):

* **Name** — назва ноди на схемі (наприклад, *Log Back*, *Log To Submenu*).
* **Event** — подія, що відбулася (Події, що підлягають логуванню, див. п. [1. Event](#id-1.-event)).&#x20;
* **Source** — джерело та розділ, звідки подія зафіксована (Джерела, що підлягають логуванню, див. п. [2. Source](#id-2.-source)).&#x20;
* **Task** — дія, що була виконана в результаті спрацювання події (Дії, що підлягають логуванню, див. п. [3. Task](#id-3.-task)).
* **Name** — назва події, що відбулася. Може бути назва обраної кнопки (якщо використана нода Answer Switch фіксується автоматично) або інша кастомна назва події, що була вказана при логуванні.
* **Parent Name** — назва попереднього кроку. Для source: chatbot\_menu кожна подія, окрім першої (вхід у меню), містить назву кроку, звідки клієнт прийшов (name з попереднього кроку).

{% hint style="info" %}
Заповнення поля Parent Name відбувається автоматично після ноди Answer Switch.
{% endhint %}

* **Status** — статус виконання сервісу. Фіксується тільки для подій з task:self\_serve (Статуси, що підлягають логуванню, див. п. [4.1. status](#id-4.1.-status)).
* **Exit Reason** —  причина виходу користувача з бота. Фіксується тільки для подій з task:transfer або task:resolve (Причини, що підлягають логуванню, див. п. [4.2. exit\_reason](#id-4.2.-exit_reason)).
* **Custom Data 1-5**: Поля для передачі додаткових кастомних даних (за потреби).
* **logger**: Вмикає або вимикає виведення логів для аналізу процесу логування.

<figure><img src="https://2328171809-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fth75wDp9OEz0ABIMvgWP%2Fuploads%2FRo9yDfmRCkKzms5Da4HR%2FLogger.png?alt=media&#x26;token=38dcbe9e-0a6c-48ec-abea-d03a8cb682ff" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Оцінка CSAT та системні таймаути логуються автоматично (їх не потрібно налаштовувати додатково).
{% endhint %}

## Опис можливих значень Properties, що підлягають логуванню

### 1. Event&#x20;

Події, що підлягають логуванню:

<table><thead><tr><th width="146.5">event</th><th>Опис</th></tr></thead><tbody><tr><td>button_click</td><td>Вибір клієнтом однієї з попередньо визначених опцій пункту меню вибору мови, меню самообслуговування, оцінки CSAT</td></tr><tr><td>text_input</td><td>Користувач вводить текстове повідомлення в чат-боті у відповідь на відкрите запитання (без кнопок)</td></tr><tr><td>system_event</td><td>Подія, ініційована системою (наприклад, таймаут неактивності клієнта, агента або бота)</td></tr><tr><td>api_request</td><td>Виклик веб-сервісу в рамках сценарію чат-боту для отримання даних клієнта або виконання операції</td></tr><tr><td>announce</td><td>Відправка повідомлення клієнту</td></tr></tbody></table>

### 2. Source

Джерела, що підлягають логуванню:

<table><thead><tr><th width="190.25">source</th><th>Опис</th></tr></thead><tbody><tr><td>chatbot_language</td><td>Чат-бот: етап вибору мови</td></tr><tr><td>chatbot_menu</td><td>Чат-бот: етап проходження меню</td></tr><tr><td>chatbot_csat</td><td>Чат-бот: етап CSAT</td></tr><tr><td>agent</td><td>Подія на етапі знаходження діалога на агенті</td></tr></tbody></table>

### 3. Task

Задачі, що підлягають логуванню:

| task        | Опис                                             |
| ----------- | ------------------------------------------------ |
| subflow     | Перехід у меню або підменю                       |
| transfer    | Переведення діалогу з боту/ivr на агента/команду |
| resolve     | Завершення діалогу                               |
| self\_serve | Запуск сервісу самообслуговування                |

### 4.  Деталізація дій (task).&#x20;

#### 4.1. status

Статус виконання сервісу. Фіксується тільки для подій з task:self\_serve.&#x20;

Статуси, що підлягають логуванню:

| status    | Опис                                          |
| --------- | --------------------------------------------- |
| initiated | Запущено сценарій сервісу самообслуговування  |
| completed | Сервіс самообслуговування завершено успішно   |
| failed    | Сервіс самообслуговування завершено неуспішно |

#### 4.2. exit\_reason&#x20;

Причина виходу користувача з бота. Фіксується тільки для подій з task:transfer або task:resolve.

Причини, що підлягають логуванню:&#x20;

<table><thead><tr><th width="374">exit_reason</th><th>Опис</th></tr></thead><tbody><tr><td>transfer_button</td><td>Обраний пункт меню з дією трансфер</td></tr><tr><td>end_button</td><td>Обраний пункт меню з дією завершення діалогу</td></tr><tr><td>client_timeout</td><td>Завершення діалогу по неактивності клієнта</td></tr><tr><td>agent_bot_timeout</td><td>Завершення діалогу по неактивності агента/бота</td></tr><tr><td>not_working_time</td><td>Завершення діалогу через неробочий час</td></tr><tr><td>csat </td><td>Завершення діалогу після проходження csat</td></tr><tr><td>Будь-яка кастомна причина завершення, що була вказана при логуванні</td><td></td></tr></tbody></table>

***

### Приклади можливих сценаріїв логування подій&#x20;

1. Сценарій: Вибір мови, навігація по меню, трансфер на агента та проходження CSAT

> Опис флоу:
>
> 1. Для користувача відображається меню вибору мови, і він обирає пункт Українська.
> 2. Користувачу відображається Головне меню, і він обирає пункт Депозити.
> 3. Користувачу відображається підфлоу меню Депозити, і він обирає пункт Назад.
> 4. Користувачу знову відображається Головне меню, і він обирає пункт Кредити.
> 5. Користувачу відображається підфлоу меню Кредити, і він обирає пункт Головне меню.
> 6. Користувачу відображається Головне меню, і він обирає пункт Карти.
> 7. Користувачу відображається підфлоу меню Карти, і він обирає пункт Відкрити.
> 8. Користувачу відображається підфлоу меню Карти – Відкрити, і він обирає пункт Дебетову. Система виконує дію трансферу на агента.&#x20;
> 9. Після завершення діалога агентом користувачу відображається оцінка CSAT, і він обирає пункт Відмінно 😄.&#x20;

**Приклад логування:**

<table><thead><tr><th width="53.05078125">№</th><th width="169.25">event</th><th width="164.25">source</th><th>name</th><th width="143">parent_name</th><th>task</th><th>status</th><th width="170.5">exit_reason</th></tr></thead><tbody><tr><td>1</td><td>button_click</td><td>chatbot_language</td><td>Українська</td><td>NULL</td><td>subflow</td><td>NULL</td><td>NULL</td></tr><tr><td>2</td><td>button_click</td><td>chatbot_menu</td><td>Депозити</td><td>NULL</td><td>subflow</td><td>NULL</td><td>NULL</td></tr><tr><td>3</td><td>button_click</td><td>chatbot_menu</td><td>Назад</td><td>Депозити</td><td>subflow</td><td>NULL</td><td>NULL</td></tr><tr><td>4</td><td>button_click</td><td>chatbot_menu</td><td>Кредити</td><td>Назад</td><td>subflow</td><td>NULL</td><td>NULL</td></tr><tr><td>5</td><td>button_click</td><td>chatbot_menu</td><td>Головне меню</td><td>Кредити</td><td>subflow</td><td>NULL</td><td>NULL</td></tr><tr><td>6</td><td>button_click</td><td>chatbot_menu</td><td>Карти</td><td>Головне меню</td><td>subflow</td><td>NULL</td><td>NULL</td></tr><tr><td>7</td><td>button_click</td><td>chatbot_menu</td><td>Відкрити</td><td>Карти</td><td>subflow</td><td>NULL</td><td>NULL</td></tr><tr><td>8</td><td>button_click</td><td>chatbot_menu</td><td>Дебетову</td><td>Відкрити</td><td>transfer</td><td>NULL</td><td>transfer_button</td></tr><tr><td>9</td><td>button_click</td><td>chatbot_csat</td><td>Відмінно 😄</td><td>NULL</td><td>resolve</td><td>NULL</td><td>csat</td></tr></tbody></table>

2. **Сценарій: Завершення діалогу - кнопка “Завершити”**

> Опис флоу:
>
> 1. Для користувача відображається меню вибору мови, і він обирає пункт Українська.
> 2. Користувачу відображається Головне меню, і він обирає пункт Карти.
> 3. Користувачу відображається підфлоу меню Карти, і він обирає пункт Відкрити.
> 4. Користувачу відображається підфлоу меню Карти – Відкрити, і він обирає пункт Завершити. Система завершує діалог

**Приклад логування:**

<table><thead><tr><th width="64.48828125">№</th><th width="166.75">event</th><th width="175.5">source</th><th width="128">name</th><th width="140.5">parent_name</th><th>task</th><th>status</th><th>exit_reason</th></tr></thead><tbody><tr><td>1</td><td>button_click</td><td>chatbot_language</td><td>Українська</td><td>NULL</td><td>subflow</td><td>NULL</td><td>NULL</td></tr><tr><td>2</td><td>button_click</td><td>chatbot_menu</td><td>Карти</td><td>NULL</td><td>subflow</td><td>NULL</td><td>NULL</td></tr><tr><td>3</td><td>button_click</td><td>chatbot_menu</td><td>Відкрити</td><td>Карти</td><td>subflow</td><td>NULL</td><td>NULL</td></tr><tr><td>4</td><td>button_click</td><td>chatbot_menu</td><td>Завершити</td><td>Відкрити</td><td>resolve</td><td>NULL</td><td>end_button</td></tr></tbody></table>

3. **Сценарій: Завершення діалогу - Завершення по таймауту неактивності клієнта**

> Опис флоу:
>
> 1. Для користувача відображається меню вибору мови, і він обирає пункт Українська.
> 2. Користувачу відображається Головне меню, і він обирає пункт Карти.
> 3. Користувачу відображається підфлоу меню Карти, і він обирає пункт Відкрити.
> 4. Користувачу відображається підфлоу меню Карти – Відкрити. Користувач не здійснює жодних дій протягом часу очікування. Система завершує діалог автоматично

**Приклад логування:**

<table><thead><tr><th width="63.13671875">№</th><th width="153">event</th><th width="169.25">source</th><th>name</th><th width="145.5">parent_name</th><th>task</th><th>status</th><th width="139.25">exit_reason</th></tr></thead><tbody><tr><td>1</td><td>button_click</td><td>chatbot_language</td><td>Українська</td><td>NULL</td><td>subflow</td><td>NULL</td><td>NULL</td></tr><tr><td>2</td><td>button_click</td><td>chatbot_menu</td><td>Карти</td><td>NULL</td><td>subflow</td><td>NULL</td><td>NULL</td></tr><tr><td>3</td><td>button_click</td><td>chatbot_menu</td><td>Відкрити</td><td>Карти</td><td>subflow</td><td>NULL</td><td>NULL</td></tr><tr><td>4</td><td>system_event</td><td>chatbot_menu</td><td>NULL</td><td>NULL</td><td>resolve</td><td>NULL</td><td>client_timeout</td></tr></tbody></table>

4. **Сценарій: Завершення діалогу - Завершення по таймауту неактивності агента**

> Опис флоу:
>
> 1. Для користувача відображається меню вибору мови, і він обирає пункт Українська.
> 2. Користувачу відображається Головне меню, і він обирає пункт Карти.
> 3. Користувачу відображається підфлоу меню Карти, і він обирає пункт Відкрити.
> 4. Користувачу відображається підфлоу меню Карти – Відкрити, і він обирає пункт Дебетову. Система виконує дію трансферу на агента.
> 5. У процесі спілкування агент не відповідає протягом встановленого часу. Система автоматично завершує діалог

**Приклад логування:**

<table><thead><tr><th width="66.63671875">№</th><th width="153">event</th><th width="166.75">source</th><th>name</th><th width="144.25">parent_name</th><th>task</th><th width="100.5">status</th><th width="191.75">exit_reason</th></tr></thead><tbody><tr><td>1</td><td>button_click</td><td>chatbot_language</td><td>Українська</td><td>NULL</td><td>subflow</td><td>NULL</td><td>NULL</td></tr><tr><td>2</td><td>button_click</td><td>chatbot_menu</td><td>Карти</td><td>NULL</td><td>subflow</td><td>NULL</td><td>NULL</td></tr><tr><td>3</td><td>button_click</td><td>chatbot_menu</td><td>Відкрити</td><td>Карти</td><td>subflow</td><td>NULL</td><td>NULL</td></tr><tr><td>4</td><td>button_click</td><td>chatbot_menu</td><td>Дебетову</td><td>Відкрити</td><td>transfer</td><td>NULL</td><td>transfer_button</td></tr><tr><td>5</td><td>system_event</td><td>agent</td><td>NULL</td><td>NULL</td><td>resolve</td><td>NULL</td><td>agent_bot_timeout</td></tr></tbody></table>

5. **Сценарій: Завершення діалогу - Звернення в неробочий час**

> Опис флоу:
>
> 1. Для користувача відображається меню вибору мови, і він обирає пункт Українська.
> 2. Користувачу відображається Головне меню, і він обирає пункт Карти.
> 3. Користувачу відображається підфлоу меню Карти, і він обирає пункт Відкрити.
> 4. Користувачу відображається підфлоу меню Карти – Відкрити, і він обирає пункт Дебетову. Система перевіряє робочий графік і виявляє, що час поза робочими годинами. Система завершує діалог&#x20;

**Приклад логування:**

<table><thead><tr><th width="60.8984375">№</th><th width="161.75">event</th><th width="178">source</th><th>name</th><th width="145.5">parent_name</th><th>task</th><th>status</th><th>exit_reason</th></tr></thead><tbody><tr><td>1</td><td>button_click</td><td>chatbot_language</td><td>Українська</td><td>NULL</td><td>subflow</td><td>NULL</td><td>NULL</td></tr><tr><td>2</td><td>button_click</td><td>chatbot_menu</td><td>Карти</td><td>NULL</td><td>subflow</td><td>NULL</td><td>NULL</td></tr><tr><td>3</td><td>button_click</td><td>chatbot_menu</td><td>Відкрити</td><td>Карти</td><td>subflow</td><td>NULL</td><td>NULL</td></tr><tr><td>4</td><td>button_click</td><td>chatbot_menu</td><td>Дебетову</td><td>Відкрити</td><td>resolve</td><td>NULL</td><td>not_working_time</td></tr></tbody></table>

6. **Сценарій: Сервіс самообслуговування з полем введення текстових даних, викликом веб-сервісу та анонсування інформації**

> Опис флоу:
>
> 1. Для користувача відображається меню вибору мови, і він обирає пункт Українська.
> 2. Користувачу відображається Головне меню, і він обирає пункт Карти.
> 3. Користувачу відображається підфлоу меню Карти, і він обирає пункт Баланс карти. Система ініціює сценарій самообслуговування (task=selfServe, status=initiated).
> 4. Користувачу відображається повідомлення “Введіть номер вашої картки”, і він вводить значення вручну.
> 5. Система здійснює виклик зовнішнього веб-сервісу для отримання даних про баланс .
> 6. Після отримання відповіді користувачу відображається анонс із балансом картки та фіксується, що сервіс виконано успішно.
> 7. Користувачу задається запитання “Чи має він ще запитання”, і він обирає пункт Ні. Система завершує діалог

**Приклад логування:**

<table><thead><tr><th width="67.55859375">№</th><th width="155.5">event</th><th width="169.25">source</th><th width="169.25">name</th><th width="153">parent_name</th><th>task</th><th>status</th><th>exit_reason</th></tr></thead><tbody><tr><td>1</td><td>button_click</td><td>chatbot_language</td><td>Українська</td><td>NULL</td><td>subflow</td><td>NULL</td><td>NULL</td></tr><tr><td>2</td><td>button_click</td><td>chatbot_menu</td><td>Карти</td><td>NULL</td><td>subflow</td><td>NULL</td><td>NULL</td></tr><tr><td>3</td><td>button_click</td><td>chatbot_menu</td><td>Баланс карти</td><td>Карти</td><td>selfServe</td><td>initiated</td><td>NULL</td></tr><tr><td>4</td><td>text_input</td><td>chatbot_menu</td><td>ask_card_number</td><td>Баланс карти</td><td>subflow</td><td>NULL</td><td>NULL</td></tr><tr><td>5</td><td>api_request</td><td>chatbot_menu</td><td>ws_clientdata</td><td>ask_card_number</td><td>subflow</td><td>NULL</td><td>NULL</td></tr><tr><td>6</td><td>announce</td><td>chatbot_menu</td><td>announce_card_balance</td><td>ws_clientdata_call</td><td>selfServe</td><td>completed</td><td>NULL</td></tr><tr><td>7</td><td>button_click</td><td>chatbot_menu</td><td>Ні</td><td>announce_card_balance</td><td>resolve</td><td>NULL</td><td>other_question_no</td></tr></tbody></table>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://help.novatalks.com.ua/ua/get-started/settings/chatbots/chatbot-script-logging.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
