0

我有一个具有枚举的属性,在我有“帮助”的枚举值之一中,如果用户选择该选项,我想做两件事:1.向用户发送带有帮助的文本。2.询问用户是要继续,还是要离开。我不知道怎么做。非常感谢您。

public enum ContentClassification
{
    Confidential_Restricted = 1 ,
    Confidential_Secret = 2,
    Public = 3,
    Strictly_Confidential = 4,
    help = 5
};

公共内容分类内容分类{获取;放; }

return new FormBuilder() .Field(nameof(ContentClassification))

4

1 回答 1

0

您可以Form多次启动,这意味着如果您从第一次获得“帮助”选项Form,则启动另一个表单进行确认。

例如:

public enum ContentClassification
{
    Confidential_Restricted = 1,
    Confidential_Secret = 2,
    Public = 3,
    Strictly_Confidential = 4,
    help = 5
};

public enum Validating
{
    Continue,
    Leave
};

[Serializable]
public class Classification
{
    public ContentClassification? Choice;

    public static IForm<Classification> BuildForm()
    {
        return new FormBuilder<Classification>()
            .Message("You want to")
            .Field(nameof(Choice))
            .Build();
    }

    public Validating? Confirmation;

    public static IForm<Classification> BuildConfirmForm()
    {
        return new FormBuilder<Classification>()
            .Message("Send your message here")
            .Field(nameof(Confirmation))
            .Build();
    }
}

然后像这样创建您RootDialog的示例:

[Serializable]
public class RootDialog : IDialog<object>
{
    public Task StartAsync(IDialogContext context)
    {
        var form = new FormDialog<Classification>(new Classification(), Classification.BuildForm, FormOptions.PromptInStart, null);
        context.Call(form, this.GetResultAsync);

        return Task.CompletedTask;
    }


    private async Task GetResultAsync(IDialogContext context, IAwaitable<Classification> result)
    {
        var state = await result;
        if (state.Choice == ContentClassification.help)
        {
            var form = new FormDialog<Classification>(new Classification(), Classification.BuildConfirmForm, FormOptions.PromptInStart, null);
            context.Call(form, null); //change null to your result task here to handle the result.
        }
    }
}

您仍然需要实现GetResultAsync方法中其他选项的逻辑代码以及处理第二种形式的结果的逻辑代码BuildConfirmForm

于 2017-11-24T09:25:08.147 回答