C# 离开我的第二个对话框并继续使用RootDialog
我有一个RootDialog,它包含三个路径:BTCDialog、LTCDialog和ethalog。 当我通过像BTCDialog这样的第一个对话框时,我执行我的代码,当我的对话框完成时,我需要退出(例如,因为我需要启动LTCDialog) 我和你一起通过BTC对话C# 离开我的第二个对话框并继续使用RootDialog,c#,botframework,C#,Botframework,我有一个RootDialog,它包含三个路径:BTCDialog、LTCDialog和ethalog。 当我通过像BTCDialog这样的第一个对话框时,我执行我的代码,当我的对话框完成时,我需要退出(例如,因为我需要启动LTCDialog) 我和你一起通过BTC对话 await context.Forward(new BTCDialog(), this.ResumeAfterDialog, activity, CancellationToken.None); 当我完成时,我会和你一起去BTC
await context.Forward(new BTCDialog(), this.ResumeAfterDialog, activity, CancellationToken.None);
当我完成时,我会和你一起去BTCDialog
完成(论点);
所以我在RootDialog中执行了我的函数
private async Task ResumeAfterDialog(IDialogContext context, IAwaitable<object> result)
{
var activity = await result as Activity;
context.Wait(MessageReceivedAsync);
}
专用异步任务ResumeAfterDialog(IDialogContext上下文,IAwaitable结果)
{
var活动=等待作为活动的结果;
Wait(MessageReceivedAsync);
}
我的问题是,当我的方法ResumeAfterDialog被执行时,我有一个信息(结果),其中包含一条我可以在我的RootDialog中使用的消息
如何编写我的方法ResumeAfterDialog以继续与我的用户对话?我想直接执行方法MessageReceivedAsync假设您的结果类型为
IMessageActivity
,那么您可以调用MessageReceivedAsync
方法,而不必等待下一条消息
private async Task ResumeAfterDialog(IDialogContext context, IAwaitable<object> result)
{
var activity = await result as Activity;
await MessageReceivedAsync(context, Awaitable.FromItem(activity));
}
专用异步任务ResumeAfterDialog(IDialogContext上下文,IAwaitable结果)
{
var活动=等待作为活动的结果;
Wait MessageReceivedAsync(上下文,waitiable.FromItem(活动));
}
作为旁注,如果您的
BTCDialog
对话框将始终返回IMessageActivity
,您应该将对话框更新为IDialog,这样您就可以更新ResumeAfterDialog
方法,以接收IAwaitable
,而不是IAwaitable
保存您进行转换。假设您的结果类型为IMessageActivity
,然后您可以调用MessageReceivedAsync
方法,而不必等待下一条消息
private async Task ResumeAfterDialog(IDialogContext context, IAwaitable<object> result)
{
var activity = await result as Activity;
await MessageReceivedAsync(context, Awaitable.FromItem(activity));
}
专用异步任务ResumeAfterDialog(IDialogContext上下文,IAwaitable结果)
{
var活动=等待作为活动的结果;
Wait MessageReceivedAsync(上下文,waitiable.FromItem(活动));
}
作为旁注,如果您的BTCDialog
对话框总是返回IMessageActivity
,您应该将对话框更新为IDialog,这样您就可以更新ResumeAfterDialog
方法以接收IAwaitable
而不是IAwaitable
来保存您进行演员阵容