Вы можете получить текущий шаг index , а также имя диалога, так что вы сможете создать уникальный идентификатор из этой информации (если вы не назвали все диалоги) waterfallDialog "из примера, как я сделал!). Я использую нод, но предполагаю, что получение данных из вашего stepContext похоже или одинаково.
- Имя диалога можно найти по адресу
stepContext.stack[stepContext.stack.length-1].id
. - Шаг Индекс может быть найден в
stepContext.stack[stepContext.stack.length-1].state.stepIndex
.
Я не могу вспомнить, можете ли вы в итоге получить вложенные диалоги внутри диалога водопада. Я знаю, что ваш главный / внешний контекст будет иметь весь стек, но я думаю у вас всегда будет только один элемент внутри вашего конкретного водопада. Тем не менее, текущий диалог должен быть последним в стеке, поэтому доступ к нему как stepContext.stack.length-1
должен работать в любом случае. В случае, если текущий диалог находится в элементе 0, очевидно, вы можете просто получить к нему доступ как таковой.
Пока имена диалогов вашего водопада уникальны, вы получите идентификаторы, такие как waterfallDialog0, waterfallDialog1, et c. что вы могли бы затем сопоставить в своем словаре, чтобы помочь текстам.
Мне пришло в голову, что вы можете пытаться получить к нему доступ из-за пределов диалога водопада. В этом случае вы все равно сможете получить это из внешнего контекста диалога. Вам, вероятно, придется использовать рекурсивную функцию, чтобы получить ее, что-то вроде
getInnermostActiveDialog(dc) {
var child = dc.child;
return child ? this.getInnermostActiveDialog(child) : dc.activeDialog;
}
, где dc
- ваш внешний контекст диалога. Я не углубился в это, но вы сможете получить те же значения id
и stepIndex
.