Инструменты
Инструментами в скриптах служат следующие блоки:
Разгруппировать массив
Блок разбирает массив на пакеты данных. Следующие блоки выполняются столько раз, сколько элементов внутри массива.
Служит для облегчения работы с массивами и позволяет использовать элементы массивов так, как если бы они были переменными. У блока одно поле для заполнения — массив (выбор из списка полученных данных на основе предыдущих блоков).
Пример:
- В блоке в поле Массив на панели маппинга выбираем массив и нажимаем Тестировать. Данные массива отображаются в квадратных скобках.
- На выходе получаем разгруппированные данные.
Синхронизатор
Блок позволяет разделить скрипт на составные части, его составляющие не имеют доступа к данным друг друга. Он ждет окончания выполнения блоков столько раз, сколько необходимо при сборе данных до него, и запускает следующие один раз для расчета. Это позволяет сократить количество выполнений скрипта, а также поместить действия в один скрипт вместо нескольких.
Вернуть данные
Блок Вернуть данные возвращает данные в источник запроса. Работает с триггерами Ручной запуск и Вебхук.
Блок предназначен для получения данных из выполненных скриптов, запущенных вручную или с помощью Вебхука.
Параметры блока:
- Формат запроса (JSON/текст)
- Возвращаемые данные
При текстовом формате запроса возвращаемые данные указываются вручную или с помощью визуального маппинга. При JSON-формате запроса ключ необходимо ввести вручную, значение ключа можно указать вручную или маппингом.
При синхронном режиме работы блока Вебхук статус и данные, указанные в блоке Вернуть данные, при их наличии возвращаются сразу после выполнения скрипта.
Чтобы получить возвращаемые данные (при их наличии) при асинхронном режиме работы блока Вебхук, необходимо дождаться выполнения блока Вернуть данные и выполнить в инструменте GraphiQL указанный ниже GraphQL-запрос.
{
automation{
script{
execution_result(uuid:"5053bb30-3eed-469c-a60a-7b554198ceee"){
return_data
}
}
}
}
Где:
execution_result
— идентификатор вебхука. Для получения идентификатора необходимо отправить запрос на адрес вебхукаreturn_data
— возвращаемые данные, указанные в параметрах блока Вернуть данные
Чтобы получить статусы при асинхронном режиме работы блока Вебхук, необходимо выполнить в инструменте GraphiQL указанный ниже GraphQL-запрос.
{
automation{
script{
execution_result(uuid:"5053bb30-3eed-469c-a60a-7b554198ceee"){
status
}
}
}
}
Где:
execution_result
— идентификатор вебхука. Для получения идентификатора необходимо отправить запрос на адрес вебхука
Если в скрипт добавлено несколько блоков Вернуть данные, то срабатывает и возвращает данные в источник только первый из этих блоков.
Если скрипт с блоком Вернуть данные прекращает работу с ошибкой или останавливается, в источник возвращается информация о статусе выполнения.
Данный блок завершает выполнение скрипта, поэтому блоки после него выполняться не будут.
Выполнить скрипт
Блок запускает выполнение выбранного скрипта.
Параметры:
- Скрипт
- Ожидаемые поля (если указаны в выбранном скрипте)
Родительский скрипт — это скрипт, который содержит блок Выполнить скрипт, запускающий выполнение дочернего скрипта. После запуска блок ожидает, когда дочерний скрипт полностью выполнится и вернет данные в родительский скрипт.
- Дочерний скрипт должен завершаться блоком Вернуть данные.
- Запустить можно только те скрипты, которые находятся в том же пространстве, что и родительский скрипт.
- При тестировании блока или всего родительского скрипта запускается черновик дочернего скрипта. При активации родительского скрипта запускается опубликованная версия дочернего скрипта.
При использовании блока рекомендуем:
- Не создавать зацикленные сценарии, в которых один блок Выполнить скрипт вызывает дочерний скрипт, содержащий аналогичный блок с вызовом родительского скрипта
- Вручную останавливать выполнение ресурсоемких дочерних скриптов, если возникает необходимость их остановить, поскольку остановка родительского скрипта в этом случае не прервёт выполнение дочернего скрипта
Блок возвращает информацию о выполнении дочернего скрипта:
- Если дочерний скрипт выполнился успешно, но не возвращает данные, родительский скрипт получает только информацию о том, что дочерний скрипт выполнен
- Если в дочернем скрипте возникает ошибка, родительский скрипт получает информацию об ошибке и останавливается
В качестве примера рассмотрим два скрипта:
- Родительский скрипт «Отправить отчет», который отправляет ответственному лицу отчет с информацией о разнице между фактическими и плановыми продажами
- Дочерний скрипт «Подсчитать отклонения», который рассчитывает отклонения фактических продаж от плановых по каждому магазину. Подсчет отклонений выделен в отдельный скрипт, чтобы к нему могли обращаться другие скрипты, а также для запуска из дашборда для отображения отклонений
Настроим эти скрипты:
- Добавим в дочерний скрипт для подсчета отклонения в продажах блок Вернуть данные.
- Настроим блок так, чтобы он возвращал идентификатор магазина и процент отклонения для тех магазинов, в которых отклонение от плановых продаж больше 20%.
- Опубликуем дочерний скрипт.
- В родительский скрипт добавим блок Выполнить скрипт.
- В параметрах блока укажем дочерний скрипт.
- Добавим блок Сформировать csv для формирования отчета.
- В параметрах блока укажем нужные колонки и подставим в них данные с помощью маппинга. Также активируем переключатель Добавлять заголовки колонок
- Протестируем блок.
- Добавим в родительский скрипт блок Отправить письмо.
- В параметрах блока укажем получателя, тему письма и сообщение.
- Добавим в письмо отчет в виде вложения. Для этого подставим сформированный CSV-файл в соответствующее поле с помощью маппинга.
- Опубликуем родительский скрипт и активируем его.
- Видим, что скрипты выполнены: данные из дочернего скрипта переданы в родительский, отчет сформирован и отправлен.
Фильтр
Блок позволяет настроить логику скрипта и направить его по определенной ветке после проверки заданного условия.
Параметры:
- Подключение (при обращении к БД)
- Объекты сравнения
- Условие
Данный блок не возвращает данные, а только фильтрует их.
Чтобы настроить скрипт:
- Укажите объекты сравнения в Поле.
- Задайте условие фильтрации через выпадающий список.
- Протестируйте блок с помощью кнопки Тестировать.
Чтобы добавить несколько условий для одной группы объектов, используйте кнопку И.
Чтобы создать дополнительную группу фильтров, используйте кнопку Или.
Чтобы удалить группу фильтров, нажмите кнопку Удалить.
Вы можете направить скрипт по нескольким веткам:
- Чтобы добавить несколько условий и направить скрипт по разным веткам в зависимости от соответствия данных заданным условиям, добавьте в скрипт несколько блоков Фильтр
- Чтобы направить по разным веткам скрипт с данными, полученными после проверки одного условия, сделайте нужное количество ответвлений от блока Фильтр
Для разных типов данных применимы разные условия:
Типы данных | Доступные условия |
---|---|
Строка | - Начинается с - Не начинается с - Оканчивается на - Не оканчивается на |
Строка, массив | - Содержит - Не содержит |
Все типы данных | - Существует - Не существует - Равно - Не равно |
Строка, число, дата, дата и время | - Больше - Меньше - Больше или равно - Меньше или равно |
Дата, дата и время | - Последнее время |
Логический тип | - Истина - Не истина |
Если выбранные типы условий невозможно сравнить, возникает ошибка.
Пример:
- Указываем объекты сравнения и выбираем условие фильтрации в выпадающем списке.
- Запускаем тестирование с помощью кнопки Тестировать. Все дальнейшие действия будут осуществляться с данными, полученными в результате фильтрации.
- Добавляем блоки для дальнейшей работы с отфильтрованными данными.
Выполнить инструкцию
Блок получает инструкцию, которая может быть сформирована вручную или через блок Отправить сообщение пакета «Нейросеть», и выполняет действия с использованием функций следующих блоков:
- Добавить строки
- Отправить письмо
- Отправить запрос
- Выполнить скрипт
- Отправить сообщение
- Вернуть данные
В параметрах блока укажите инструкцию в формате JSON вручную или с помощью маппинга. Также поле Инструкция может принимать строковое значение break
. Строка break
— это команда, которая завершает выполнение блока Выполнить инструкцию.
Инструкция передается в виде JSON со следующими полями:
Action
— тип блока, функции которого нужно выполнитьFields
— структура полей для типа выполняемого блока. Необязательные поля можно опуститьIndex
— порядковый номер выполнения, который должен увеличиваться нейросетью
Принцип работы блока:
- Блок анализирует входные данные. Допустимые значения:
- JSON
- Строка
break
(регистр не имеет значения)
- Если на вход поступает строка
break
, блок завершает выполнение с пустым результатом. Выполнение скрипта останавливается после этого блока - Если на вход поступает JSON, выполняется проверка типа блока, полей и порядкового номера выполнения
- Если проверка успешна, блок выполняет функцию указанного типа блока, используя переданные параметры и контекст выполнения
Максимальное количество запусков блока Выполнить инструкцию в одном цикле — 30.
За одно выполнение блок Выполнить инструкцию может выполнять функции только одного типа блока. Попытка обработать несколько пакетов данных или вызвать функций разных блоков в рамках одного запуска может привести к сбою из-за нарушения согласованности данных.
Примеры инструкций представлены ниже.
Выполнить скрипт:
{
"action": "execute_script",
"key": "",
"": "",
"": ""
}
Отправить сообщение:
{
"action": "query",
"query": "",
"model": "",
"temperature":
}
Отправить HTTP-запрос:
{
"action": "http_request",
"url": "",
"method": "",
"body": ""
}
Отправить письмо:
{
"action": "send_email",
"to": "",
"subject": "",
"text": "",
"format": ""
}
Добавить строки в таблицу:
{
"action": "insert_rows",
"table": "",
"rows": [
{
"": "",
"": ""
},
{
"": "",
"": ""
}
]
}
Вернуть данные:
{
"action": "return",
"value": "",
"format": ""
}
Пример:
Рассмотрим, как настроить скрипт с зацикливанием для автоматического выполнения инструкций. В этом сценарии блок Вебхук используется в качестве триггера, а блок Отправить запрос замыкает цикл, отправляя выходные данные обратно на Вебхук.
- Добавим блок Вебхук в качестве триггера. Блок принимает входные данные (промпт) и передает их дальше.
- Добавим блок Отправить сообщение пакета «Нейросеть».
- С помощью маппинга передадим в блок промпт, полученный от блока Вебхук. Нейросеть анализирует поступившие данные, определяет, какой блок следует запустить и формирует инструкцию на основе информации из промпта.
- Добавим блок Выполнить инструкцию пакета «Цифровой сотрудник».
- С помощью маппинга передадим в параметры блока выходные данные блока Отправить сообщение. Блок выполняет сформированную нейросетью инструкцию.
- Добавим блок Отправить запрос пакета «HTTP».
- С помощью маппинга передадим в блок выходные данные блока Выполнить инструкцию. Блок Отправить запрос отправляет полученные данные обратно на Вебхук с помощью HTTP-запроса.
- Цикл продолжается до тех пор, пока нейросеть не вернет в блок Выполнить инструкцию команду
break
. В этот момент выполнение скрипта завершается.
Была ли статья полезна?