我的机器人有带有几个意图的 LUIS 对话框。我从我的 MessageController 调用 LUIS 对话框。如果检测到意图,我会启动一个子对话框。子对话框完成后,我调用context.Done("response from user").
了该ChlildDialogDone
任务之后。
在ChildDialogDone
任务内部,我想再次调用 LUIS 对话框来检测用户消息的意图(涉及到 ChildDialogDone
)。现在在里面ChildDialogDone
我有context.Wait(MessageReceived).
当这行代码执行时,什么都没有发生,我的机器人正在等待用户的下一条消息。
这是代码:
[Serializable]
public partial class DefiningIntentDialog : LuisDialog<object>
{
[LuisIntent("")]
public async Task NoIntent(IDialogContext context, LuisResult result)
{
var dialog = new GreetingsDialog();
dialog.InitialMessage = result.Query;
context.Call(dialog, GreetingDialogDone);
}
[LuisIntent("Email")]
public virtual async Task ConfirmationEmail(IDialogContext context, LuisResult result)
{
await context.Forward(new EmailDialog, EmailDialogDone, "message", CancellationToken.None);
}
private async Task EmailDialogDone(IDialogContext context, IAwaitable<string> argument)
{
var messageHandled = await argument;
context.Wait(MessageReceived);
}
}
所以在 EmailDialogDone 里面我有一些来自用户的消息,我想再次用这个消息执行 DefiningIntent 对话框。我该怎么做?