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

Есть базовые и продвинутые узлы.
БАЗОВЫЕ УЗЛЫ:

Узлы делятся на 4 типа:
1. трансферы - Вход:
- визуализирует вход в ветку чат-бота
- это обязательный стартовый узел для каждой ветки
- их может быть неограниченное количество в рамках одной ветки чат-бота, для того чтобы делить на части большие схемы чтобы они удобнее читались.
- при делении схемы чат-бота на ветки, узел вход используется для связи с другими ветками
- на узел вход ссылается узел точка выхода При клике на узел, открывается его меню. Задайте имя ссылки:

Flomni присваивает идентификатор узлу по умолчанию, его можно оставить как есть, но удобнее вписать свое имя, чтобы было удобнее ориентироваться в ветках бота и при выборе в узлах выходах.
Список всех выходных узлов, которые ссылаются на эту точку входа, можно посмотреть, кликнув на заданное имя. Перейдя по ссылке, вы попадете в ветку к выходному узлу, который ссылается на этот входной узел
Также можно включить “Собрать данные”, для сбора статистики по настраиваемому боту, задав тип идентификатора события (название, которое будет отображаться в статистике). Обратите внимание, что идентификаторы не могут иметь одинаковых названий. Название должно быть уникальным и отличаться от названия трансфера, так как в противном случае появится ошибка о дублировании идентификатора.

1. трансферы - Выход:
- визуализирует вход из ветки чат-бота
- обязательно должен ссылаться на узел точка входа
- при делении схемы чат-бота на ветки, узел выход используется для связи с другими ветками через узлы входа В точке входа, необходимо выбрать идентификатор узла точки выхода.
При достижении алгоритмом узла “Точка выхода”, будет осуществлен переход в указанную точку входа. Это может быть тот же или другой алгоритм.

2. действия - Сообщение:
- главный узел в структуре чат-бота для взаимодействия с пользователем, через кнопки и ввод текста
- единственный узел, действия которого, видны в чат-виджете или мессенджере. С помощью узла сообщение есть возможность отправить: текст, картинку, файл, контакт, локацию, видео и аудио. К каждому сообщению можно добавить кнопки для взаимодействия с пользователем Нажмите на узел и перетащите его на конструктор


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

-текст - простой текст, может содержать переменные
-изображение - файл изображения PNG или JPEG, а также GIF
-файл — любой файл до 10Мб
-видео — любое видео до 10Мб
-аудио
-местоположение
-контакт
- содержимое - текст сообщения, дополнительные параметры, в зависимости от выбранного шаблона

- кнопки - элемент для взаимодействия с пользователем. Можно добавить до 10 кнопок. При этом некоторые каналы поддерживают меньшее количество кнопок, подробнее можно почитать в разделе “требования к шаблонам”
кнопки бывают трех типов:

-URL - это кнопка, по клику на которую, будет осуществлен переход на другую веб страницу. К этой кнопке нельзя присоединить связь
-переход - это кнопка, по клику на которую будет осуществлен переход в следующий по схеме узел чат-бота
-пользовательский массив - это специальный тип кнопки, который принимает на вход из переменной массив кнопок. Этот тип нужен, для построения сложных схем чат-бота, когда кнопки заранее неизвестны и формируется динамически. Если вашему чат-боту необходимо использовать такой тип кнопки, напишите нам, мы поможем
Задайте кнопке метку (текст, отображаемый на кнопке), а также можно задать условие (при котором кнопка будет отображаться). Условия описаны дальше в этом разделе.

Можно управлять возможностью вводить сообщение для пользователя. Например, где требуется нажатие на кнопку, запретить ответы пользователя и активировать их только в тех моментах, где мы этого ожидаем

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

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

-включить бота - активирует чат-бота
-добавить транзакцию пользователя - сохраняет специальный идентификатор пользователя, по которому будет возможен поиск через диалоги и аналитику (например, номер договора, код клиента и т.п.)
-добавить событие в статистику - это сложный тип, для продвинутых пользователей. Если вы не нашли подходящего типа для вашего кейса, напишите нам, мы поможем
-остановить бота - деактивирует чат-бота
-установить язык для клиента - устанавливает язык общения бота с клиентом
-сохранить имя пользователя - сохраняет имя CRM профиль пользователя
-архивировать чат в диалогах - архивирует диалог с пользователем, обычно используется если пользователь долго не отвечал
-сохранить данные в профиль пользователя - сохраняет данные в CRM профиль пользователя. Необходимо указать CRM поле и его значение
-отправить email - отправляет письмо пользователю. Необходимо указать email, тему и тело письма. По дефолту email будет отправлен с ящика Flomni. Если вам необходима возможность отправлять email со своего ящика, напишите нам
-делегировать диалог оператору не отключая бота - передает диалог с пользователем в очередь входящих диалогов у агентов в сервисе диалоги без деактивации чат-бота
-открыть линкер-виджет - используется для того, чтобы перевести клиента из онлайн-чата на сайте в мессенджер
-отключить бота и делегировать диалог оператору
-задания - добавить запись
-задания - изменить запись
-задания - получить информацию
3. логика - Условие:
- позволяет проверить соблюдение одного или нескольких логических событий и в зависимости от результата обработать событие. Например, если необходимо, чтобы сработало два события, но каждое при разных условиях, можно сделать условие по типу Если да - первое событие, Если нет - второе событие.
- в узел условие можно добавить как одно, так и несколько различных условий и для каждого сделать свое уникальное следующее событие
Может состоять из одного условия или содержать несколько типов

- Значение 1 - выбираем переменную (для этого вводим @ и выбираем необходимую нам переменную), значение которой мы будем проверять на соответствие условию
- Значение 2 - вводится значения для переменной указанной в Значении 1. Оно может быть как переменной (значение будет взято из переменной), так и любым иным текстовым, буквенным, цифровым значением. *Условие:
-Содержит - проверяет содержание значения 2 в значении 1. Например, Name содержит Иван. Условие сработает только в том случае, если переменная Name будет содержать имя Иван. Если значение иное - сработает выход “Если нет”
-Не содержит - проверяет отсутствие значения 2 в значении 1. Например, Name не содержит Иван. Условие сработает только в том случае, если переменная Name не будет содержать имя Иван. Если значение иное - сработает выход “Если нет”
-Равно - указывает, что значение 1 равно значению 2. Например, условие Сумма_к_оплате равно 10000. Условие сработает только в том случае, когда значение переменной Сумма_к_оплате будет равно 10000
-Не равно - указывает на неравенство значения 1 и значения 2. Например, условие Сумма_к_оплате не равно 10000. Условие сработает только в том случае, когда значение переменной Сумма_к_оплате будет не равно 10000
-Больше - указывает, что значение 1 больше значения 2. Например, условие Сумма_к_оплате больше 10000. Условие сработает только в том случае, когда значение переменной Сумма_к_оплате будет больше 10000
-Меньше - указывает, что значение 1 меньше значения 2. Например, условие Сумма_к_оплате меньше 10000. Условие сработает только в том случае, когда значение переменной Сумма_к_оплате будет меньше 10000
-Больше или равно - указывает, что значение 1 больше или равно значению 2. Например, условие Сумма_к_оплате больше или равно 10000. Условие сработает только в том случае, когда значение переменной Сумма_к_оплате будет равно 10000 или больше 10000
-Меньше или равно - указывает, что значение 1 меньше или равно значения 2. Например, условие Сумма_к_оплате меньше или равно 10000. Условие сработает только в том случае, когда значение переменной Сумма_к_оплате будет равна 10000 или меньше 10000
-Присутствует - показывает, что значение 1 существует. Например, условие Name присутствует сработает только в том случае, когда будет присутствовать значение переменной Name (не равно null)
-Не присутствует - показывает, что значение 1 не существует. Например, условие Name не присутствует сработает только в том случае, когда не будет присутствовать значение переменной Name (равно null)
-Регулярное выражение - показывает, что значение 1 соответствует выражению значения 2. Условие сработает только в том случае, когда значение 1 соответствует значению 2.
3. логика - Анализатор текста:
- принимает свободный текст, введенный пользователем, и проводит сопоставление текста по regexp шаблонам, описывая его дальнейшую обработку.
- узел анализирует, что написал клиент и если это совпадает с тем, что в него добавили — выдает соответствующий сценарий.

- Тип - определяет, полностью ли указанное пользователем значение должно совпадать или частично. Соответственно, тип имеет два варианта - полное совпадение и частичное совпадение
- Тексты - сюда добавляем примеры текстов, которые должен определять по тексту анализатор. Можно добавить любые слова или даже фразы, которые необходимы. Если вы хотите в 1 строку добавить несколько примеров по одной тематике, тогда эту строку необходимо начинать с ^( каждый пример разделять | и заканчивать строку )$.

Анализатор по проверке маски телефона будет выглядеть так: ^+?(7|8)\d{10}$. Таким образом, мы можем запросить у клиента номер телефона и после получения данных, провести его анализ по маске для телефона. Если данные не совпадают, можно запросить у клиента ввести номер повторно или выдать любую иную фразу или перевод на оператора.
4. хранилище - Запомнить данные:
сохраняет данные из предыдущего узла и хранит их в переменной. Например, с помощью данного узла вы можете сохранить введенные клиентом имя, телефон, номер накладной и другие данные
-Переменная, которую нужно сохранить - выбирается заранее созданная переменная, в которую мы будем сохранять полученные от клиента данные
-Ожидаемый тип данных:
- JSON - описывает объект, который возвращается при наступлении события
- Значение - для сохранения текста или нажатой кнопки
- Вход узла
-Значение, которое нужно сохранить - что нужно сохранить.
Чтобы сохранить текст, выбираем “Сообщение пользователя” из системных переменных, тем самым мы сохраним то, что ввёл клиент.
Чтобы сохранить значение кнопки, записываем название кнопки

4. хранилище - Заметка:
- справка, краткая запись о чём-либо
Например, вы можете добавить заметку для блока, который еще требует доработок, чтобы по заметке быстро его найти

ПРОДВИНУТЫЕ УЗЛЫ:

1. действия - JavaScript:
- необходим для того, чтобы выполнить javascript код в определенном месте чат-бота
Содержит javascript код, который будет выполнен.
Код можно вставить из переменной.
Также можно воспользоваться готовыми шаблонами:
-Математические вычисления
-Преобразование данных
-Проверка данных
-Форматирование дат и времени
-Генерация массива кнопок

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

- Тип запроса:
-HTTP
Методы:
- HTTP GET
- HTTP POST
- HEAD
- PUT
- PATCH
- DELETE
- TRACE
-NATS
-SOAP
- Параметры - указываем параметры, которые необходимо передать во внешнюю систему в формате ключ — значение
- Заголовки - указываем параметры заголовка, которые необходимо передать во внешнюю систему в формате ключ — значение, например авторизацию, логин и пароль или токен
2. логика - Случайный выбор:
- необходим для того чтобы сделать случайное ветвление в чат-боте
-#Вариант - можно добавить любое количество вариантов. С их помощью, мы создаем ветвление, в котором узел каждый раз будет случайным образом выбирать выход который сработает
Процент определяет в какой пропорции распределять входящие чаты по выходам.
Например если создать два варианта, и указать первому выходу 75%, а второму 25% — это будет значить что ⅓ всех входящих чатов будут распределяться на первый выход, а ¼ на второй.

2. логика - Распознавание:
- для использования этого узла обязательно подключить Мегамозг
- принимает текст от пользователя в свободной форме, распределяет сообщения по тематикам, улавливает сущности и оценивает эмоциональный контекст
- можно обработать любой текст, написанный пользователем в свободной форме, так как распознавание опирается на сам контекст примера, а не на полное его совпадение с добавленным в узел анализатор примером
-сюжет - настраивается в Мегамозг. После настройки, можно выбрать сюжет в боте

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

2 логика - Цепочка действий:
- последовательность событий, выполняемых в течение определенного времени, с момента активации узла
- удобно использовать, когда до клиента нужно донести большой текст. Этот текст можно разбить на части и отправить последовательно несколькими сообщениями, через заданные промежутки времени
- удобно применять в тех случаях, когда идет перечисление каких-либо пунктов, отправляя каждый пункт отдельным сообщением
-действие - здесь задается время, через которое произойдет выход из узла.
Тут можно настроить “отсрочку”, чтобы задать время в миллисекундах:
- задержка - задается время в миллисекундах
- “подробно” - для открытия дополнительных настроек
- действующий период времени - для ограничения по часам
- отменить действие - чтобы задать реакцию на действие клиента или наоборот, его бездействие
Или “по расписанию”, чтобы выполнить выход через несколько дней и в определенное время:
- дни - задается количество дней от сегодня (0)
- время - задается точное время

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

4. хранилище - Тэг:
- работает с тегами, добавленными в настройках
- добавляет и/или удаляет теги для профиля текущего клиента, которые в дальнейшем могут использоваться в логике
- добавляется непосредственно после какого-либо узла бота. Например, теги часто используются для автоматического проставления темы запроса клиента при нажатии на определенную кнопку или ввод текста
-тип - добавляем или удаляем тег -элементы - все существующие теги

4. хранилище - JSON
- описывает объект, который возвращается при наступлении события
-JSON позволяет прописать код или выбрать переменную
