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

$agentPlatform.switchTo

Функция $agentPlatform.switchTo передает управление процессу Agent Platform, который далее ведет диалог с клиентом.

предупреждение

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

Синтаксис

$agentPlatform.switchTo(botId, customData)

Метод принимает следующие аргументы:

АргументТипОбязательныйОписание
botIdstringДаID проекта, которому передается управление.
customDataobjectНетПроизвольные данные (по умолчанию {}).
подсказка

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() с параметрами:

АргументТипОбязательныйОписание
statestringНетСтейт для возврата в исходном проекте JAICP
customDataobjectНетДанные для передачи в исходный проект

Поля, переданные в 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: Заполнит агент
Параметры функции ProjectRouter.backToOriginalProject()

Пример диалога:

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

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