Frameworks 取消或退出PromptDialog。选择Microsoft Bot Framework中的流程

Frameworks 取消或退出PromptDialog。选择Microsoft Bot Framework中的流程,frameworks,botframework,bots,Frameworks,Botframework,Bots,我有一个4个选项的提示,最后一个选项是用户可以退出提示, 我想实现一些代码,以便bot退出提示符 PromptDialog.Choice(上下文,this.OnOptionSelected,new List(){FlightsOption,hotelspoption,TrainOption,GobackOption},“当然……!告诉我您想预订什么?”,“不是有效选项”,3); 在上图中,我实现了退出选项,若用户选择退出,它将切换到退出的情况 我也尝试过context.quit,但它会抛出错

我有一个4个选项的提示,最后一个选项是用户可以退出提示, 我想实现一些代码,以便bot退出提示符

PromptDialog.Choice(上下文,this.OnOptionSelected,new List(){FlightsOption,hotelspoption,TrainOption,GobackOption},“当然……!告诉我您想预订什么?”,“不是有效选项”,3);
在上图中,我实现了退出选项,若用户选择退出,它将切换到退出的情况

我也尝试过context.quit,但它会抛出错误

private async Task OnOptionSelected(IDialogContext context, IAwaitable<string> result)
    {
        try
        {
            string optionSelected = await result;

            switch (optionSelected)
            {
                case FlightsOption:
                    context.Call(new FlightDialog(), this.ResumeAfterOptionDialog);
                    break;

                case HotelsOption:
                    context.Call(new HotelsDialog(), this.ResumeAfterOptionDialog);
                    break;
                case TrainOption:
                    context.Call(new TrainDialog(), this.ResumeAfterOptionDialog);
                    break;
                case GobackOption:
                    //want some code here to quit the form
                    break;


            }
        }
private async Task OnOptionSelected(IDialogContext上下文,IAwaitable结果)
{
尝试
{
字符串选项Selected=等待结果;
开关(选项选择)
{
案例飞行说明:
调用(new FlightDialog(),this.ResumeAfterOptionDialog);
打破
案例酒店选项:
调用(新建HotelDialog(),this.ResumeAfterOptionDialog);
打破
案例选项:
调用(new TrainDialog(),this.ResumeAfterOptionDialog);
打破
案例选项:
//需要一些代码来退出表单吗
打破
}
}

首先,这不是表单流。这是提示。 现在您可以执行以下操作,或者像这样从堆栈中退出对话框

try
        {
            string optionSelected = await result;

            switch (optionSelected)
            {
                case FlightsOption:
                    context.Call(new FlightDialog(), this.ResumeAfterOptionDialog);
                    break;

                case HotelsOption:
                    context.Call(new HotelsDialog(), this.ResumeAfterOptionDialog);
                    break;
                case TrainOption:
                    context.Call(new TrainDialog(), this.ResumeAfterOptionDialog);
                    break;
                case GobackOption:
                    context.Done<object>(null);
                    break;


            }
        }
 try
    {
        string optionSelected = await result;

        switch (optionSelected)
        {
            case FlightsOption:
                context.Call(new FlightDialog(), this.ResumeAfterOptionDialog);
                break;

            case HotelsOption:
                context.Call(new HotelsDialog(), this.ResumeAfterOptionDialog);
                break;
            case TrainOption:
                context.Call(new TrainDialog(), this.ResumeAfterOptionDialog);
                break;
            case GobackOption:
            await context.PostAsync("Ok, you came back. Now tell something new.");
            context.Wait(MessageReceivedAsync);
            break;
        }
    }
下一条信息将在这里传递

public virtual async Task MessageReceivedAsync(IDialogContext context, IAwaitable<IMessageActivity> result)
        {
            var message = await result;
            context.Wait(MessageReceivedAsync);
        }
公共虚拟异步任务消息ReceivedAsync(IDialogContext上下文,IAwaitable结果) { var消息=等待结果; Wait(MessageReceivedAsync); }
请记住我们不在您的机器上:添加您的代码和一个明确的问题Matic我编辑了我的代码请查看
public virtual async Task MessageReceivedAsync(IDialogContext context, IAwaitable<IMessageActivity> result)
        {
            var message = await result;
            context.Wait(MessageReceivedAsync);
        }