#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. Спасибо вам за это, сэр. Тем не менее, я указал конкретные случаи в моем шаге каскада. Будет ли это все еще возможно, несмотря на случаи?