My bot has a LUIS dialog with several intentions. I call the LUIS dialog from my MessageController. If an intent is detected, I start a child dialog. When the child dialog is complete, I call context.Done("response from user"). After that, the ChlildDialogDone task is ChlildDialogDone .
Inside the ChildDialogDone task ChildDialogDone I want to call the LUIS dialog again to determine the intent of the user message (which comes in ChildDialogDone ). Now inside ChildDialogDone I have context.Wait(MessageReceived). When this line of code is executed, nothing happens, my bot is waiting for the next message from the user.
Here is the code:
[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); } }
So, inside EmailDialogDone I have a message from the user, and I want to start the DefiningIntent dialog again with this message. How can i do this?
source share