Перейти к основному содержимому

Использование функций в процессе

Как встроенные, так и пользовательские функции можно использовать тремя способами:

  • в качестве отдельного шага в процессе;
  • в виде инструмента для AI-агента;
  • в коде других блоков.

Режим «Функция»

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

  • Как работает: система вызывает выбранную функцию с заданными параметрами. Для получения результата в следующем блоке используйте метод Context.getLastFunctionResult().
  • Когда использовать: для задач, где вызов внешней системы — это четкий шаг в процессе. Например: «получить курс валют», «рассчитать доставку», «проверить статус заказа».

Настройка

  1. В левом меню перейдите в Конструктор.

  2. Выберите ФункцииВстроенные или Пользовательские<Нужная коллекция>.
  3. Перетащите функцию на холст.

    подсказка

    Чтобы добавить сразу все функции коллекции на холст, просто перетащите туда коллекцию.

  4. Укажите параметры функции. Вы можете ввести их вручную или использовать динамическую подстановку данных, например:

    • Для движка версии 2: ID этого канала: {{ request.botId}}.
    • Для версии 1: {{'ID этого канала: ' + Context.getBotId()}}.
  5. Если в вашем проекте движок версии 2, вы можете задать параметры на вкладке Поведение:

    • Время ожидания ответа: до 60 минут. Если выполнение функции не завершится за это время, будет зафиксирована ошибка.

    • Повторные попытки при ошибке: до 10 повторных вызовов.

      Например, если указать таймаут 20 секунд и количество повторных попыток 3, то суммарное время ожидания может составить до 80 секунд: 20×(1+3).

    • Возвращать указанное значение вместо ошибки: если функция не выполнится успешно после всех попыток, процесс не прервется, а на выход блока будет передано заданное значение (число, строка, JSON-объект, true/false или null).

Режим «Инструмент»

Используется совместно с блоком Агент, позволяя AI самостоятельно решать, когда вызывать функцию.

  • Как работает: вы не вызываете функцию напрямую — она становится «инструментом» для агента. Агент сам решает, когда и как ее использовать, исходя из диалога с пользователем.
  • Когда использовать: для гибких систем, где агент взаимодействует с внешним миром: например, «забронируй переговорную» или «какой у меня баланс?».

Подтверждение перед вызовом

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

подсказка

Подробнее о настройке функций в режиме инструмента смотрите в разделе про блок «Агент».

Вызов в коде

Функцию можно вызвать:

  • Из выражений в блоках Код и Условие. Пример смотрите в разделах Код и Условие.

  • Из кода других (пользовательских) функций.

  • Из параметров других JavaScript-функций (только если в вашем проекте движок версии 1).

    Пример
    Вызов функции в параметре

При вызове функций указывайте коллекцию, например:

// Вызов функции myFunction из коллекции MyCollection
MyCollection.myFunction();

При вызове встроенных функций передавайте аргументы:

  • Для движка версии 2 — в виде объекта, например:

    AgentContext.putValue({key: "lastOrder", value: order});
  • Для версии 1 — позиционно, например:

    AgentContext.putValue("lastOrder", order);
примечание

Из JavaScript-кода нельзя вызывать Python-функции, и наоборот.

Сохранение результата в контекст

Результат выполнения блока функции можно записывать в служебную память, используемую агентами. Подробнее смотрите в разделе Управление контекстом агентов.