Frameworks 取消或退出PromptDialog。选择Microsoft Bot Framework中的流程
我有一个4个选项的提示,最后一个选项是用户可以退出提示, 我想实现一些代码,以便bot退出提示符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,但它会抛出错
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);
}