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

Передача управления другому проекту

Продвинутая возможность

Из процесса можно передать управление другому процессу Agent Platform или сценарию JAICP, который далее ведет диалог с клиентом, а после завершения своей задачи может вернуть управление исходному процессу.

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

Как настроить

Чтобы передать управление из процесса Agent Platform в сценарий JAICP:

  1. Опубликуйте сценарий JAICP в любом входящем канале, например чат-виджете, и скопируйте ID бота:

    1. Нажмите на панели управления Каналы → Входящие → Подключить канал. Выберите канал Чат-виджет и нажмите Создать.
    2. Скопируйте botId из свойств канала.
  2. В исходном проекте Agent Platform добавьте вызов функции ProjectRouter.switchTo(). Функцию можно использовать как отдельный шаг в процессе, как инструмент для AI-агента или вызвать в коде других блоков.

    Задайте параметры:

    • botId — вставьте ID целевого проекта.
    • state — стейт, в который нужно перейти в целевом проекте (необязательно, по умолчанию /).
    • customData — JSON-объект с дополнительными данными (необязательно).
предупреждение

Диалог не возвращается обратно, пока в вызываемом проекте не будет выполнена функция backToOriginalProject().

Какие данные получает вызываемый проект

Сценарию JAICP доступны следующие данные из исходного процесса:

ПараметрКак получить
Сообщение клиента$request.query
Полные данные запроса$request.rawRequest
customData$request.data

Возврат управления

Возврат управления происходит в начало («корень») исходного процесса Agent Platform. Выбрать конкретный блок невозможно. После возврата исходный процесс не выполняет никаких действий, а ожидает срабатывания триггера — например, сообщения от клиента.

Для возврата из сценария JAICP в исходный процесс используйте метод $agentPlatform.backToOriginalProject().

примечание

У метода $agentPlatform.backToOriginalProject() есть необязательный параметр customData, но в исходном процессе Agent Platform эти данные недоступны.

Особенности и ограничения

  • Общий аккаунт: передача управления возможна только между проектами одного аккаунта.
  • Защита от циклических вызовов: чтобы предотвратить бесконечные переходы, установлено ограничение: не более 6 последовательных переключений в рамках одного запроса пользователя. При превышении лимита диалог будет прерван.
  • Одно переключение на блок: избегайте следующих конструкций, они могут привести к нестабильной работе:
    • два вызова switchTo() из одного блока;
    • два вызова backToOriginalProject() из одного блока;
    • вызов switchTo() и backToOriginalProject() из одного блока.

Пример

Процесс Agent Platform принимает заказ у клиента и передает его в сценарий JAICP для обработки. Для передачи заказа используется функции ProjectRouter.switchTo() с параметрами:

  • botId: ID бота JAICP, например 12345-jaicp-bot-12345
  • state: /HandleOrder
  • customData: { "productId": "product-123", "amount": 7 }

Сценарий JAICP обрабатывает заказ и возвращает управление в Agent Platform:

theme: /

state: HandleOrder
script:
$context.productId = $request.data.productId; // "product-123"
$context.amount = $request.data.amount; // 7

// Логика обработки


// Возврат управления
$agentPlatform.backToOriginalProject();