# Триггер и тип совпадения

## Тип совпадения

A **триггера** — это то, что активирует бота, меняет состояния или выполняет другое действие. Слова в поле «Триггер» выступают как триггер для выполнения в конструкторе сценария события или действия, содержащихся внутри блока.

**Триггеры** управляют ходом разговора. Они настраиваются в поле «Триггер» внутри условного блока или на соединительной стрелке.

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

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

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

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

{% hint style="success" %}
Во всех типах сравнений **точка с запятой (;)** используется для разделения условий.
{% endhint %}

Чат-бот отреагирует на триггер, выполнив указанное действие или событие; например, он может отправить клиенту приветственное сообщение:

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

Чтобы распознать триггер, нужно определить тип сравнения (поле **«Тип совпадения»** ). Тип совпадения помогает чат-боту сравнить условие с сообщением клиента или другим действием (например, нажатием кнопки) и определить, какое событие запускать следующим.

В MaviBot есть пять типов сопоставления условий:

1. Нечёткое совпадение;
2. Совпадение по ключевым словам;
3. Совпадение по RegEx;
4. Точное совпадение;
5. Семантический поиск.

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

Давайте подробнее рассмотрим каждый из них.

### Нечёткое совпадение

Это основной тип сравнения, позволяющий боту обрабатывать орфографические ошибки, опечатки, неточности, пропущенные буквы и перестановку букв. Условие срабатывает, если сходство между строками выше 70%.

**Пример:**\
Для условия **«hello»**&#x441;работают следующие варианты: **«hlelo»**, **«hellp»**, **«helo»**&#x438; так далее.

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

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

Этот тип сравнения больше ориентирован на пользователя и учитывает человеческий фактор при обработке условий, поскольку опечатки встречаются довольно часто.<br>

Текст **Тип совпадения** «Нечёткое» идеально подходит для приветственного (начального) блока в сценарии чат-бота, где именно клиент начинает разговор.

### Совпадение по ключевым словам

**Совпадение по ключевым словам** — это очень мощный тип сравнения, который помогает создать консультанта, похожего на человека. При таком типе сопоставления бот будет отвечать на любое сообщение пользователя, содержащее хотя бы одно ключевое слово из условия.

Иными словами, если клиент отправит сообщение, содержащее одно или несколько ключевых слов из условия, сценарий запустится в соответствии с его настройками.

**Пример:**\
Для условия "hello;person" сработает следующее сообщение:\
"Я хочу поприветствовать этого замечательного человека."

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

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

В условие можно включить большое количество ключевых слов. Это позволяет чат-боту распознавать, что нужно клиенту в данный момент, и запускать соответствующее событие, настроенное внутри блока.

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

Как видно из примера выше, бот будет отвечать на любое сообщение, содержащее хотя бы одно из ключевых слов в условии.\
Этот тип совпадения также использует поле **«Игнорировать триггеры»** (сообщения, которые не должны вызывать ответ).

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

Это поле работает аналогично полю условия, но с противоположным эффектом: если сообщение пользователя содержит любые слова из **«Игнорировать триггеры»** поля, условие не будет срабатывать.

Соответственно, если условие в **«Игнорировать триггеры»** поле выполнено, общее условие не сработает.

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

Можно добавить дополнительный триггер, разделённый точкой с запятой, но что делать, если нужно сопоставить один из нескольких вариантов слова?

Например, чтобы обрабатывать фразы вроде «Мой интернет не работает», «Мой компьютер не работает» или «Мой компьютер сломался» одним триггером.

Очевидно, перечислять все варианты ключевых слов по одному непрактично. Поэтому был создан синтаксис OR. Чтобы указать одно из нескольких эквивалентных ключевых слов, поместите их все в скобки и разделите вертикальной чертой (`|`).

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

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

<div data-with-frame="true"><figure><img src="/files/bc7828037a5c63d36978c23baf3ccd3f835d147f" 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/c601fa04b8d29ffcde71478693cd25b45aad47c0" alt="" width="375"><figcaption></figcaption></figure></div>

Далее мы создадим блоки, в которые клиент должен перейти после нажатия кнопки после первого блока. Их должно быть четыре:

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

Затем в настройках стрелки вводим название кнопки и устанавливаем тип совпадения **«Точное совпадение».**

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

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

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

Как видите, бот корректно обрабатывает условие и выбор точного совпадения при использовании кнопок.

2. Использование тега сайта в воронке:

В этом случае принцип похож на использование кнопок; однако условие и тип совпадения настраиваются непосредственно внутри самого условного блока.

Здесь тег берётся из вкладки **Сайты** , где вы установили тег для страницы сайта:

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

Тег в условии блока указывается **непосредственно в поле CONDITION блока без использования слов «TAG» или любых других обозначений.**

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

{% hint style="info" %}
Подробнее о том, как настроить триггер бота с помощью тега, установленного на сайте, см. в статье **«Создание сайта и базовые настройки**[**"** в поле **«Тег»** .](/doc/ru/websites/saity/builder.md#tag)
{% endhint %}

Чат-бот также отреагирует и выполнит событие, настроенное в параметрах блока.

### Совпадение по RegEx

Совпадение по RegEx — это тип условия, который позволяет боту проверять формат введённых данных (например, убедиться, что пользователь ввёл номер телефона, а не что-то другое).

При сборе данных пользователи часто вводят информацию, отличающуюся от запрошенной. Вот типичный пример сценария проверки номера телефона. Если пользователь введёт что-то кроме действительного номера телефона, бот предложит попробовать ещё раз.

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

Из блока запроса номера телефона выходят две связи:

1. Одна связь **без триггера**
2. Другая связь с **regex-триггером** для проверки номера телефона

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

Связь с триггером добавляет номер телефона в запрос и сработает только тогда, когда будет обнаружен действительный номер телефона. Вторая связь сработает во всех остальных случаях, поскольку у неё более низкий приоритет.

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

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

Текст **"**&#x421;емантический поис&#x43A;**"** — опция, основанная на искусственном интеллекте, — настоящий прорыв для вашего чат-бота.

Как это работает:

* Триггер содержит слова или фразы, отражающие **СМЫСЛ** который ИИ определит в сообщении клиента.
* Система (чат-бот) обрабатывает сообщение клиента, ища смысл, заложенный в условии, внутри ввода клиента.
* Затем бот запускает соответствующее событие в блоке.

Иными словами, указывая определённые фразы или значения в условии, ИИ проверяет каждое условие относительно сообщения клиента и запускает соответствующее событие в блоке (например, отправку сообщения и т. д.).

Пример:

Мы указали определённые фразы и ключевые слова, которые ИИ должен обнаружить в сообщении клиента, чтобы запустить соответствующее событие внутри блока.

В нашем случае триггер включает фразы, связанные с «закрытием счетов или договоров».

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

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

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

Каждый раз, когда бот обрабатывает сообщение клиента, он корректно запускает нужное событие, определённое в блоке.

**Как написать триггер**\
Триггер вводится в соответствующее поле так же, как и другие условия для любого типа совпадения: через точку с запятой (;).

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

Лучше всего указывать фразы или слова в поле триггера максимально точно и кратко.

{% hint style="success" %}
Краткое, понятное и точное условие для блока помогает чат-боту корректно запускать событие, содержащееся внутри блока.

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

{% hint style="warning" %} <mark style="color:красный;">**Обратите внимание!**</mark>&#x20;

Триггер должен **NOT** состоять всего из одного слова: хотя условия должны быть краткими, они должны отражать смысл, который ищет бот.

Если модель сравнивает два разных отдельного слова, они не совпадут. Например, вместо слова «invoice» используйте условие «payment for the monthly invoice». Это условие лучше соответствует предполагаемым требованиям и предоставляет модели ИИ необходимые критерии для семантического сопоставления.
{% endhint %}

Таким образом, используя **"**&#x421;емантический поис&#x43A;**"** опцию, ИИ будет анализировать различные возможности, чтобы понять смысл сообщения клиента, и на основе совпадения чат-бот запустит соответствующее событие.

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

Триггер — это уникальная специализированная функция, предназначенная для быстрого создания триггеров внутри соответствующих блоков, чтобы реагировать на входящие callback-запросы из различных каналов, платёжных систем и других интеграций.

Соответственно, конструктор триггеров доступен только для блоков, поддерживающих триггеры:

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

Чтобы воспользоваться конструктором триггеров, откройте настройки блока, где вы увидите соответствующую кнопку, расположенную прямо над полем условия:

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

После нажатия соответствующей кнопки откроется окно для работы с условиями:

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

### Триггеры MaviBot

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

Текст **Вкладка «Триггеры MaviBot»** в конструкторе триггеров содержит все системные условия, которые хранятся и доступны для использования в различных разделах MaviBot.

**Триггеры по умолчанию**\
Эта функция работает аналогично вложенным условиям внутри блока: здесь вы указываете условия, которые **NOT** предустановлены в системе. Это может быть тег воронки, тег сайта или любое другое условие, существующее только в вашем проекте.

**Переменные**

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

Триггеры с переменными довольно легко настраиваются.

**Шаг 1.** Введите имя переменной в соответствующее поле.

**Шаг 2.** Выберите параметр сравнения.

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

Иными словами, укажите, с чем вы хотите сравнить переменную: с конкретным значением или с другой переменной.

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

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

Шаг 3. Выберите тип сравнения.

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

У каждого сравнения есть своё значение: равно (==); не равно (!=); строго больше (>); больше или равно (>=); строго меньше (<); меньше или равно (<=).

Пример:

<div data-with-frame="true"><figure><img src="/files/146b757ac5af8411580eb1253fd03cf0f6996ee9" 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/e8e04f7d24bd63b79b67fb11c892ecf98f5fe858" alt=""><figcaption></figcaption></figure></div>

В условиях разделов MaviBot есть типичные callback-и — системные уведомления — о различных событиях в проекте.

Чтобы запустить событие внутри блока на основе системных уведомлений, задайте нужный callback в поле условия, затем выберите тип совпадения и нажмите кнопку **«Добавить условие»** :

После этого условие появится в соответствующих полях внутри блока.

{% hint style="success" %}
Если в блоке уже есть условие, при нажатии кнопки **«Добавить условие»** будет добавлено новое условие **после** существующего. Если нужно заменить старое условие новым, нажмите **«Заменить условие».**
{% endhint %}

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

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

Конструктор условий в каналах помогает не только отслеживать реакции на посты или публикации, но и запускать события внутри блоков для ответа чат-бота.

### Оплата

<div data-with-frame="true"><figure><img src="/files/b38fafdef803ec7c9bbaa822c171ac5b0e68ec5e" 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/ru/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.
