public CreateCategoriesListDialog(string dialogId, IEnumerable <WaterfallStep> steps = null)
            : base(dialogId, steps)
        {
            AddStep(async(stepContext, cancellationToken) =>
            {
                var promptOptions = new PromptOptions
                {
                    Prompt = MessageFactory.Text("Give me the list of categories separated by a space!")
                };
                return(await stepContext.PromptAsync("createCategoriesPrompt", promptOptions, cancellationToken));
            });

            AddStep(async(stepContext, cancellationToken) =>
            {
                if (!(stepContext.Result is string categories) || categories.Length == 0 || categories.Length > 1024)
                {
                    await stepContext.Context
                    .SendActivityAsync(MessageFactory.Text("Wrong input! Try again."), cancellationToken);
                    return(await stepContext.BeginDialogAsync(Id));
                }

                await requestSender.SetCategoriesList(stepContext.Context.Activity.ChannelId, categories);
                await stepContext.Context.SendActivityAsync(MessageFactory.Text("Done!"), cancellationToken);
                return(await stepContext.BeginDialogAsync(MainFunctioningDialog.Id));
            });
        }