# Тригер і тип збігу

## Тип збігу

Один **полі тригера** це те, що активує бота, змінює стани або виконує іншу дію. Слова в полі «Тригер» працюють як тригер для сценарію в конструкторі, щоб виконати подію або дію, що міститься в блоці.

**Тригери** керують перебігом розмови. Їх налаштовують у полі «Тригер» у межах умовного блоку або на стрілці з’єднання.

* **Формат:** Тригером може бути символ, число, регулярний вираз або певне ключове слово.
* **Дія:** Коли введення користувача збігається із заданим тригером, бот виконує пов’язаний сценарій, наприклад переходить до нового стану воронки або запускає дію.

<div data-with-frame="true"><figure><img src="/files/8596ff62a503d48ef64b4172927781b1b1132401" alt=""><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/8f72cebe278130f75c0d50fdfd6a629f56ada79d" alt=""><figcaption></figcaption></figure></div>

Наприклад, якщо вам потрібно створити блок для всіх можливих стартових слів у Messenger, можна вказати таку умову: start;start;get started;start

{% hint style="success" %}
У всіх типах порівнянь, **крапка з комою (;),** використовується для розділення умов.
{% endhint %}

Чатбот відреагує на тригер, виконавши задану дію або подію; наприклад, він може надіслати клієнту вітальне повідомлення:

<div data-with-frame="true"><figure><img src="/files/94439c7eb264f5782e84b1e32cd86a848dd50614" alt="" width="563"><figcaption></figcaption></figure></div>

Щоб розпізнати тригер, потрібно визначити тип порівняння (поле **«Match Type»** ). Тип збігу допомагає чатботу порівняти умову з повідомленням клієнта або іншою дією (наприклад, натисканням кнопки) і визначити, яку подію запускати далі.

У MaviBot є п’ять типів зіставлення умов:

1. Нечіткий збіг;
2. Збіг за ключовими словами;
3. Збіг за RegEx;
4. Точний збіг;
5. Семантичний пошук.

<div data-with-frame="true"><figure><img src="/files/2c5b7f561af45aa7e29974e3755dd750b8a7b2b5" alt="" width="563"><figcaption></figcaption></figure></div>

Давайте детальніше розглянемо кожен із них.

### Нечіткий збіг

Це основний тип порівняння, який дає змогу боту обробляти орфографічні помилки, друкарські помилки, неточності, пропущені літери та перестановки літер. Умова спрацьовує, якщо схожість між рядками перевищує 70%.

**Приклад:**\
Для умови **«hello»**&#x441;працюють такі варіанти: **«hlelo»**, **«hellp»**, **«helo»**&#x456; так далі.

<div data-with-frame="true"><figure><img src="/files/67c9639685287a3eb34d6715b3d3e02a994c853e" alt="" width="563"><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/c52b7a7f594979a0d2a376523a7a3223ab3c9a62" alt="" width="563"><figcaption></figcaption></figure></div>

Цей тип порівняння більше орієнтований на користувача й враховує людський фактор під час обробки умов, оскільки друкарські помилки трапляються досить часто.<br>

Поле **«Нечіткий»** тип збігу ідеально підходить для вітального (початкового) блоку в сценарії чатбота, де саме клієнт ініціює розмову.

### Збіг за ключовими словами

**Збіг за ключовими словами** — це дуже потужний тип порівняння, який допомагає створити консультанта, схожого на людину. За такого типу зіставлення бот реагуватиме на будь-яке повідомлення користувача, яке містить принаймні одне ключове слово з умови.

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

**Приклад:**\
Для умови «hello;person» спрацює таке повідомлення:\
«Я хочу привітати цю чудову людину.»

<div data-with-frame="true"><figure><img src="/files/dd7ed747b8c044620dad08035c41d60bbc584853" alt="" width="563"><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/f11841873e69857cf8c8177da03b6215befefd4f" alt="" width="563"><figcaption></figcaption></figure></div>

Ви можете включити до умови велику кількість ключових слів. Це дає змогу чатботу розпізнати, що саме зараз потрібно клієнту, і запустити відповідну подію, налаштовану всередині блоку.

<div data-with-frame="true"><figure><img src="/files/16189031c55719ce272fb189ff5bf402d4089806" alt="" width="375"><figcaption></figcaption></figure></div>

Як видно з прикладу вище, бот реагуватиме на будь-яке повідомлення, яке містить принаймні одне з ключових слів в умові.\
Цей тип збігу також використовує поле **«Ігнорувати тригери»** (повідомлення, які не повинні запускати відповідь).

<div data-with-frame="true"><figure><img src="/files/6c0fec558846d2829c33529eb2d64f0eb3b2b6fc" alt="" width="375"><figcaption></figcaption></figure></div>

Це поле працює подібно до поля умови, але з протилежним ефектом: якщо повідомлення користувача містить будь-які слова з **«Ігнорувати тригери»** поля, умова не спрацює.

Відповідно, якщо умова в **«Ігнорувати тригери»** полі виконана, загальна умова не спрацює.

### Варіативність

Ви можете додати додатковий тригер, розділений крапкою з комою, але що робити, якщо потрібно зіставити один із кількох варіантів слова?

Наприклад, щоб обробляти фрази на кшталт «Мій інтернет не працює», «Мій комп’ютер не працює» або «Мій комп’ютер зламався» одним тригером.

Очевидно, що перелічувати всі варіанти ключових слів по одному непрактично. Саме тому було створено синтаксис OR. Щоб вказати одне з кількох рівнозначних ключових слів, помістіть їх усі в дужки та розділіть вертикальною рискою (`|`).

Наприклад, тригер `(tar plan|tariff) (pereit|podklyuch|menit|pomen)` збігатиметься з такими запитами:\
«Привіт, як мені підключити новий тариф?»\
«Як мені змінити тарифний план?»

<div data-with-frame="true"><figure><img src="/files/86757914d1066dbe374a450a4f9a21c2c3341bb8" alt="" width="563"><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/f7f764a9c6bcb6bcf1737eb58a3f4a4553d0b6ee" alt="" width="563"><figcaption></figcaption></figure></div>

Розберімо тригер:\
`(tar plan | tariff)` означає, що рядок має містити **«tar» І «plan» АБО «tariff»**\
І водночас одне зі слів: **«switch» АБО «connect» АБО «change» АБО «replace»**.

Ось ще кілька інтуїтивно зрозумілих прикладів:

* `change password (cab|pa)`\
  («cab» і «pa» — скорочення від «cabinet» і «personal account»)
* `(forgot|reset|restore|remember|accepts|fits|incorrect|not the right|don’t remember) password`
* `(can’t|unable to) (restore|change) password`
* `login in contract; (lost|loss|where is|don’t know|where|can’t find|no) contract`
* `(suspend|blocked|block|disconnect) (services|internet|inet|charged); (saved|save) day; put on pause; leaving`
* `auto payment; payment; pay; recurring payment; connect payment`

### Точний збіг

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

{% hint style="info" %}
Порівняння не залежить від регістру, тобто якщо умова — «hello», а користувач введе «HELLO», умова все одно спрацює. Це слід враховувати.
{% endhint %}

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

1. **Для натискань кнопок:**\
   Наприклад, в умовах ми вказуємо назви кнопок, які при натисканні клієнтом мають привести його до відповідного блоку.

<div data-with-frame="true"><figure><img src="/files/8a947a89fac6b29f4eb4e6d665fffdd35bdd7063" alt="" width="375"><figcaption></figcaption></figure></div>

Далі ми створимо блоки, куди потрібно перенаправити клієнта після натискання кнопки в першому блоці. Їх має бути чотири:

<div data-with-frame="true"><figure><img src="/files/11e7bc18c5c75b14a3724080dd33a6a2fa6b39a6" alt=""><figcaption></figcaption></figure></div>

Далі в налаштуваннях стрілки вводимо назву кнопки та встановлюємо тип збігу на **«Точний збіг».**

<div data-with-frame="true"><figure><img src="/files/c060a318b174d56948c2ce307f80af8df9271dd5" alt=""><figcaption></figcaption></figure></div>

Тепер ви можете протестувати бота:

<div data-with-frame="true"><figure><img src="/files/05aca91e1de69541ce6c635d502c2925a0519e68" alt="" width="563"><figcaption></figcaption></figure></div>

Як бачите, бот коректно обробляє умову та вибір точного збігу під час використання кнопок.

2. Використання тега сайту у воронці:

У цьому випадку принцип подібний до використання кнопок; однак умова й тип збігу налаштовуються безпосередньо в самому умовному блоці.

Тут тег береться з вкладки **Sites** де ви встановили тег для сторінки сайту:

<div data-with-frame="true"><figure><img src="/files/7724560db7668ac41ee88d5f7b1c280de9f5b8dd" alt="" width="563"><figcaption></figcaption></figure></div>

Тег в умові блоку вказується **безпосередньо в полі CONDITION блоку без використання слів «TAG» або будь-яких інших позначень.**

<div data-with-frame="true"><figure><img src="/files/0141ab69a1392936bfa3b89072d110f20bda0e50" alt="" width="375"><figcaption></figcaption></figure></div>

{% hint style="info" %}
Докладніше про те, як налаштувати тригер бота за допомогою тега, встановленого на сайті, дивіться у статті **«Створення сайту та базові налаштування**[**"** у полі **«Tag»** розділ.](/doc/uk/websites/saiti/builder.md#tag)
{% endhint %}

Чатбот також відреагує та виконає налаштовану подію в межах параметрів блоку.

### Збіг за RegEx

Збіг за RegEx — це тип умови, який дає змогу боту перевіряти формат введених даних (наприклад, переконатися, що користувач ввів номер телефону, а не щось інше).

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

<div data-with-frame="true"><figure><img src="/files/dcf9a78ad20ed87b0e0659894be74ff896b501f7" alt=""><figcaption></figcaption></figure></div>

Із блоку, що запитує номер телефону, виходять два з’єднання:

1. Одне з’єднання **без тригера**
2. Інше з’єднання з **regex-тригером** для перевірки номера телефону

^(\\+)?((\d{2,3}) ?\d|\d)((\[ -]?\d)|( ?(\d{2,3}) ?)){5,12}\d$

З’єднання з тригером додає номер телефону до запиту й спрацює лише тоді, коли буде виявлено дійсний номер телефону. Друге з’єднання спрацює в усіх інших випадках, оскільки має нижчий пріоритет.

{% hint style="info" %}
Повний список корисних регулярних виразів можна знайти в [статті з такою самою назвою](/doc/uk/chatbot/functions/regex.md).
{% endhint %}

### Семантичний пошук

Поле **"**&#x421;емантичний пошу&#x43A;**"** — це опція, що базується на штучному інтелекті, — справжній прорив для вашого чатбота.

Як це працює:

* Тригер містить слова або фрази, які відображають **ЗНАЧЕННЯ** яке ШІ має визначити в повідомленні клієнта.
* Система (чатбот) обробляє повідомлення клієнта, шукаючи сенс, закладений в умові, у вхідних даних клієнта.
* Потім бот запускає відповідну подію в блоці.

Іншими словами, вказуючи певні фрази або значення в умові, ШІ перевіряє кожну умову щодо повідомлення клієнта та запускає відповідну подію в блоці (наприклад, надсилання повідомлення тощо).

Приклад:

Ми вказали конкретні фрази та ключові слова, які ШІ має виявити в повідомленні клієнта, щоб запустити відповідну подію всередині блоку.

У нашому випадку тригер містить фрази, пов’язані із «закриттям рахунків або договорів».

<div data-with-frame="true"><figure><img src="/files/769cb66eb91beb6ecf4fdb6a67948249455aee62" alt=""><figcaption></figcaption></figure></div>

Під час використання **"**&#x421;емантичний пошу&#x43A;**"** опції бот має знаходити в повідомленні клієнта слова або фрази, схожі за значенням на ті, що вказані в умові:

<div data-with-frame="true"><figure><img src="/files/2286e59bc435e0ad3a2a3cc3d0e346a11f984df1" alt="" width="563"><figcaption></figcaption></figure></div>

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

**Як писати тригер**\
Тригер вводять у відповідному полі так само, як і інші умови для будь-якого типу збігу: розділяючи крапкою з комою (;).

<div data-with-frame="true"><figure><img src="/files/2112c2c550f9aa56f4f477eef7f9412e90e31bf2" alt=""><figcaption></figcaption></figure></div>

Найкраще вказувати фрази або слова в полі тригера якомога точніше й лаконічніше.

{% hint style="success" %}
Лаконічна, чітка та точна умова для блоку допомагає чатботу правильно запускати подію, що міститься в блоці.

Чим складніші, розмитіші й довші фрази містить умова, тим більше часу ШІ потрібно для обробки повідомлень клієнта, що може призвести до некоректної роботи вашого сценарію.
{% endhint %}

{% hint style="warning" %} <mark style="color:red;">**Зверніть увагу!**</mark>&#x20;

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

Якщо модель порівнює два різні окремі слова, вони не збігатимуться. Наприклад, замість слова «invoice» використайте умову «payment for the monthly invoice». Ця умова краще відповідатиме потрібним вимогам і надасть моделі ШІ необхідні критерії для семантичного зіставлення.
{% endhint %}

Отже, використовуючи **"**&#x421;емантичний пошу&#x43A;**"** опцію, ШІ аналізуватиме різні варіанти, щоб зрозуміти сенс повідомлення клієнта, і на основі збігу чатбот запустить відповідну подію.

## Конструктор тригерів

Trigger — це унікальна спеціалізована функція, призначена для швидкого створення тригерів у відповідних блоках, щоб реагувати на вхідні callbacks із різних каналів, платіжних систем та інших інтеграцій.

Відповідно, конструктор тригерів доступний лише для блоків, які підтримують тригери:

<div data-with-frame="true"><figure><img src="/files/63a574a4c75c60952755d4c8db57fae6cbc2dc06" alt="" width="375"><figcaption></figcaption></figure></div>

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

<div data-with-frame="true"><figure><img src="/files/ccc175a7f38516bfa519885cc7e3575157f56241" alt=""><figcaption></figcaption></figure></div>

Після натискання відповідної кнопки відкриється вікно для роботи з умовами:

<div data-with-frame="true"><figure><img src="/files/42d5a94f3ce8110acf717ef0a0625f0c4f172c5c" alt=""><figcaption></figcaption></figure></div>

### Тригери MaviBot

<div data-with-frame="true"><figure><img src="/files/fce040b9f16f4126bde769c3bcc4036621940f88" alt=""><figcaption></figcaption></figure></div>

Поле **вкладка «MaviBot Triggers»** у конструкторі тригерів містить усі системні умови, які зберігаються та доступні для використання в різних розділах MaviBot.

**Стандартні тригери**\
Ця функція працює подібно до вкладених умов у блоці: тут ви вказуєте умови, які **NOT** вбудовані в систему. Це може бути тег воронки, тег сайту або будь-яка інша умова, що існує лише у вашому проєкті.

**Змінні**

<div data-with-frame="true"><figure><img src="/files/a426e918f5931d2bb966fd0cd52c8cea55658a48" alt=""><figcaption></figcaption></figure></div>

Тригери з змінними налаштувати досить просто.

**Крок 1.** Введіть назву змінної у відповідне поле.

**Крок 2.** Виберіть параметр порівняння.

<div data-with-frame="true"><figure><img src="/files/94df1fb14796cccb93cc73bf1aa6ad06cb1d8511" alt="" width="563"><figcaption></figcaption></figure></div>

Іншими словами, вкажіть, з чим саме ви хочете порівняти свою змінну: з конкретним значенням або з іншою змінною.

<div data-with-frame="true"><figure><img src="/files/18d744e8351c74eff86330adcda5050adc9dfd49" alt="" width="563"><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/3fe68f8f3b436ad5eb418ada470b6659f50238b3" alt="" width="563"><figcaption></figcaption></figure></div>

Крок 3. Виберіть тип порівняння.

<div data-with-frame="true"><figure><img src="/files/ae83d48288b63b638c3f8ef4ee0ca2aa0308d392" alt="" width="563"><figcaption></figcaption></figure></div>

Кожне порівняння має своє значення: дорівнює (==); не дорівнює (!=); строго більше за (>); більше або дорівнює (>=); строго менше за (<); менше або дорівнює (<=).

Приклад:

<div data-with-frame="true"><figure><img src="/files/341ce4b606a17c7aaa586881784076af1446d98e" alt="" width="563"><figcaption></figcaption></figure></div>

У прикладі значення змінної має бути більше або дорівнювати 21. Що це означає?\
Це означає, що подія всередині блоку спрацює лише для клієнтів, які належать до «дорослої» вікової групи — тобто для тих, кому 21 або більше.

Вираз **«age >= 18»** є еквівалентним **«age > 17».**

Умова **«age > 17»** також спрацює лише для тих, хто строго старший за 17, тобто починаючи з 18 років і вище.

#### Розділи MaviBot

<div data-with-frame="true"><figure><img src="/files/dfcb09c5c55c2c724f36ff0e3bd7a25b0bf92264" alt=""><figcaption></figcaption></figure></div>

У розділах умов MaviBot є типові callbacks — системні сповіщення — про різні події в проєкті.

Щоб запустити подію всередині блоку на основі системних сповіщень, задайте потрібний callback у полі умови, потім виберіть тип збігу та натисніть **"Додати умову"** кнопку:

Після цього умова з’явиться у відповідних полях всередині блоку.

{% hint style="success" %}
Якщо блок уже містить умову, натискання **"Додати умову"** кнопки додасть нову умову **після** існуючої. Якщо потрібно замінити стару умову на нову, натисніть **«Replace condition.»**
{% endhint %}

### Месенджери

<div data-with-frame="true"><figure><img src="/files/fd468b7101cbe35981a0008aa60e04b8b5630087" alt="" width="563"><figcaption></figcaption></figure></div>

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

### Оплата

<div data-with-frame="true"><figure><img src="/files/0ed008ecca6d47888c87a5b1d37841703a314893" alt="" width="563"><figcaption></figcaption></figure></div>

Крок 1. Щоб налаштувати умови для платіжних систем, переконайтеся, що ви підключили відповідну інтеграцію; інакше ви не зможете використовувати конструктор умов із потрібною системою.

Крок 2. Далі натисніть на потрібну платіжну систему.

Крок 3. Виберіть відповідний callback.

Крок 4. Потім введіть суму платежу у відповідне поле та натисніть **«Додати умову.»** Останній крок — написати відповідне повідомлення в налаштуваннях блоку:

{% hint style="success" %}
Інші розділи конструктора умов налаштовуються аналогічно до розділів, розглянутих тут.\
Бажаємо вам успіхів!
{% endhint %}


---

# 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/chatbot/builder/setting/trigger/type.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.
