Как реализовать несколько диалогов LUIS на одном боте, используя Bot Framework?

Поскольку каждая модель LUIS ограничена 20 намерениями и 10 объектами, а также каждая модель должна иметь четко определенную область действия / область, мне интересно, как лучше реализовать несколько диалогов в одном приложении бота, если я хочу, чтобы мой бот быть в состоянии охватить несколько доменов, например, получить финансовую информацию и информацию о погоде.

Я знаю, что в идеале у меня будет два разных бота, но в этой ситуации мне нужно сделать это с одним ботом. Я прочитал документацию Bot Framework по диалогам (и нескольким другим частям) и странице помощи LUIS, но не смог найти никакой информации о том, как мне этого добиться. Я тоже посмотрел примеры и ничего не нашел, есть ли способ сделать это?

1 ответ

Решение

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

Я предполагаю, что ваш вопрос больше касается "как перенаправить сообщение соответствующему боту LUIS". И это правильный вопрос.

У AzureBot есть похожий сценарий, и они решили его с помощью DialogFactory, которая следует шаблону стратегии. Каждое диалоговое окно "домен" знает, может ли входящее сообщение обрабатываться или нет ( это для операций виртуальной машины). Здесь вы можете увидеть, как в своем RootDialog они также имеют LUIS и как в намерении None/Empty они перенаправляют сообщение в соответствующий диалог.

Другой альтернативой для исследования в этом пространстве является использование интерфейса IScorable, который, в общем, позволит вам перехватить все сообщения и решить, что делать. Образец ContosoFlowers имеет IScorable реализацию, на которую вы можете взглянуть. В библиотеке C# BotBuilder есть также DeleteProfileScorable, который в основном обрабатывает сообщение /deleteprofile.

Другие вопросы по тегам