#botframework
Вопрос:
У меня есть бот с водопадными диалогами, написанный с использованием адаптивных диалогов. После каждого ввода текста пользователь должен иметь возможность вернуться и отредактировать свою отправку. Можно ли снова отправить конкретное действие от бота, даже если бот продвинулся в потоке разговоров? Кроме того, все действия, отправляемые после ввода текста, который необходимо отредактировать, должны быть отправлены снова, поэтому в основном поток разговоров должен быть сброшен с ввода текста, который пользователь хочет отредактировать.
Комментарии:
1. Что вы пробовали до сих пор? Можете ли вы отредактировать некоторый код в своем вопросе вместе со ссылками на любые образцы или документацию, которым вы следуете?
2. Я использую декларативного бота, аналогичного этому образцу . Я попытался использовать прерывания в диалоговом окне ввода текста, но это не сработало, потому что поток диалоговых окон продолжает развиваться. Я также попытался создать пользовательский диалог, который расширяет ввод текста, но все равно не работал.
3. У меня много диалогов ввода текста, один за другим. Я хочу отправить предыдущий текстовый ввод (чтобы сохранить другой ответ), а затем продолжить диалог с этого текстового ввода. В принципе, мне нужно перемотать поток диалога назад.
4. Приемлем ли ответ асинга?
5. Да, это помогает, но я также хотел бы перейти к предыдущему шагу из другого диалогового окна водопада, если это возможно.
Ответ №1:
Вы можете сделать это, используя следующий код:
stepContext.ActiveDialog.State["stepIndex"] =(int)stepContext.ActiveDialog.State["stepIndex"] - 3;
return await IntroStepAsync(stepContext, cancellationToken);
Где IntroStepAsync-это имя шага в вашем диалоговом окне, а -3 означает, что я нахожусь в третьем приглашении и хочу вернуться к 3-му последнему приглашению, если вы хотите вернуться к предыдущему шагу, вам нужно поставить -1 и заменить IntroStepAsync именем вашего предыдущего приглашения.
Комментарии:
1. Если у меня есть несколько диалоговых окон с водопадом, можно ли отключить stepIndex, чтобы перейти к предыдущему шагу в другом диалоговом окне?
2. Нет, вы не можете вернуться к предыдущему шагу в другом диалоговом окне. Вы можете использовать
ReplaceDialogAsync
, чтобы вернуться к предыдущему диалоговому окну.