我正在工作的情况下,我有一个类似于这个简化示例的对话框:
public class ExampleDialog : IDialog<bool> {
public async Task StartAsync(IDialogContext context)
{
await context.PostAsync($"{What is your name?");
context.Wait(this.MessageReceivedAsync);
}
private async Task MessageReceivedAsync(IDialogContext context, IAwaitable<IMessageActivity> result)
{
var message = await result;
// do some validation of the answer and log it off somewhere
context.Done(true);
}
}
此外,我想使用scorable来处理某些全局事件,例如寻求帮助或切换到我的机器人功能的不同部分。但是,在某些情况下,例如寻求帮助,用户可以在Scorable中交换几条消息(回答提示,将用户分类为正确的信息等),这可能会将最后一个问题推回到对话中。
出于这些考虑,在用户收到“你叫什么名字?”的情况下。问题,但然后命中一个Scorable,我想在上下文返回到我的ExampleDialog后重新提出问题。在我的真实场景中,问题可能是许多动态问题中的一个,因此在返回之前它不能在Scorable中进行硬编码。是否有任何方法可以定义上下文返回时要执行的逻辑,类似于上下文最初进入新对话框时StartAsync任务的运行方式?