Возврат к диалогу внутри задачи

#c# #botframework

#c# #botframework

Вопрос:

У меня есть определенные диалоговые окна внутри функции задачи. Есть ли способ вернуться к определенному диалоговому окну в задаче без выхода из этапа каскада.

Спасибо

Я пробовал cs.ActiveDialog.Состояние [«stepIndex»] = (int)cs.ActiveDialog.Состояние [«stepIndex»] -1; для возврата к предыдущему состоянию диалога, но при этом выполняется следующее диалоговое окно каскада

Ответ №1:

В этом случае наиболее распространенный подход заключается в замене текущего диалогового окна самим собой, добавляя логику к каждому этапу каскада относительно того, следует ли его выполнять или переходить к следующему шагу. Например, вы должны установить индекс шага, из которого вы хотите выполнить, в параметрах диалога, а затем проверить, установлено ли это значение при выполнении каждого шага.

например, как упрощенная версия шага водопада здесь может выглядеть следующим образом;

Если вы хотите вернуться к предыдущему шагу, вы можете использовать;

             return await sc.ReplaceDialogAsync(YourCurrentDialogID, new YourCurrentDialog(stepIndexToGoBackTo));
  

затем на каждом шаге каскада вы можете проверить, указали ли вы конкретный шаг для возврата, если нет, он выполняет каждый шаг последовательно.

 
        public async Task<DialogTurnResult> PromptUser(WaterfallStepContext sc, CancellationToken cancellationToken)
        {
            var stepToExecute = sc.Options as int?;

            if(!stepToExecute.HasValue || (stepToExecute.HasValue amp;amp; stepToExecute.Value == sc.Index)
{
    // either we haven't set a specific step to run, so we will execute anyway
    // or we have specified a step to run and the index matches, so we conditionally execute
}

// a step index has been passed into the options, but it doesn't match the current step
// so drop through until we hit the right step.
return await sc.NextAsync();
}

  

Пожалуйста, извините за приведенный выше код, возможно, он не совсем соответствует, но он должен быть примерно правильным. Я пишу это на мобильном устройстве 🙂

Комментарии:

1. Спасибо вам за это, сэр. Тем не менее, я указал конкретные случаи в моем шаге каскада. Будет ли это все еще возможно, несмотря на случаи?