IDialogWaterfallStep interface
Сигнатура функций, переданных в виде шагов для DialogAction.каскад().
Каскады позволяют запрашивать у пользователя информацию с помощью последовательности вопросов. Каждый шаг каскада может выполнять один из встроенных запросов, запустить новое диалоговое окно, вызвав сеанс.beginDialog(), перейти к следующему шагу каскада вручную с помощью skip()
или завершить каскад.
При вызове диалогового окна или встроенного запроса из каскадного шага результаты из этого диалогового окна или запроса будут переданы через параметр results
на следующий шаг каскада.
Пользователи могут говорить такие вещи, как "никогда неминуемо", чтобы отменить встроенные запросы, чтобы защититься от этого, по крайней мере проверяя наличие результатов.ответ перед продолжением. Более подробное описание того, почему каскад продолжается, можно определить, просмотрев код , возвращенный для результатов.resumed.
Вы можете вручную перейти к следующему шагу каскада, используя переданную функцию skip()
. Вызов skip({ response: "some text" })
с помощью IDialogResult позволяет более точно имитировать результаты из встроенного запроса и упростить общую логику каскада.
Вы можете завершить каскад рано, падая через каждый шаг каскада с помощью вызовов skip()
или просто не запуска другого запроса или диалогового окна.
примечание. Каскады имеют скрытый последний шаг, который автоматически завершает текущий диалог, если вы вызываете запрос или диалоговое окно с последнего шага. Это полезно, когда у вас есть глубокий стек диалогов и требуется вызов session.endDialog() из последнего дочернего элемента в стеке, чтобы завершить весь стек. Закрытие последнего дочернего объекта активирует всех своих родителей, чтобы перейти к этому скрытому шагу, который будет каскадно закрыть весь путь вверх по стеку. Обычно это желаемое поведение, но если вы хотите избежать его или остановить его где-то в середине, вам потребуется добавить шаг в конец водопада, который либо ничего не делает, либо вызывает что-то подобное сеанс.send() который не собирается продвигать каскад вперед.