将LUIS意图组织到不同的班级

时间:2019-01-21 10:30:22

标签: c# botframework luis

我正在努力将LUIS意图实现拆分为各个类。现在,我将所有用于LUIS意图的代码放在LuisDialog类中,这使我的代码难以读取(在一个类中肯定有数千个代码)。 因此,我该怎么做才能将每​​个LUIS意图实现分解为不同的类。

我想在分离类中进一步处理“ CreateTodo”意图,并使LuisDialog类保持简单明了的可读性。我可以使用哪种语法? Context.Call?我看到了类似的问题,使用局部类可以提供帮助。那么谁能为我展示示例模式?提前谢谢。:)

[Serializable]
public class LuisDialog : LuisDialog<object>
{
    [LuisIntent("")]
    [LuisIntent("None")]
    public async Task NoneIntent(IDialogContext context, LuisResult result)

    [LuisIntent("CreateTodo")]
    public async Task CreateTodoIntent(IDialogContext context, LuisResult 
    result)

    //...more intents
}

1 个答案:

答案 0 :(得分:0)

您似乎正在使用Botframework的v3。因此,您可以使用rm -rf node_modules && npm install context.Callcontext.Forward将启动新对话框,然后等待接收新消息。 context.Call会将当前消息发送到新对话框。

如果您有一个名为context.Forward的对话框,并且要启动该对话框,则可以使用CreateTodoDialog,其中context.Call(new CreateTodoDialog(), AfterCreateTodoDialog)是要在新对话框之后运行的对话框。

我设置luis对话框的方式是为每个意图都有一个方法,然后执行逻辑以提取任何luis实体(如果有),然后为每个意图调用或转发到对话框。然后,我在子对话框之后只有一个方法。