5

由于每个 LUIS 模型仅限于 20 个意图和 10 个实体,而且每个模型都必须具有明确定义的范围/域,我想知道如果我希望我的机器人在单个机器人应用程序中实现多个对话框的最佳方法是能够覆盖多个领域,例如获取财务信息和天气信息。

我知道理想情况下我会有两个不同的机器人,但在这种情况下,我需要用一个机器人来做到这一点。我阅读了关于 Dialogs(和其他几个部分)的 Bot Framework 文档和 LUIS 帮助页面,但我找不到任何关于如何实现这一点的信息。我也看了一下例子,没有发现,有没有办法做到这一点?

4

1 回答 1

6

因此,从技术角度来看,这没有任何重大问题。您只需注册两个 LUIS 应用,并在您的应用中使用您创建的特定应用的 LUIS 键有两个对话框。

我想您的问题更多的是“如何将消息重定向到相应的 LUIS 机器人”。这是一个有效的问题。

AzureBot有一个类似的场景,他们使用遵循策略模式的DialogFactory解决了它。每个“域”对话框都知道传入的消息是否可以处理(是虚拟机操作的消息)。在这里,您可以看到他们如何在他们的 RootDialog 中也有 LUIS,以及他们如何在 None/Empty 意图中将消息重定向到相应的对话框。

在这个领域探索的另一种选择是使用 IScorable 接口,长话短说,它基本上允许您拦截所有消息并决定做什么。ContosoFlowers示例有一个 IScorable实现您查看。C# BotBuilder 库也有DeleteProfileScorable,它基本上处理 /deleteprofile 消息。

于 2016-11-03T12:47:13.893 回答