Как я могу обратиться к текущей области диалога в continueDialog? - PullRequest
1 голос
/ 23 сентября 2019

Я использую Botframework с Botbuilder-решениями, но я не понимаю, почему DialogContext в методе continueDialog в глубоко вложенном диалоге не относится к текущему диалогу.

Фактически, первый аргумент в методе continueDialog в самом глубоком вложенном диалоге (который расширяет класс ComponentDialog) всегда ссылается на DialogContext MainDialog (см. Последовательность действий ниже).

Например, у нас есть этот поток диалогов:

- MainDialog (RouterDialog)
                         |--ChildDialog (ComponentDialog)
                                                    |-- ChildChildDialog (ComponentDialog)

Из MainDialog, который является RouterDialog, я добавляю некоторый диалог, такой как ChildDialog и из метода routeЯ начинаю диалог на основе намерения.Пока здесь это не работает хорошо, потому что я в ChildDialog, как и ожидалось.Но если добавить новый диалог ChildChildDialog в ChildDialog, который расширяется от ComponentDialog в методе continueDialog, DialogContext будет ссылаться не на текущий диалог, а на набор диалогов MainDialog

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

Это правильный путь?Должен ли я продолжать регистрировать каждый диалог в главном диалоге или есть какой-то хороший и практичный способ?

1 Ответ

0 голосов
/ 25 сентября 2019

Вы можете получить доступ к внутреннему диалоговому набору диалогового окна компонента следующими способами:

  1. Вы можете вызвать ComponentDialog.addDialog, чтобы добавить диалоговое окно к внутреннему набору диалогового окна компонента
  2. Вы можете позвонить ComponentDialog.findDialog, чтобы извлечь диалог из внутреннего набора диалогового окна компонента
  3. Вы можете переопределить onBeginDialog, onContinueDialog, onEndDialog илиonRepromptDialog - доступ к внутреннему контексту диалога , созданный из набора внутреннего диалога

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...