我正在努力将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
}
答案 0 :(得分:0)
您似乎正在使用Botframework的v3。因此,您可以使用rm -rf node_modules && npm install
或context.Call
。 context.Forward
将启动新对话框,然后等待接收新消息。 context.Call
会将当前消息发送到新对话框。
如果您有一个名为context.Forward
的对话框,并且要启动该对话框,则可以使用CreateTodoDialog
,其中context.Call(new CreateTodoDialog(), AfterCreateTodoDialog)
是要在新对话框之后运行的对话框。
我设置luis对话框的方式是为每个意图都有一个方法,然后执行逻辑以提取任何luis实体(如果有),然后为每个意图调用或转发到对话框。然后,我在子对话框之后只有一个方法。