Freigeben über


WaterfallDialog class

Ein Wasserfall ist ein Dialogfeld, das für die Aufforderung eines Benutzers mit einer Reihe von Fragen optimiert ist.

Extends

Dialog<O>

Hinweise

Wasserfälle akzeptieren einen Stapel von Funktionen, die in Folge ausgeführt werden. Jeder Wasserfallschritt kann eine Frage des Benutzers stellen, und die Antwort des Benutzers wird über step.resultan den nächsten Schritt im Wasserfall übergeben. Ein spezielles step.value-Objekt kann verwendet werden, um Werte zwischen Schritten zu speichern:

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;

Konstruktoren

WaterfallDialog(string, WaterfallStep<O>[])

Erstellt ein neues Wasserfalldialogfeld mit dem angegebenen Array von Schritten.

Eigenschaften

id

Eindeutige ID des Dialogfelds. Legt die eindeutige ID des Dialogfelds fest.

telemetryClient

Ruft den Telemetrieclient für dieses Dialogfeld ab. Legt den Telemetrieclient für dieses Dialogfeld fest.

Geerbte Eigenschaften

EndOfTurn

Ruft ein Standardmäßiges End-of-Turn-Ergebnis ab.

Methoden

addStep(WaterfallStep<O>)

Fügt dem Wasserfall einen neuen Schritt hinzu.

beginDialog(DialogContext, O)

Wird aufgerufen, wenn das WaterfallDialog- gestartet und auf den Dialogstapel verschoben wird.

continueDialog(DialogContext)

Wird aufgerufen, wenn die WaterfallDialog-fortgesetzt, wobei es sich um das aktive Dialogfeld handelt und der Benutzer mit einem neuen Activityantwortet.

endDialog(TurnContext, DialogInstance, DialogReason)

Wird aufgerufen, wenn das Dialogfeld beendet wird.

getVersion()

Ruft die Dialogversion ab, die aus der ID und der Anzahl der Schritte besteht.

resumeDialog(DialogContext, DialogReason, any)

Wird aufgerufen, wenn ein untergeordnetes WaterfallDialog seine Drehung abgeschlossen hat, und gibt das Steuerelement zu diesem Dialogfeld zurück.

Geerbte Methoden

configure(Record<string, unknown>)

Fluent-Methode zum Konfigurieren des Objekts.

getConverter(string)
onDialogEvent(DialogContext, DialogEvent)

Wird aufgerufen, wenn ein Ereignis mit DialogContext.emitEvent()ausgelöst wurde, entweder durch das aktuelle Dialogfeld oder ein Dialogfeld, das das aktuelle Dialogfeld gestartet hat.

repromptDialog(TurnContext, DialogInstance)

Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird der Benutzer erneut zur Eingabe aufgefordert.

Details zum Konstruktor

WaterfallDialog(string, WaterfallStep<O>[])

Erstellt ein neues Wasserfalldialogfeld mit dem angegebenen Array von Schritten.

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

Parameter

dialogId

string

Eindeutige ID des Dialogfelds innerhalb der Komponente oder Festlegen, dass es hinzugefügt wird.

steps

WaterfallStep<O>[]

(Optional) Array von asynchronen Wasserfallschrittfunktionen.

Hinweise

Details zum Erstellen einer gültigen Schrittfunktion finden Sie in der addStep() Funktion.

Details zur Eigenschaft

id

Eindeutige ID des Dialogfelds. Legt die eindeutige ID des Dialogfelds fest.

string id

Eigenschaftswert

string

Die ID für das Dialogfeld.

Hinweise

Dies wird automatisch generiert, wenn nicht angegeben.

telemetryClient

Ruft den Telemetrieclient für dieses Dialogfeld ab. Legt den Telemetrieclient für dieses Dialogfeld fest.

BotTelemetryClient telemetryClient

Eigenschaftswert

BotTelemetryClient

Der BotTelemetryClient für die Protokollierung verwendet werden.

Geerbte Eigenschaftsdetails

EndOfTurn

Ruft ein Standardmäßiges End-of-Turn-Ergebnis ab.

static EndOfTurn: DialogTurnResult

Eigenschaftswert

Hinweise

Dieses Ergebnis gibt an, dass ein Dialogfeld (oder ein logischer Schritt innerhalb eines Dialogfelds) die Verarbeitung für die aktuelle Drehung abgeschlossen hat, noch aktiv ist und auf weitere Eingaben wartet.

vonDialog.EndOfTurn geerbt

Details zur Methode

addStep(WaterfallStep<O>)

Fügt dem Wasserfall einen neuen Schritt hinzu.

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

Parameter

step

WaterfallStep<O>

Asynchrone Schrittfunktion, die aufgerufen werden soll.

Gibt zurück

this

Wasserfalldialogfeld für Fluent-Anrufe an addStep().

Hinweise

Alle Schrittfunktionen sollten asynchron sein und einen DialogTurnResultzurückgeben. Die an Ihre Funktion übergebene WaterfallStepContext wird von DialogContext abgeleitet und enthält zahlreiche Stapelmanipulationsmethoden, die eine DialogTurnResult zurückgeben, sodass Sie in der Regel nur das Ergebnis aus der von Ihnen aufgerufenen DialogContext-Methode zurückgeben können.

Die Schrittfunktion selbst kann eine asynchrone Schließung sein:

const helloDialog = new WaterfallDialog('hello');

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

Eine benannte asynchrone Funktion:

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

helloDialog.addStep(helloWorldStep);

Oder eine Klassenmethode, die an den this Zeiger gebunden wurde:

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

beginDialog(DialogContext, O)

Wird aufgerufen, wenn das WaterfallDialog- gestartet und auf den Dialogstapel verschoben wird.

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

Parameter

dc
DialogContext

Die DialogContext- für die aktuelle Unterhaltungswende.

options

O

Optional, erste Informationen, die an das Dialogübergeben werden sollen.

Gibt zurück

Promise<DialogTurnResult>

Eine Zusage, die den asynchronen Vorgang darstellt.

Hinweise

Wenn die Aufgabe erfolgreich ist, gibt das Ergebnis an, ob das Dialogfeld noch aktiv ist, nachdem die Drehung vom Dialogfeld verarbeitet wurde.

continueDialog(DialogContext)

Wird aufgerufen, wenn die WaterfallDialog-fortgesetzt, wobei es sich um das aktive Dialogfeld handelt und der Benutzer mit einem neuen Activityantwortet.

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

Parameter

dc
DialogContext

Die DialogContext- für die aktuelle Unterhaltungswende.

Gibt zurück

Promise<DialogTurnResult>

Eine Zusage, die den asynchronen Vorgang darstellt.

Hinweise

Wenn die Aufgabe erfolgreich ist, gibt das Ergebnis an, ob das Dialogfeld noch aktiv ist, nachdem die Drehung vom Dialogfeld verarbeitet wurde. Das Ergebnis kann auch einen Rückgabewert enthalten.

endDialog(TurnContext, DialogInstance, DialogReason)

Wird aufgerufen, wenn das Dialogfeld beendet wird.

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

Parameter

context

TurnContext

Kontext für die aktuelle Unterhaltungswende.

instance
DialogInstance

Die Instanz des aktuellen Dialogfelds.

reason
DialogReason

Der Grund, warum das Dialogfeld beendet wird.

Gibt zurück

Promise<void>

getVersion()

Ruft die Dialogversion ab, die aus der ID und der Anzahl der Schritte besteht.

function getVersion(): string

Gibt zurück

string

Dialogversion, bestehend aus der ID und der Anzahl der Schritte.

resumeDialog(DialogContext, DialogReason, any)

Wird aufgerufen, wenn ein untergeordnetes WaterfallDialog seine Drehung abgeschlossen hat, und gibt das Steuerelement zu diesem Dialogfeld zurück.

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

Parameter

dc
DialogContext

Die DialogContext- für die aktuelle Unterhaltung.

reason
DialogReason

(xref:botbuilder-dialogs. DialogReason) warum das Dialogfeld fortgesetzt wurde.

result

any

Optionaler Wert, der aus dem aufgerufenen Dialogfeld zurückgegeben wurde. Der Typ des zurückgegebenen Werts hängt vom untergeordneten Dialogfeld ab.

Gibt zurück

Promise<DialogTurnResult>

Eine Zusage, die den asynchronen Vorgang darstellt.

Details zur geerbten Methode

configure(Record<string, unknown>)

Fluent-Methode zum Konfigurieren des Objekts.

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

Parameter

config

Record<string, unknown>

Anzuwendende Konfigurationseinstellungen.

Gibt zurück

this

Die konfigurierbaren nach Abschluss des Vorgangs.

geerbt vonKonfigurierbar.configure

getConverter(string)

function getConverter(_property: string): Converter | ConverterFactory

Parameter

_property

string

Der Schlüssel der Konfiguration der bedingten Auswahl.

Gibt zurück

Der Konverter für die Selektorkonfiguration.

Geerbt vonKonfigurierbar.getConverter

onDialogEvent(DialogContext, DialogEvent)

Wird aufgerufen, wenn ein Ereignis mit DialogContext.emitEvent()ausgelöst wurde, entweder durch das aktuelle Dialogfeld oder ein Dialogfeld, das das aktuelle Dialogfeld gestartet hat.

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

Parameter

dc
DialogContext

Der Dialogkontext für die aktuelle Unterhaltungswende.

e
DialogEvent

Das ausgelöste Ereignis.

Gibt zurück

Promise<boolean>

True, wenn das Ereignis vom aktuellen Dialogfeld behandelt wird und Bubbling beendet werden soll.

geerbt vonDialog.onDialogEvent

repromptDialog(TurnContext, DialogInstance)

Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird der Benutzer erneut zur Eingabe aufgefordert.

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

Parameter

_context

TurnContext

Das Kontextobjekt für die Drehung.

_instance
DialogInstance

Aktuelle Statusinformationen für dieses Dialogfeld.

Gibt zurück

Promise<void>

Hinweise

Abgeleitete Dialogfelder, die validierungs- und erneute Aufforderungslogik unterstützen, sollten diese Methode überschreiben. Standardmäßig hat diese Methode keine Auswirkung.

Die DialogContext- ruft diese Methode auf, wenn das aktuelle Dialogfeld eingaben vom Benutzer erneut anfordern soll. Diese Methode wird für Eingabeaufforderungsdialoge implementiert.

Siehe auch

geerbt vonDialog.repromptDialog-