# Перемістити клієнта після бездіяльності

Під час розмови з клієнтом може виникнути проблема, коли він або не виконує цільову дію, або застрягає в останньому блоці воронки, а чат-бот не реагує на його дії. Щоб уникнути цього, можна налаштувати автоматичне переведення клієнта в інший блок без створення дубльованих шляхів переміщення.

## Як автоматично переміщати клієнта через воронку?

Як приклад автоматичного переміщення клієнта через воронку ми використаємо простий сценарій чат-бота, який запитує користувача, чи відвідає він подію:

<figure><img src="/files/f40a263f2f2b650bde81c4c8c1f22cbcbdd0d7d5" alt="" width="223"><figcaption><p>Рис. 1</p></figcaption></figure>

З прикладу (рис. 1) видно, що клієнт рухається далі по воронці лише якщо натискає кнопку «Так!», надіслану передостаннім блоком. (В інших випадках тригером для продовження руху по воронці може бути практично що завгодно — залежно від умов вашого сценарію чат-бота.)

У цьому прикладі (рис. 1) клієнтка Настя вирішила не натискати кнопку в чат-боті, тож розмова застрягла в передостанньому блоці воронки:

<figure><img src="/files/f23ae776d4d4f6c1080179cddada49f2d7202d00" alt="" width="494"><figcaption><p>Рис. 2</p></figcaption></figure>

Щоб вирішити цю проблему, потрібно виконати кілька простих кроків у вашій блок-схемі: щоб продовжити діалог із клієнтом або перевести його по воронці через певний час (наприклад, після *n* хвилин), проведіть додаткову стрілку від передостаннього блоку та встановіть затримку часу, після якої клієнт автоматично перейде до наступного блоку воронки.

<figure><img src="/files/0bb4ea472f80b00ef1fbbf69cbe0948329bb8b04" alt=""><figcaption><p>Створіть другу стрілку, що веде до блоку</p></figcaption></figure>

Тепер у налаштуваннях стрілки встановіть таймер із потрібним інтервалом часу, щоб клієнт автоматично переміщався до наступного блоку:

<figure><img src="/files/e689eb03c4f99988ecf5d0506db98131b11e1a70" alt="" width="563"><figcaption><p>Рис. 3</p></figcaption></figure>

Обов’язково активуйте перемикач **«Скасувати, якщо блок залишено»** (рис. 3), щоб повідомлення не було надіслано повторно після завершення таймера, якщо клієнт уже перейшов до наступного блоку (наприклад, натиснув кнопку).

<figure><img src="/files/7a53956f4b48bdf9adaf126e5d80ae818487495c" alt="" width="563"><figcaption><p>Приклад автоматичного переходу</p></figcaption></figure>

Наведений вище приклад показує, що бот автоматично переміщує клієнта по воронці та надсилає фінальне повідомлення — навіть якщо він не натиснув кнопку. <br>

Тепер за допомогою другої стрілки з установленим таймером клієнт буде переведений далі по воронці через певний проміжок часу.

## Як перемістити клієнта з останнього блоку в інший блок?

На блок-схемі (рис. 4) видно, що передостанній блок визначає, у який блок потрапить ваш клієнт, залежно від кнопки, яку він натисне в блоці з двома гілками:

<figure><img src="/files/83858019d6c13d9ad40dcb494595457a8049dc44" alt="" width="563"><figcaption><p>Рис. 4. Проста блок-схема чат-бота</p></figcaption></figure>

Якщо клієнт натисне одну з двох кнопок, він зупиниться в останньому блоці й не зможе, наприклад, повернутися до попереднього блоку та обрати інший варіант, якщо це буде потрібно. Чат-бот просто не реагуватиме на натискання іншої кнопки, оскільки користувач уже перейшов до останнього блоку, який не дозволяє подальший рух по воронці (див. приклад нижче).

<figure><img src="/files/84eb7d196cef3eb8a4bfc086f34a182ac3ed00d9" alt="" width="518"><figcaption><p>Клієнт перейшов до останнього блоку, і бот не реагує на повторні натискання кнопок.</p></figcaption></figure>

У цьому випадку проблему можна вирішити двома способами:

1. Використовуючи **«Не State»** блок — ця функція залишає клієнта в блоці з варіантами кнопок, не переводячи його до наступних блоків.
2. Використовуючи **кнопок callback** — ця функція переводить клієнта до наступних блоків, але все одно дозволяє змінити свій вибір, якщо він не задоволений результатом.

### Блок «Не State»

Блок «Не State» — це сірий блок. На відміну від блоку «Dialog State», він не має умов, і клієнтів не можна перевести в нього безпосередньо.

У нашій воронці блок «Не State» ідеально підходить, тому що користувач не вийде з передостаннього блоку й зможе натиснути іншу кнопку, якщо його не влаштовує перший вибір.

Щоб налаштувати це, перейдіть до конструктора воронки та виберіть тип блоку **«Не State»** (не плутайте з **«Not State with condition»**).

<figure><img src="/files/62484ce4bb30888d777f47d81892ba42bf9b4d7d" alt=""><figcaption><p>Рис. 5. Блок «Не State»</p></figcaption></figure>

Тепер наша блок-схема виглядає так:

<figure><img src="/files/75bf4c7d0f80f07fd3e447664a92d6488972bad9" alt="" width="563"><figcaption><p>Рис. 6</p></figcaption></figure>

Щоб перевірити, що сценарій працює коректно, відкрийте тестер бота. Там ви побачите, що можна натискати будь-яку кнопку незалежно від попереднього вибору клієнта:

<figure><img src="/files/65c9ed5325978953a62dd923a5b22c26d2799170" alt="" width="518"><figcaption></figcaption></figure>

### Кнопки callback

Якщо вам справді потрібно, щоб клієнт рухався далі по воронці та переходив до інших блоків, допоможе функція кнопки callback.

Для цього видаліть стрілки, що ведуть до фінальних блоків у блок-схемі, і встановіть для цих блоків тип **«Primary condition check»**:

<figure><img src="/files/dfd3d9abac1eb936dde61b9d642e7fa4f7b31043" alt="" width="563"><figcaption><p>Рис. 7. Блок-схема з блоками «Primary condition check»</p></figcaption></figure>

Перейдімо до налаштувань кнопки всередині блоку:

<figure><img src="/files/cdd538baa13906bb2c4067396553cdc3ddcaf4bb" alt=""><figcaption><p>Рис. 8. </p></figcaption></figure>

Відкриється вікно налаштувань кнопки «Так!». Тут виконайте таке:

* Виберіть тип кнопки **«Callback button»**
* У текст відповіді введіть слова або фрази, потрібні для поля умови в **«Primary condition check»** .

<figure><img src="/files/544a8bc1d7060f05fc2562bd510667981374ceea" alt="" width="563"><figcaption><p>Рис. 9. Зміна налаштувань кнопки</p></figcaption></figure>

Налаштуйте другу кнопку так само (у нашій воронці це кнопка "Ні").

{% hint style="warning" %}
Використовуйте різні тексти/фрази для **«response message text»** полів у налаштуваннях кнопок в межах одного проєкту, щоб уникнути помилок чат-бота.
{% endhint %}

Далі перейдіть до налаштувань **Перевірка основної умови** блоків, де потрібно ввести слова, які ви набрали у **«response message text»** полі, використовуючи тип збігу **«Exact match»**:

<figure><img src="/files/9ce71c96259602f047d440b4de793a5eb2588352" alt="" width="563"><figcaption><p>Рис. 10. Налаштування блоку "Primary condition check"</p></figcaption></figure>

Налаштуйте другий блок для кнопки «Ні» так само.

Таким чином, ви дізналися, як автоматично переміщати клієнта по воронці за допомогою трьох різних способів.

## Відеоверсія статті

{% embed url="<https://youtu.be/vO5Q8aLKkrk>" %}


---

# 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://docs.mavibot.ai/doc/uk/yak-zrobiti.../peremistiti-kliyenta-pislya-bezdiyalnosti.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.
