Эта статья была написана нашим консультантом

Если у вас остались любые вопросы по ней – направляйте их в виджет вашего личного кабинета (Твой гид по платформе)

Для оптимизации и упрощения работы бота, и во избежание проблем с редактором при работе с огромными сценариями, можно разбить один сценарий на модули – отдельные сценарии.
Модуль – это отдельный сценарий, переход к которому осуществляется с помощью блока результата. Все заданные пользователем переменные автоматически переносятся в следующий модуль при переходе.


Классическая сборкаМодульная сборка
Плюсы
  • Удобно копировать
  • Весь сценарий перед глазами
  • Не нужно делать лишние настройки связи
  • Меньше мест, где можно совершить ошибку
  • Проще искать ошибки
  • Работает без зависаний
  • Можно использовать любой модуль для переиспользования в других проектах
  • Удобно искать нужный фрагмент сценария
  • Удобно видоизменять или дополнять сценарий
Минусы
  • При достижении больших размеров начинает зависать
  • Трудно искать нужные фрагменты сценария
  • Неудобно использовать старый сценария для формирования нового
  • Нужно копировать каждый модуль отдельно и настраивать связи
  • При поиске ошибок нужно рассматривать множество модулей
  • В большем количестве сценариев больший шанс допустить ошибку

Переход в модуль

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



Сам переход в побочные модули происходит в блоке «Результат». Там укажите тип действия Перевод на оператора и выберите действие при переадресации Другой сценарий. Ниже укажите название самого сценария, куда произойдет переход.



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

Применение модульной схемы

Эта система может быть эффективно использована для упрощения работы с большими сценариями. Чтобы эффективно разделить сценарий на модули, рекомендуется логически разбить диалог на логические части. Разберем разбиение на модули на примере реального кейса – бота для РЖД:

  1. Модуль с открытым вопросом. Это модуль, содержащий основной блок вопроса, с помощью которого уточняется тематика вопроса клиента.

  2. Модуль, содержащий тематические вопросы. Позволяет конкретизировать вопрос клиента.

  3. Модуль ответа. Позволяет собрать необходимую для точного ответа информацию при помощи уточняющих вопросов, после чего дает ответ клиенту, и возвращает диалог в модуль открытого вопроса.


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

При использовании нескольких агентов NLU в одном сценарии может наблюдаться значительное снижение в скорости ответа на вопросы с интеллектуальным принятием решения. При использовании двух и более агентов бот анализирует ответ пользователя каждым агентом поочередно, в связи с чем увеличивается задержка ответа бота.