Поделиться через


WaterfallDialog class

Каскад — это диалоговое окно, оптимизированное для запроса пользователя с рядом вопросов.

Extends

Dialog<O>

Комментарии

Каскады принимают стек функций, которые будут выполняться в последовательности. Каждый каскадный шаг может задать вопрос пользователя, и ответ пользователя будет передан на следующий шаг в каскаде через step.result. Специальный объект step.value можно использовать для сохранения значений между шагами:

const { ComponentDialog, WaterfallDialog, TextPrompt, NumberPrompt } = require('botbuilder-dialogs);

class FillProfileDialog extends ComponentDialog {
    constructor(dialogId) {
        super(dialogId);

        // Add control flow dialogs
        this.addDialog(new WaterfallDialog('start', [
            async (step) => {
                // Ask user their name
                return await step.prompt('namePrompt', `What's your name?`);
            },
            async (step) => {
                // Remember the users answer
                step.values['name'] = step.result;

                // Ask user their age.
                return await step.prompt('agePrompt', `Hi ${step.values['name']}. How old are you?`);
            },
            async (step) => {
                // Remember the users answer
                step.values['age'] = step.result;

                // End the component and return the completed profile.
                return await step.endDialog(step.values);
            }
        ]));

        // Add prompts
        this.addDialog(new TextPrompt('namePrompt'));
        this.addDialog(new NumberPrompt('agePrompt'))
    }
}
module.exports.FillProfileDialog = FillProfileDialog;

Конструкторы

WaterfallDialog(string, WaterfallStep<O>[])

Создает новый каскадный диалог, содержащий заданный массив шагов.

Свойства

id

Уникальный идентификатор диалогового окна. Задает уникальный идентификатор диалогового окна.

telemetryClient

Возвращает клиент телеметрии для этого диалогового окна. Задает клиент телеметрии для этого диалогового окна.

Унаследованные свойства

EndOfTurn

Возвращает результат конца по умолчанию.

Методы

addStep(WaterfallStep<O>)

Добавляет новый шаг в каскад.

beginDialog(DialogContext, O)

Вызывается при запуске каскадного журнала и отправке в стек диалогов.

continueDialog(DialogContext)

Вызывается, когда каскадного журнала продолжается, где это активное диалоговое окно и пользователь отвечает с новым действием.

endDialog(TurnContext, DialogInstance, DialogReason)

Вызывается, когда диалоговое окно заканчивается.

getVersion()

Возвращает версию диалогового окна, состоящую из идентификатора и количества шагов.

resumeDialog(DialogContext, DialogReason, any)

Вызывается, когда дочерний Каскадныйdialog завершил свою очередь, возвращая элемент управления в этом диалоговом окне.

Наследуемые методы

configure(Record<string, unknown>)

Метод Fluent для настройки объекта.

getConverter(string)
onDialogEvent(DialogContext, DialogEvent)

Вызывается при возникновении события, используя DialogContext.emitEvent(), текущим диалогом или диалогом, запущенным текущим диалогом.

repromptDialog(TurnContext, DialogInstance)

При переопределении в производном классе переиздает пользователя для ввода.

Сведения о конструкторе

WaterfallDialog(string, WaterfallStep<O>[])

Создает новый каскадный диалог, содержащий заданный массив шагов.

new WaterfallDialog(dialogId: string, steps?: WaterfallStep<O>[])

Параметры

dialogId

string

Уникальный идентификатор диалогового окна в компоненте или его добавление.

steps

WaterfallStep<O>[]

(Необязательно) массив асинхронных каскадных функций шага.

Комментарии

Дополнительные сведения о создании допустимой функции шага см. в функции addStep().

Сведения о свойстве

id

Уникальный идентификатор диалогового окна. Задает уникальный идентификатор диалогового окна.

string id

Значение свойства

string

Идентификатор диалогового окна.

Комментарии

Это будет автоматически создано, если не указано.

telemetryClient

Возвращает клиент телеметрии для этого диалогового окна. Задает клиент телеметрии для этого диалогового окна.

BotTelemetryClient telemetryClient

Значение свойства

BotTelemetryClient

BotTelemetryClient для ведения журнала.

Сведения об унаследованном свойстве

EndOfTurn

Возвращает результат конца по умолчанию.

static EndOfTurn: DialogTurnResult

Значение свойства

Комментарии

Этот результат указывает, что диалоговое окно (или логический шаг в диалоговом окне) завершило обработку текущего шага, по-прежнему активно и ожидает дополнительных входных данных.

унаследован от диалогового окна.EndOfTurn

Сведения о методе

addStep(WaterfallStep<O>)

Добавляет новый шаг в каскад.

function addStep(step: WaterfallStep<O>): this

Параметры

step

WaterfallStep<O>

Асинхронная функция шага для вызова.

Возвращаемое значение

this

Каскадное диалоговое окно для беглого вызова addStep().

Комментарии

Все функции шага должны быть асинхронными и возвращать DialogTurnResult. WaterfallStepContext, передаваемый в функцию, наследуется от DialogContext и содержит множество методов обработки стека, которые возвращают DialogTurnResult, поэтому обычно можно просто вернуть результат из вызываемого метода DialogContext.

Сама функция шага может быть асинхронным закрытием:

const helloDialog = new WaterfallDialog('hello');

helloDialog.addStep(async (step) => {
    await step.context.sendActivity(`Hello World!`);
    return await step.endDialog();
});

Именованной асинхронной функции:

async function helloWorldStep(step) {
    await step.context.sendActivity(`Hello World!`);
    return await step.endDialog();
}

helloDialog.addStep(helloWorldStep);

Или метод класса, привязанный к его this указателю:

helloDialog.addStep(this.helloWorldStep.bind(this));

beginDialog(DialogContext, O)

Вызывается при запуске каскадного журнала и отправке в стек диалогов.

function beginDialog(dc: DialogContext, options?: O): Promise<DialogTurnResult>

Параметры

dc
DialogContext

DialogContext для текущей очереди беседы.

options

O

Необязательные начальные сведения для передачи в диалоговое окно .

Возвращаемое значение

Promise<DialogTurnResult>

Обещание, представляющее асинхронную операцию.

Комментарии

Если задача выполнена успешно, результат указывает, активен ли диалогового окна после обработки в диалоговом окне.

continueDialog(DialogContext)

Вызывается, когда каскадного журнала продолжается, где это активное диалоговое окно и пользователь отвечает с новым действием.

function continueDialog(dc: DialogContext): Promise<DialogTurnResult>

Параметры

dc
DialogContext

DialogContext для текущей очереди беседы.

Возвращаемое значение

Promise<DialogTurnResult>

Обещание, представляющее асинхронную операцию.

Комментарии

Если задача выполнена успешно, результат указывает, активен ли диалог после обработки в диалоговом окне. Результат также может содержать возвращаемое значение.

endDialog(TurnContext, DialogInstance, DialogReason)

Вызывается, когда диалоговое окно заканчивается.

function endDialog(context: TurnContext, instance: DialogInstance, reason: DialogReason): Promise<void>

Параметры

context

TurnContext

Контекст для текущей очереди беседы.

instance
DialogInstance

Экземпляр текущего диалогового окна.

reason
DialogReason

Причина окончания диалогового окна.

Возвращаемое значение

Promise<void>

getVersion()

Возвращает версию диалогового окна, состоящую из идентификатора и количества шагов.

function getVersion(): string

Возвращаемое значение

string

Версия диалогового окна, состоящая из идентификатора и количества шагов.

resumeDialog(DialogContext, DialogReason, any)

Вызывается, когда дочерний Каскадныйdialog завершил свою очередь, возвращая элемент управления в этом диалоговом окне.

function resumeDialog(dc: DialogContext, reason: DialogReason, result?: any): Promise<DialogTurnResult>

Параметры

dc
DialogContext

DialogContext для текущей очереди беседы.

reason
DialogReason

(xref:botbuilder-dialogs. DialogReason) почему диалоговое окно возобновляется.

result

any

Необязательное значение, возвращаемое из вызываемого диалогового окна. Тип возвращаемого значения зависит от дочернего диалогового окна.

Возвращаемое значение

Promise<DialogTurnResult>

Обещание, представляющее асинхронную операцию.

Сведения о наследуемом методе

configure(Record<string, unknown>)

Метод Fluent для настройки объекта.

function configure(config: Record<string, unknown>): this

Параметры

config

Record<string, unknown>

Параметры конфигурации для применения.

Возвращаемое значение

this

После завершения операции настраиваемый.

наследуется отConfigurable.configure

getConverter(string)

function getConverter(_property: string): Converter | ConverterFactory

Параметры

_property

string

Ключ конфигурации условного селектора.

Возвращаемое значение

Преобразователь конфигурации селектора.

унаследован отConfigurable.getConverter

onDialogEvent(DialogContext, DialogEvent)

Вызывается при возникновении события, используя DialogContext.emitEvent(), текущим диалогом или диалогом, запущенным текущим диалогом.

function onDialogEvent(dc: DialogContext, e: DialogEvent): Promise<boolean>

Параметры

dc
DialogContext

Контекст диалогового окна для текущей очереди беседы.

e
DialogEvent

Возникает событие.

Возвращаемое значение

Promise<boolean>

Значение True, если событие обрабатывается текущим диалогом, а пузырьк должен остановиться.

наследуется от диалогового окна.onDialogEvent

repromptDialog(TurnContext, DialogInstance)

При переопределении в производном классе переиздает пользователя для ввода.

function repromptDialog(_context: TurnContext, _instance: DialogInstance): Promise<void>

Параметры

_context

TurnContext

Объект контекста для поворота.

_instance
DialogInstance

Текущие сведения о состоянии для этого диалогового окна.

Возвращаемое значение

Promise<void>

Комментарии

Производные диалоги, поддерживающие проверку и логику повторного запроса, должны переопределить этот метод. По умолчанию этот метод не действует.

DialogContext вызывает этот метод, когда текущее диалоговое окно должно повторно запрашивать входные данные от пользователя. Этот метод реализуется для диалоговых окон запроса.

См. также

унаследован отDialog.repromptDialog