C# 为什么被调用的对话框从另一个对话框调用时不等待MessageReceivedAsync
大家好,我正在使用Microsoft bot框架构建一个bot,我创建了一个分派对话框,当它从LUIS接收结果时调用另一个对话框,但是当我使用C# 为什么被调用的对话框从另一个对话框调用时不等待MessageReceivedAsync,c#,botframework,C#,Botframework,大家好,我正在使用Microsoft bot框架构建一个bot,我创建了一个分派对话框,当它从LUIS接收结果时调用另一个对话框,但是当我使用context.Forward()方法调用下一个对话框时,它通过公共异步任务StartAsync(IDialogContext context) 但是,尽管我使用了context.Wait(MessageReceivedAsync) 方法,我的对话框从不等待用户的消息通过返回调用它的对话框继续执行 我读答案 但这并不能解决我的问题 这是我如何调用该对话框的
context.Forward()
方法调用下一个对话框时,它通过公共异步任务StartAsync(IDialogContext context)
但是,尽管我使用了context.Wait(MessageReceivedAsync)代码>
方法,我的对话框从不等待用户的消息通过返回调用它的对话框继续执行
我读答案
但这并不能解决我的问题
这是我如何调用该对话框的:
await context.Forward(scheduleDialog,ScheduleDialogTerminated,context.MakeMessage(), CancellationToken.None);
这是一个名为:
public class ScheduleDialog : IDialog
{
IScheduler scheduler;
string timeEntity;
string appointmentEntity;
string dateEntity;
public ScheduleDialog(IScheduler scheduler, string date, string time, string appointment) : base()
{
dateEntity = date;
timeEntity = time;
appointmentEntity = appointment;
this.scheduler = scheduler;
}
public async Task StartAsync(IDialogContext context)
{
string message = context.Activity.AsMessageActivity().Text;
await context.PostAsync($"Scheduling... {message}");
context.Wait(MessageReceivedAsync);
}
public async Task MessageReceivedAsync(IDialogContext context, IAwaitable<IMessageActivity> argument)
{
await context.PostAsync("Waiting for message...");
}
}
公共类调度对话框:IDialog
{
IScheduler调度器;
字符串时间实体;
字符串指定实体;
字符串数据实体;
公共ScheduleDialog(isScheduler调度器、字符串日期、字符串时间、字符串约会):base()
{
dateEntity=日期;
时间实体=时间;
任命实体=任命;
this.scheduler=调度程序;
}
公共异步任务StartAsync(IDialogContext上下文)
{
字符串消息=context.Activity.AsMessageActivity().Text;
wait context.PostAsync($“调度…{message}”);
Wait(MessageReceivedAsync);
}
公共异步任务消息ReceivedAsync(IDialogContext上下文,IAwaitable参数)
{
wait context.PostAsync(“等待消息…”);
}
}
MessageReceivedAsync
方法从未被调用,因为我在StartAsync方法中指定了上下文应该等待它您需要添加一个context.wait(MessageReceivedAsync)
在MessageReceivedAsync
方法的末尾 请把你的代码贴在这里,我是这样称呼这个对话的:你的评论似乎被删掉了。请用详细信息编辑帖子。我编辑了帖子请现在查看我的问题是,尽管对话框调用得很好,但它从不等待用户消息,并在通过starAsync方法后立即退出。这有帮助吗?如果是,请将问题标记为已回答。