$agentPlatform.switchTo
Функция $agentPlatform.switchTo передает управление процессу Agent Platform, который далее ведет диалог с клиентом.
Диалог не возвращается обратно, пока в вызываемом процессе не будет выполнена функция ProjectRouter.backToOriginalProject().
Синтаксис
$agentPlatform.switchTo(botId, customData)
Метод принимает следующие аргументы:
| Аргумент | Тип | Обязательный | Описание |
|---|---|---|---|
botId | string | Да | ID проекта, которому передается управление. |
customData | object | Нет | Произвольные данные (по умолчанию {}). |
ID проекта в Agent Platform можно найти в логах при тестировании процесса. Чтобы открыть панель Логи, нажмите в левом нижнем углу холста.
Пример лога:
Bot 1000001-quick_start-1000001-Abc-1234 request processing time 3629ms, self processing time 349ms
Пример вызова
$agentPlatform.switchTo(
"1000001-quick_start-1000001-Abc-1234",
{ "customDataKey": "customDataValue" }
);
Какие данные получает вызываемый процесс
Вызываемый процесс Agent Platform может получить объект, переданный в customData, с помощью функции ProjectRouter.getCustomData().
Возврат управления
Для возврата из процесса Agent Platform в исходный сценарий JAICP используйте встроенную функцию ProjectRouter.backToOriginalProject() с параметрами:
| Аргумент | Тип | Обязательный | Описание |
|---|---|---|---|
state | string | Нет | Стейт для возврата в исходном проекте JAICP |
customData | object | Нет | Данные для передачи в исходный проект |
Поля, переданные в customData, доступны в $request.data.
Пример
Рассмотрим исходный сценарий JAICP:
theme: /
state: Start
q!: $regex</start>
a: Здравствуйте, чем могу помочь?
state: Pizza
q!: * *пицц* *
a: Давайте уточним детали
script:
$agentPlatform.switchTo(
"1000001-quick_start-1000001-Abc-1234"
)
state: OrderConfirmed
a: Спасибо за заказ!
a: Ваша пицца: {{ $request.data.type }}, {{ $request.data.size }}
В вызываемый процесс Agent Platform добавим агента с параметрами:
- Роль: Приемщик заказов
- Цель: Получить заказ клиента и передать в основной сценарий
- Инструкция: Уточни у клиента, какую пиццу он хочет заказать и какого размера. Затем верни управление в исходный проект, при передай JSON-объект с полями
typeиsize, например{"type": "4 сыра", "size": "большая" } - Режим диалога: опция включена
Подключим к агенту в качестве инструмента функцию ProjectRouter.backToOriginalProject() с параметрами:
- state:
/OrderConfirmed - customData: Заполнит агент
Пример диалога:
Особенности и ограничения
- Общий аккаунт: передача управления возможна только между проектами одного аккаунта.
- Защита от циклических вызовов: чтобы предотвратить бесконечные переходы, установлено ограничение: не более 6 последовательных переключений в рамках одного запроса пользователя. При превышении лимита диалог будет прерван.
- Одно переключение на блок кода: избегайте следующих конструкций, они могут привести к нестабильной работе:
- два вызова
switchTo()из одного блока; - два вызова
backToOriginalProject()из одного блока; - вызов
switchTo()иbackToOriginalProject()из одного блока.
- два вызова
- Обработка ошибок: если при возврате управления в JAICP происходит ошибка (например, стейт не найден), диалог остается в процессе Agent Platform.