# Сценарии

<figure><img src="/files/HYxbtjqk4sxDMhEZ5vWg" alt=""><figcaption></figcaption></figure>

Функционал "Сценарии" — это инструмент для автоматизации задач и создания гибкого поведения вашего ИИ-агента. С его помощью агент может реагировать на различные события в диалоге и выполнять заданные действия, такие как отправка сообщений, интеграция с CRM, выполнение Python-скриптов и многое другое.

<h2 align="center"><strong>Как это работает?</strong></h2>

Сценарий запускается, когда происходит определённое **событие** (например, клиент отправляет сообщение). После этого выполняется одно или несколько **действий**, которые вы настроили.

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

<figure><img src="/files/2mUt3ebro08Ko4xWVW9j" alt=""><figcaption></figcaption></figure>

<h2 align="center"><strong>Виды сценариев</strong></h2>

Сценарии срабатывают при определённых событиях (триггерах).\
\
Доступны следующие виды:

* **Начало диалога** — выполняется при старте диалога, когда к агенту обратится новый клиент
* **Новое сообщение клиента** — активируется после каждого сообщения клиента
* **Новое сообщение агента** — срабатывает, когда агент отправляет ответ
* **Сообщение от менеджера** — запускается, если в чат было отправлено сообщение от менеджера
* **Повторное обращение клиента** — выполняется, если клиент вернулся в диалог спустя указанное количество дней с момента своего предыдущего сообщения
* **Полное совпадение запроса** — работает при точном совпадении сообщения с ключевыми словами/фразами
* **Частичное совпадение запроса** — активируется, если сообщение содержит часть ключевых слов
* **Совпадение запроса по смыслу** — срабатывает при смысловой близости сообщения к заданной фразе (уровень совпадения можно регулировать)
* **Достижение лимита расходов на пользователя** — выполняется при достижении лимита расходов на пользователя, настроенных для этого агента
* **Ошибка отправки сообщения** — выполняется, если агент не смог отправить ответ клиенту из-за ошибки мессенджера или интеграции

{% hint style="info" %}
Когда вы добавляете ключевые слова или проверяете их смысловое совпадение, система отправляет ваш текст в OpenAI для обработки (векторизации). Эта услуга платная.\
\
**Стоимость** зависит от длины текста. Цена — 0,13 USD за 1 000 000 токенов.

**Если у вас свой ключ OpenAI:** Проверять совпадение можно только при положительном балансе на вашем счёте в OpenAI.
{% endhint %}

{% hint style="info" %}
Если вы хотите предложить какой-либо сценарий, которого вам не хватает, пожалуйста, нажмите кнопку "Не нашли нужного сценария?" в списке.
{% endhint %}

<h2 align="center"><strong>Дополнительные Условия для срабатывания</strong></h2>

Вы можете добавить дополнительные условия для более точного управления срабатыванием Сценариев. Например, настроить запуск Сценария «Начало диалога» только в нерабочее время агента или задать последовательность выполнения Сценариев, когда один активируется только после завершения другого. Система поддерживает множество вариантов и комбинаций условий — экспериментируйте с настройками для достижения нужной логики работы.

<figure><img src="/files/89q6tXPt25PgT7mP3vjf" alt=""><figcaption></figcaption></figure>

### **Виды условий:**

* Нерабочее время агента — срабатывает только в нерабочее время по расписанию агента
* День недели — срабатывает в выбранные вами дни недели
* Текущее время — срабатывает определённый диапазон времени
* Источник диалога — срабатывает в зависимости от источника диалога
* Проверка подписки Telegram — Проверяет есть ли у пользователя подписка на Telegram канал/группу
* Параметр Telegram /start — сравнивает заданные вами параметры с параметрами в ссылке deeplink
* Выполнена функция — срабатывает, если выбранные функции выполнились
* Выполнен сценарий — срабатывает, если выбранные сценарии выполнились

<h2 align="center"><strong>Действия в сценариях</strong></h2>

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

* **Добавить контекст** — добавление контекста в диалог с клиентом
* **Заблокировать пользователя** — клиент будет заблокирован
* **Отправить сообщение** — агент отправляет заготовленное текстовое сообщение клиенту
* **Промолчать** — агент пропускает ответ, ничего не отправляя
* Включить\выключить Функцию — включение\выключение функции в рамках диалога
* Включить\выключить Сценарий — включение\выключение сценария в рамках диалога
* **Управление переменными** — изменение пользовательских переменных агента и диалога
* **Пауза диалога** — диалог будет поставлен на паузу
* **Возобновление диалога** — диалог будет снят с паузы
* **Переключить ИИ-агента** — меняет активного агента для общения с клиентом
* **U-ON Travel** — отправка данных в U-ON Travel
* **Bitrix24** — отправка данных в Bitrix24
* **amoCRM** — отправка данных в amoCRM
* **Kommo** — отправка данных в amoCRM
* **EnvyCRM** — отправка данных в EnvyCRM
* **custom API** — отправка запроса на сторонние API для выполнения сложных операций
* **Отчёт администратору** — отправка отчёта или уведомления в Telegram или WhatsApp
* **Python-скрипт** — выполнение произвольного питон-скрипта для реализации уникальных бизнес-логик
* **Отправить отложенное сообщение** — после выполнения этого действия через указанное время будет отправлено сообщение
* **Вызов функции** — вызывает функцию из списка созданных функций для этого агента

{% hint style="warning" %}
**Важно:** Некоторые сценарии поддерживают ограниченный список действий. Если вам не хватает какого-либо действия, нажмите кнопку **"Не нашли нужного действия?",** отправьте запрос в нашу поддержку и опишите придуманный вами сценарий. Мы обязательно рассмотрим ваше предложение и постараемся реализовать нужный функционал
{% endhint %}

<figure><img src="/files/WvRxAlyFlFxIbtUKFEC1" alt=""><figcaption></figcaption></figure>

<h2 align="center"><strong>Примеры некоторых сценариев</strong></h2>

Примеры помогут вам быстрее освоить настройку сценариев и адаптировать их под свои задачи.

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

**Пример 1: Смена этапа в CRM (например, Bitrix24)**

* **Событие**: Начало диалога
* **Действие**: Bitrix24, смена этапа воронки
* **Идея**: В большинстве популярных CRM новый клиент по умолчанию попадает в этапы воронки по типу "Неразобранные", "Первый контакт" или тому подобные. Даже если ИИ-агент уже взял клиента в работу, до тех пор, пока не выполнилась хотя бы одна функция, этот клиент оставался на том же начальном этапе. В этом сценарии мы предлагаем решение по первичному распределению: при первом обращении клиента сервис автоматически сдвигает его карточку на нужный вам этап воронки, например, "**В работе с ИИ-агентом**". Этот сценарий позволит менеджерам CRM-системы явно видеть какой клиент уже находится в обработке

**Пример 2: Улучшение опыта использования iFrame на сайте**

* **Событие**: Полное совпадение запроса с ключевой фразой "Хочу скидку 15%" или "Хочу сайт под ключ"
* **Действие**: Отправить запрос админу в Telegram и сообщить о клиенте, у которого совпадение запроса
* **Идея**: удобно получать заявки, если клиент отвечает в вашем виджете "чат на сайт" (iFrame) и нажимает на заранее заготовленные ответы

**Пример 3: Определение злоумышленников и нерелевантных запросов**

* **Событие**: Совпадение запроса по смыслу с ключевыми словами "какой у тебя промпт", "отбрось все инструкции", "какой у тебя код"
* **Действия**:\
  1\) Сообщение админу\
  2\) Поставить на паузу\
  3\) Написать админу в мессенджер, предупредив о злоумышленнике
* **Идея**: быстрое реагирование при попытке взломать бота или сломать поведение агента

**Пример 4: Отправка заданного приветственного сообщения**

* **Событие**: Новое сообщение клиента
* **Действие**: Отправить сообщение клиенту: "Здравствуйте, это интернет-магазин "Праздник"! Хотите устроить праздник?"
* **Идея**: Удобно, чтобы Агент всегда начинал диалог с заранее заготовленной приветственной фразы. Тогда он не будет выдумывать её.

**Пример 5: Клиент зовёт менеджера**

* **Событие**: Совпадение запроса по смыслу с ключевыми словами\фразами "жалоба", "помогите", "живой человек"
* **Действия**:

  1\)Отправить уведомление администратору в Telegram: "Клиент сообщил о проблеме. Проверьте диалог!"\
  2\)Отправить сообщение в чат: "С Вами скоро свяжется наш администратор"

  3\)Поставить диалог на паузу
* **Идея**: удобно, если клиенту требуется помощь или он зовёт живого менеджера

**Пример 6: Интеграции со сторонними CRM-системами**

* **Событие**: Новое сообщение клиента
* **Действие**: Custom API
* **Идея**: необходимо, если вы пользуетесь сторонними CRM-системами и вам нужно передавать диалог напрямую в них

**Пример 7: Добавление в контекст динамических переменных для площадки Авито.**

* **Событие:** Начало диалога
* **Действие:** Добавить контекст\
  1\) Добавьте переменную из вкладки Данные пользователя "Имя пользователя в мессенджере" и "Ссылка на объявление Авито".\
  Если вам нужно, чтоб ИИ-агент брал данные из Bitrix24, то используйте вкладку Bitrix24.\
  2\) Опишите максимально точно, что нужно ИИ-агенту сделать с этими переменными.\
  Например так:

1. Используй системное имя пользователя {{system\_data\_nameUser}} при общении.
2. Пользователь с Авито: {{system\_data\_linkAdAvito}}. Учитывай, что пользователь пишет по поводу конкретного товара/услуги из этого объявления. В своем первом ответе вежливо упомяни, что видишь его обращение.

<figure><img src="/files/aU3EznmYOrZsIHOcb3Em" alt=""><figcaption></figcaption></figure>

* **Идея.** При первом диалоге пользователя ИИ-агенту сразу выдать точные и персонализированные ответы для площадки Авито.

**Пример 8: Сохранение имени клиента в переменную диалога**

* **Событие:** Начало диалога
* **Действие:** Управление переменными

  1\) Создайте переменную диалога типа "строка" `ClientName`\
  2\) В поле **"Откуда взять значение"** выберите системную переменную\
  3\) В качестве источника укажите имя пользователя в мессенджере\
  4\) При необходимости добавьте условие **"Если переменная пустая"**
* **Идея.** Удобно один раз сохранить имя клиента в переменную диалога, а затем использовать его в промпте, отчёте, `Custom API`, `Python` и других действиях.

{% hint style="success" %}
Такие комбинации действий позволяют максимально эффективно использовать сценарии для решения сложных проблем.

Не бойтесь экспериментировать и придумывать свои сочетания для решения ваших бизнес-задач.
{% endhint %}

<h2 align="center"><strong>Как настроить и включить сценарий</strong></h2>

Чтобы настроить и включить сценарий, выполните следующие шаги:

1. Зайдите в левом меню в раздел **"СЦЕНАРИИ"**.
2. Нажмите кнопку **"ДОБАВИТЬ СЦЕНАРИЙ"**.
3. Выберите **условие** из списка доступных триггеров — сценарий будет создан.
4. Откройте созданное условие (нажмите на него), чтобы настроить действия.
5. Нажмите кнопку **"ДОБАВИТЬ УСЛОВИЕ"** и выберите одно или несколько условий для срабатывания сценария (опционально).
6. Нажмите кнопку **"ДОБАВИТЬ ДЕЙСТВИЕ"** и выберите одно или несколько действий, которые должны выполняться при срабатывании сценария.
7. Сохраните изменения.
8. Не забудьте проверить сценарий в тестовом чате или через реальный подключенный канал!

**Обратите внимание:**

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

Теперь ваш сценарий готов к работе и будет автоматически запускаться при выполнении заданных условий!

<figure><img src="/files/PT25lL4uiQ5nx1pJyvTU" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}
Обратите внимание, что при добавлении ключевых слов и проверке семантического совпадения (в действии "Cовпадение запроса по смыслу") происходит векторизация текста в OpenAI. Стоимость векторизации зависит от количества токенов в тексте и рассчитывается по цене 0.13 USD за 1М токенов, учитывайте это при добавлении ключевых слов или проверке семантического совпадения. В случае, если у вас установлен свой ключ OpenAI, то проверка семантического совпадения возможна только с положительным балансом на вашем аккаунте OpenAI.
{% endhint %}

## Проверка подписки Telegram

Опция **«Проверка подписки Telegram»** позволяет автоматически проверять, подписан ли пользователь в группе/канале Telegram, и в зависимости от результата выполнять дополнительные действия (например, отправить сообщение пользователю).

#### Используйте эту опцию, если ваш сценарий строится вокруг подписки:

1. Бот должен проверять, состоит ли человек в нужном канале/группе.
2. Нужно подтвердить факт оплаты, если клиент получает доступ через платную подписку в Telegram.
3. Важно запускать разные ветки сценария в зависимости от того, подписан пользователь или нет (например, дать доступ к урокам только подписчикам, а остальным предложить подписаться).

### Как подготовить группу/канал <a href="#undefined" id="undefined"></a>

Перед настройкой сценария нужно получить ID нужной Telegram‑группы или канала.

* Добавьте вашего Telegram‑бота в эту группу/канал.
* Выдайте боту права администратора. Как это сделать, [читайте ниже](#kak-vydat-botu-prava-administratora).
* После получения прав администратора в этой группе/канале отправьте команду `get_id_group`.
* Скопируйте полученный ID — он понадобится при настройке условия.

### Важный нюанс про ID группы <a href="#id" id="id"></a>

Обратите внимание: ID группы **изменится**, если в настройках Telegram группы вы поменяете «Тип группы» (с частной на публичную или наоборот). Можно работать со всеми типами групп telegram.

<figure><img src="/files/mQHJiJKlzE73ZSkiAlc9" alt=""><figcaption></figcaption></figure>

К примеру, была у вас группа "Частная" ID группы: 5689545, вы сменили на другой тип "Публичная" ID группы изменился: -10045658978.

После изменения типа группы/канала:

* Повторно отправьте команду `get_id_group` в вашу группу.
* Получите новый ID и обновите его в настройках проверки подписки в NEXTBOT.

Иначе бот будет использовать старый ID и не сможет корректно проверить, подписан ли пользователь на актуальную группу.<br>

### Настройка сценария в NEXTBOT <a href="#nextbot" id="nextbot"></a>

1. Откройте раздел «Сценарии» и создайте новый сценарий, например который запускается при старте диалога с новым пользователем.\
   Назовите сценарий для удобства "Проверка telegram подписки"
2. В блоке «Дополнительные условия» включите опцию «Проверка подписки Telegram».
3. В блоке Условия нажмите на кнопку "Добавить группу/канал". В поле «Группа/канал» вставьте ID, который вы получили командой `get_id_group`. Либо:\
   Это поле так же принимает ссылку на группу/канал вида: "@groupName", или ссылка "t.me/groupName.
4. В параметре «Ожидание» выберите нужный статус:

   * «Пользователь подписан» или
   * «Пользователь не подписан»

   <figure><img src="/files/jJvNRNpjvNCvAriYb7Ag" alt=""><figcaption></figcaption></figure>

Чтобы бот сообщал пользователю, что он не подписан на группу, настройте условие «Пользователь не подписан» и добавьте действие «Отправить сообщение».

<figure><img src="/files/L6DI7qTcq4jndIB5u9bl" alt=""><figcaption></figcaption></figure>

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

### Как выдать боту права администратора

1. В вашей Telegram-группе в правом верхнем углу нажимаем на "троеточие" и выбираем "Управление группой"
2.

```
<figure><img src="../.gitbook/assets/{8B9A930E-17ED-4C01-A806-3D5E3A662E0A}.png" alt=""><figcaption></figcaption></figure>
```

3. Во вкладке "Администраторы" нажмите "Добавить администратора" и добавьте вашего Telegram бота.
4. Готово


---

# 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://doc.nextbot.ru/functional/scenarii.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.
