> For the complete documentation index, see [llms.txt](https://docs.leadconverter.su/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.leadconverter.su/bots/blok-obrabotchik-sobytii.md).

# Блок «Обработчик событий»

{% hint style="success" %}
Ниже представлено видео по данной теме
{% endhint %}

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

{% hint style="info" %}
Альтернативные варианты просмотра видео: \
👉 [VK-видео](https://vkvideo.ru/video-136064993_456239148)\
👉 [Rutube](https://rutube.ru/video/private/e131530b859605b7a71961b20928e25c/?p=ZxtE2hafkFumdbLt8rBbuw)
{% endhint %}

Блок **"Обработчик событий"** в **LeadConverter** — это мощный инструмент, предназначенный для упрощения, структурирования и оптимизации логики ваших чат-ботов. Он позволяет задавать собственные события и запускать в ответ на них определённые действия — в любом месте сценария и даже в других ботах вашей кампании.

Этот блок особенно полезен, когда:

* Одни и те же действия нужно повторять в разных местах сценария;
* На одно событие нужно выполнить **несколько задач** одновременно (например, интеграции с CRM, уведомления, отправки данных через вебхук и т.д.);
* Вы хотите **централизованно** управлять логикой бота;
* Требуется масштабируемость и **удобное сопровождение** больших проектов.

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

В этой инструкции вы узнаете, как использовать блок **"Обработчик событий"**, как он устроен, какие настройки доступны и в каких случаях он принесёт максимальную пользу.

## Структура блока "Обработчик событий"

Блок **"Обработчик событий"** содержит несколько настраиваемых элементов, каждый из которых отвечает за определённую часть логики.

1. **Имя события.**

Это ключевой элемент блока. Сюда вводится название события, на которое должен среагировать обработчик. Это имя должно **в точности совпадать** с названием события, которое вы запускаете через блок **"Действие"** - **"Запустить событие"**.

{% hint style="warning" %}
Обработчик событий **ВСЕГДА** работает в паре с блоком **"Действия"** - **"Запустить событие".**
{% endhint %}

<figure><img src="https://1545507669-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MYOiJSIpC8f-Cm8cOEc%2Fuploads%2FNBvNRpjQ4svLij0AUw2b%2Fimage.png?alt=media&amp;token=c13f9fc8-d20b-4de0-aff8-9270347fe295" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Имя можно придумать **любое:** например: Оставлен телефон, Заказ оформлен, тестирование:успешно, и т.п.
{% endhint %}

{% hint style="info" %}
Регистр (заглавные или строчные буквы) **не имеет значения**.
{% endhint %}

{% hint style="warning" %}
Рекомендуем **копировать** название из блока действия, чтобы избежать несоответствий.\
\
Ошибки, пробелы, лишние символы приведут к тому, что обработчик **НЕ СРАБОТАЕТ!**
{% endhint %}

Так же в имени события можно использовать **маску события.**

**Маска события** позволяет задать шаблон, по которому будет срабатывать обработчик не на одно конкретное событие, а на **группу событий** с общим началом.

Для этого используется специальный символ — звёздочка `*`.

Если указать имя события как:

```
тестирование:*
```

то обработчик среагирует на все события, начинающиеся с `тестирование:` — например:

* тестирование: начато
* тестирование: завершено успешно
* тестирование: неудачно

<figure><img src="https://1545507669-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MYOiJSIpC8f-Cm8cOEc%2Fuploads%2FBSsVffABgqKlpt43B1IT%2Fimage.png?alt=media&amp;token=a08e444a-1bc2-44e9-b596-3e725915aaec" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
**Маска события** позволяет сократить количество обработчиков при одинаковой логике.
{% endhint %}

2. **Сохранить имя события в переменную.**

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

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

* Вы задаёте имя переменной, например: `статус_теста`.
* При запуске события, в переменную автоматически сохраняется его точное название.
* Вы можете использовать эту переменную в следующих блоках: для показа оператору, записи в CRM, в условиях сценария и т.д.

**Пример:**

Если сработало событие `тестирование:неудачно`, а в переменную записано это название, оператор получит сообщение:

> Пользователь завершил тест на стадии: **тестирование:неудачно**

<figure><img src="https://1545507669-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MYOiJSIpC8f-Cm8cOEc%2Fuploads%2Fhl2deD5LMZ3oMLflhSlC%2Fimage.png?alt=media&amp;token=b2d91b77-d357-45b8-b6ae-d52ca769eb6b" alt=""><figcaption></figcaption></figure>

3. **Следующий шаг. (Выходы событий)**

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

<figure><img src="https://1545507669-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MYOiJSIpC8f-Cm8cOEc%2Fuploads%2FjSiHZ6nKYyViBAPzsycX%2Fimage.png?alt=media&amp;token=275e97e9-55fa-471d-b27b-d592123777a8" alt=""><figcaption></figcaption></figure>

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

* В настройках "**Обработчик событий**" добавляются события: `тестирование`, `передача`
* На визуальной схеме блока появятся **отдельные** желтые выходы для каждого события.
* Далее вы соединяете каждый выход с соответствующей логикой сценария.

<figure><img src="https://1545507669-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MYOiJSIpC8f-Cm8cOEc%2Fuploads%2F2nVTeX4SxzXVgbjiof5a%2Fimage.png?alt=media&amp;token=5c5f21ea-d499-4bca-8cbb-95b1ba5096ff" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Если конкретный выход **не указан** для события, сработает **общий** выход блока (по умолчанию).
{% endhint %}

<figure><img src="https://1545507669-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MYOiJSIpC8f-Cm8cOEc%2Fuploads%2FHYiEONO2xk6W4JyGki5A%2Fimage.png?alt=media&amp;token=9c1cc1fa-84ab-47e7-b8b5-fb4860a1f164" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}
Если от события **есть** соединение — оно будет выполнено.

Если соединения **нет**, но есть общий выход — выполнится он.

Если никаких **соединений нет** — ничего не произойдёт.
{% endhint %}

## Как использовать "Обработчик событий" в сценарии

1. Создаем блок **"Действия",** в том месте сценария, где должно произойти событие.

<figure><img src="https://1545507669-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MYOiJSIpC8f-Cm8cOEc%2Fuploads%2Fi4hRXZQdloPU3vk7gyGT%2Fimage.png?alt=media&amp;token=cf6724a1-3f5b-4dfb-829e-b2fe7e958e21" alt=""><figcaption></figcaption></figure>

2. Открываем блок действия в режиме "Редактирования" и выбираем тип действия **"Запустить событие".**

<figure><img src="https://1545507669-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MYOiJSIpC8f-Cm8cOEc%2Fuploads%2FdGpK87OB1F0wToRhxiPz%2Fimage.png?alt=media&amp;token=ecb42987-84b8-48fb-b5c5-1388500bc9af" alt=""><figcaption></figcaption></figure>

3. Вводим любое понятное **имя** события.

<figure><img src="https://1545507669-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MYOiJSIpC8f-Cm8cOEc%2Fuploads%2FC9hM3NIcdlyE8OLF0wlv%2Fimage.png?alt=media&amp;token=dacc14f4-44ed-4a7f-8110-aac574f7291d" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}
Это название должно совпадать с тем, что вы укажете в блоке "**Обработчик событий**".
{% endhint %}

4. Сохраняем блок.

<figure><img src="https://1545507669-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MYOiJSIpC8f-Cm8cOEc%2Fuploads%2FClvu7FBc7KPUa22aAano%2Fimage.png?alt=media&amp;token=0bce227a-0a90-4f1d-9791-df0a1b37e8b2" alt=""><figcaption></figcaption></figure>

4. В любом месте сценария (даже в другом боте), добавляем блок **"Обработчик событий"**.

<figure><img src="https://1545507669-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MYOiJSIpC8f-Cm8cOEc%2Fuploads%2Fnz3v8d0aORSUpglxS11v%2Fimage.png?alt=media&amp;token=8647bddd-b9fd-418b-9559-46e460d1eaf7" alt=""><figcaption></figcaption></figure>

4. Открываем блок **"Обработчик событий"** в режиме "Редактирования" и в поле **"Имя события"** указываем точное название события, на которое он должен среагировать. (рекомендуем копировать название из блока "**Действия**")

<figure><img src="https://1545507669-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MYOiJSIpC8f-Cm8cOEc%2Fuploads%2FGklikA3YlfWugl4eRXGF%2Fimage.png?alt=media&amp;token=18d22cd0-db65-4810-b673-0007cbc0cde5" alt=""><figcaption></figcaption></figure>

5. Сохраняем имя события в переменную. Далее мы укажем ее в цепочке события, которая будет выполняться.

<figure><img src="https://1545507669-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MYOiJSIpC8f-Cm8cOEc%2Fuploads%2Fif16qLvuMJBt0DUR0KvJ%2Fimage.png?alt=media&amp;token=4be895d2-1d4b-499c-b307-ca94cdc4647d" alt=""><figcaption></figcaption></figure>

6. Сохраняем блок.

<figure><img src="https://1545507669-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MYOiJSIpC8f-Cm8cOEc%2Fuploads%2FifxZBsIjUBn1jmpbBqT7%2Fimage.png?alt=media&amp;token=006d345c-08fd-4b4e-ada1-0b2214688e9d" alt=""><figcaption></figcaption></figure>

7. Создаем новый блок **"Действия"** и выбираем тип **"Отправить оператору".**

<figure><img src="https://1545507669-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MYOiJSIpC8f-Cm8cOEc%2Fuploads%2FJJCONirX7BoHwBGCdU3a%2Fimage.png?alt=media&amp;token=044a1364-fe08-4803-a639-ec4ea9aed3b8" alt=""><figcaption></figcaption></figure>

8. Выбираем пользователя, который будет получать это уведомление, в качестве оператора.

<figure><img src="https://1545507669-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MYOiJSIpC8f-Cm8cOEc%2Fuploads%2FSuITWDH4k8oWnhjbXWbA%2Fimage.png?alt=media&amp;token=f4765b12-35e5-4053-ad60-cb458d0e845b" alt=""><figcaption></figcaption></figure>

8. В поле **"Текст сообщения**" указываем нужную для нас информацию, а так же переменную из обработчика событий.

<figure><img src="https://1545507669-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MYOiJSIpC8f-Cm8cOEc%2Fuploads%2FVAPaDT9lMaKGNzYww9S1%2Fimage.png?alt=media&amp;token=34306a75-c7b2-40a1-b048-95823ca8bfc9" alt=""><figcaption></figcaption></figure>

9. Сохраняем блок.

<figure><img src="https://1545507669-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MYOiJSIpC8f-Cm8cOEc%2Fuploads%2F0DqnaRps6N7KoocFMeal%2Fimage.png?alt=media&amp;token=b55af5ac-47bc-4e27-8f25-5722fb7549b4" alt=""><figcaption></figcaption></figure>

10. От желтого выхода события, проводим связь на блок "Действия"- **"Отправить оператору".**

<figure><img src="https://1545507669-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MYOiJSIpC8f-Cm8cOEc%2Fuploads%2FhRQoTRCyhYtr2u41m23o%2Fimage.png?alt=media&amp;token=b338c9a2-5f93-4bc1-bbcb-196fa28660c1" alt=""><figcaption></figcaption></figure>

Тестируем работу воронки.

<figure><img src="https://1545507669-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MYOiJSIpC8f-Cm8cOEc%2Fuploads%2F2GHfWHNoEGuf6sqmaQ12%2Fimage.png?alt=media&amp;token=39794477-251c-4f23-9afc-9f2ff836383e" alt=""><figcaption></figcaption></figure>

Когда пользователь завершил тест, бот запустил событие **"тестирование завершено".**

Обработчик событие отреагировал на этот запуск и выдал прописанную цепочку сценария. В данном случае **"Отправка уведомления оператору".**

<figure><img src="https://1545507669-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MYOiJSIpC8f-Cm8cOEc%2Fuploads%2F9PCxHu7fuachXNAelWdV%2Fimage.png?alt=media&amp;token=9e3c3580-dae9-436f-9131-fe672609f677" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}
**Обратите внимание**, так как мы указали в сообщении оператору переменную, в которой хранится имя события, автоматически подставилось именно оно.
{% endhint %}

## Основные особенности блока "Обработчик событий"

<table><thead><tr><th>Особенность</th><th>Что это значит?</th><th data-hidden></th></tr></thead><tbody><tr><td><strong>Нельзя проводить входящие связи к блоку</strong></td><td><p>Обработчик <strong>не должен</strong> быть связан стрелкой с предыдущими блоками.<br></p><p>Он работает пассивно — просто «слушает» события, которые запускаются в других местах сценария.</p></td><td></td></tr><tr><td><strong>Можно создавать несколько обработчиков на одно событие</strong></td><td><p>Вы можете добавить <strong>несколько блоков</strong> обработчиков с одинаковым названием события — и все они сработают при его запуске.</p><p></p><p>Это удобно, если нужно разделить обработку <strong>на независимые ветки</strong>: например, один блок отправляет вебхук, другой пишет в CRM, третий уведомляет оператора.<br></p><p>Обработчики можно размещать в разных местах <strong>одного бота</strong> или даже в <strong>разных ботах</strong>.</p></td><td></td></tr><tr><td><strong>Работает между ботами</strong></td><td><p>Обработчик события может находиться <strong>в любом</strong> другом боте внутри одной кампании — событие «переходит» между ботами.</p><p><br>Сценарий может запускать событие в одном боте, а логика обработки будет происходить <strong>в</strong> другом.</p><p><br>Это особенно полезно для <strong>централизованной логики</strong>: интеграций, уведомлений, общего учета и т.п.</p></td><td></td></tr><tr><td><strong>Не работает в неактивном боте</strong></td><td>Если бот, в котором расположен обработчик, отключён, событие <strong>не будет обработано</strong>, даже если оно было запущено правильно.</td><td></td></tr><tr><td><strong>Имеет выход по умолчанию</strong></td><td><p>Если событие сработало, но в блоке <strong>не найден</strong> соответствующий выход, будет использоваться <strong>общий выход</strong> (по умолчанию).</p><p></p><p>Это "запасной маршрут" — полезно, если вы хотите выполнить действия <strong>при любом событии</strong>.</p></td><td></td></tr><tr><td><strong>Поддерживает маски и переменные</strong></td><td><p>Блок поддерживает:</p><p><strong>Маски событий</strong> — для групповой обработки похожих событий;</p><p><br><strong>Сохранение</strong> имени события в переменную — для гибкой логики и повторного использования.</p><p></p><p>Вы можете сократить количество блоков, если события имеют общую структуру (например, <code>покупка:*</code>).<br></p><p>Переменная позволяет понять, <strong>какое именно событие сработало</strong>, и отреагировать на него.</p></td><td></td></tr></tbody></table>

{% hint style="success" %}
Остались вопросы? Задайте их в нашу техподдержку!

Мы всегда рады помочь ☺️👇
{% endhint %}

{% content-ref url="/pages/-MasAPNcg291uNezFqb4" %}
[Как задать вопрос в поддержку?](/kak-zadat-vopros-v-podderzhku.md)
{% endcontent-ref %}
