Freigeben über


ComponentDialog class

Basisklasse für ein Dialogfeld, das andere untergeordnete Dialogfelder enthält.

Extends

Hinweise

Mit Komponentendialogfeldern können Sie die Logik Ihres Bots in Komponenten unterteilen, die selbst als Dialog zu einem anderen ComponentDialog oder DialogSethinzugefügt werden können. Komponenten können auch als Teil eines Knotenpakets exportiert und in anderen Bots verwendet werden.

Um eine neue Komponente zu definieren, leiten Sie eine Klasse von ComponentDialog ab, und fügen Sie die untergeordneten Dialogfelder innerhalb des Klassenkonstruktors hinzu:

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;

Anschließend können Sie einer anderen DialogSet oder ComponentDialogneue Instanzen Ihrer Komponente hinzufügen:

const dialogs = new DialogSet(dialogState);
dialogs.add(new FillProfileDialog('fillProfile'));

Konstruktoren

ComponentDialog(string)

Erstellt eine neue Instanz der Dialog Klasse.

Eigenschaften

id

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

telemetryClient

Legen Sie den Telemetrieclient fest, und wenden Sie ihn auch auf alle untergeordneten Dialogfelder an. Zukünftige Dialogfelder, die der Komponente hinzugefügt werden, erben ebenfalls diesen Client. Rufen Sie den aktuellen Telemetrieclient ab.

Geerbte Eigenschaften

dialogs

Das Dialogfeld "Container" wird festgelegt.

EndOfTurn

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

Methoden

addDialog(Dialog)

Fügt ein untergeordnetes Dialog- hinzu oder fordert sie den internen DialogSet-.

beginDialog(DialogContext, O)

Wird aufgerufen, wenn das Dialogfeld gestartet und auf den Dialogstapel des übergeordneten Elements verschoben wird. Standardmäßig ruft dies die Dialog.BeginDialogAsync(DialogContext, Object, CancellationToken)-Methode des anfänglichen Dialogfelds der Komponente auf, wie durch InitialDialogId definiert. Überschreiben Sie diese Methode in einer abgeleiteten Klasse, um die Interruptlogik zu implementieren.

continueDialog(DialogContext)

Wird aufgerufen, wenn das Dialogfeld fortgesetzt, wobei es sich um das aktive Dialogfeld handelt und der Benutzer mit einem neuen Aktivitäts-antwortet. Wenn diese Methode nicht außer Kraft gesetzt wird, wird das Dialogfeld automatisch beendet, wenn der Benutzer antwortet.

createChildContext(DialogContext)

Erstellt den inneren Dialogfeldkontext.

endDialog(TurnContext, DialogInstance, DialogReason)

Wird aufgerufen, wenn das Dialogfeld beendet wird.

repromptDialog(TurnContext, DialogInstance)

Wird aufgerufen, wenn das Dialogfeld den Benutzer zur Eingabe erneut auffordert.

resumeDialog(DialogContext, DialogReason, any)

Wird aufgerufen, wenn ein untergeordnetes Dialogfeld im Dialogstapel des übergeordneten Elements diese Drehung abgeschlossen hat und dieses Steuerelement an diese Dialogfeldkomponente zurückgibt.

Geerbte Methoden

configure(Record<string, unknown>)

Fluent-Methode zum Konfigurieren des Objekts.

findDialog(string)

Sucht ein untergeordnetes Dialogfeld, das zuvor dem Container hinzugefügt wurde.

getConverter(string)
getVersion()

Eine codierte Zeichenfolge zur Unterstützung der Erkennung von Bot-Änderungen bei der erneuten Bereitstellung.

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.

Details zum Konstruktor

ComponentDialog(string)

Erstellt eine neue Instanz der Dialog Klasse.

new ComponentDialog(dialogId?: string)

Parameter

dialogId

string

Wahlfrei. eindeutige ID des Dialogfelds.

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

Legen Sie den Telemetrieclient fest, und wenden Sie ihn auch auf alle untergeordneten Dialogfelder an. Zukünftige Dialogfelder, die der Komponente hinzugefügt werden, erben ebenfalls diesen Client. Rufen Sie den aktuellen Telemetrieclient ab.

BotTelemetryClient telemetryClient

Eigenschaftswert

BotTelemetryClient

Der BotTelemetryClient für die Protokollierung verwendet werden.

Geerbte Eigenschaftsdetails

dialogs

Das Dialogfeld "Container" wird festgelegt.

dialogs: DialogSet

Eigenschaftswert

vonDialogContainer.dialogs geerbt

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

addDialog(Dialog)

Fügt ein untergeordnetes Dialog- hinzu oder fordert sie den internen DialogSet-.

function addDialog(dialog: Dialog): this

Parameter

dialog
Dialog

Das untergeordnete Dialogfeld oder Aufforderung zum Hinzufügen.

Gibt zurück

this

Der ComponentDialog nach Abschluss des Vorgangs.

Hinweise

Der Dialog.id des ersten untergeordneten Elements, das der Komponente hinzugefügt wurde, wird der initialDialogId-Eigenschaft zugewiesen.

beginDialog(DialogContext, O)

Wird aufgerufen, wenn das Dialogfeld gestartet und auf den Dialogstapel des übergeordneten Elements verschoben wird. Standardmäßig ruft dies die Dialog.BeginDialogAsync(DialogContext, Object, CancellationToken)-Methode des anfänglichen Dialogfelds der Komponente auf, wie durch InitialDialogId definiert. Überschreiben Sie diese Methode in einer abgeleiteten Klasse, um die Interruptlogik zu implementieren.

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

Parameter

outerDC
DialogContext

Das übergeordnete DialogContext- für die aktuelle Unterhaltungswende.

options

O

Optional, erste Informationen, die an das Dialogfeld ü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 das Dialogfeld fortgesetzt, wobei es sich um das aktive Dialogfeld handelt und der Benutzer mit einem neuen Aktivitäts-antwortet. Wenn diese Methode nicht außer Kraft gesetzt wird, wird das Dialogfeld automatisch beendet, wenn der Benutzer antwortet.

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

Parameter

outerDC
DialogContext

Das übergeordnete 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.

createChildContext(DialogContext)

Erstellt den inneren Dialogfeldkontext.

function createChildContext(outerDC: DialogContext): DialogContext

Parameter

outerDC
DialogContext

der äußere Dialogkontext

Gibt zurück

Der erstellte Dialogkontext.

endDialog(TurnContext, DialogInstance, DialogReason)

Wird aufgerufen, wenn das Dialogfeld beendet wird.

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

Parameter

context

TurnContext

Das TurnContext--Objekt für diese Drehung.

instance
DialogInstance

Statusinformationen, die der Instanz dieser Komponente zugeordnet sind, Dialog im Dialogstapel des übergeordneten Elements.

reason
DialogReason

Grund, warum das Dialogfeld beendet wurde.

Gibt zurück

Promise<void>

Eine Zusage, die den asynchronen Vorgang darstellt.

Hinweise

Wenn diese Methode aus dem Kontext des übergeordneten Dialogfelds aufgerufen wird, bricht die Komponente Dialog alle Dialogfelder im inneren Dialogstapel ab, bevor sie beendet wird.

repromptDialog(TurnContext, DialogInstance)

Wird aufgerufen, wenn das Dialogfeld den Benutzer zur Eingabe erneut auffordert.

function repromptDialog(context: TurnContext, instance: DialogInstance): Promise<void>

Parameter

context

TurnContext

Das TurnContext--Objekt für diese Drehung.

instance
DialogInstance

Statusinformationen für dieses Dialogfeld.

Gibt zurück

Promise<void>

Eine Zusage, die den asynchronen Vorgang darstellt.

resumeDialog(DialogContext, DialogReason, any)

Wird aufgerufen, wenn ein untergeordnetes Dialogfeld im Dialogstapel des übergeordneten Elements diese Drehung abgeschlossen hat und dieses Steuerelement an diese Dialogfeldkomponente zurückgibt.

function resumeDialog(outerDC: DialogContext, _reason: DialogReason, _result?: any): Promise<DialogTurnResult>

Parameter

outerDC
DialogContext

Die DialogContext- für die aktuelle Unterhaltungswende.

_reason
DialogReason

Grund, 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.

Hinweise

Wenn die Aufgabe erfolgreich ist, gibt das Ergebnis an, ob dieses Dialogfeld nach der Verarbeitung dieses Dialogfelds noch aktiv ist. Im Allgemeinen wurde das untergeordnete Dialogfeld mit einem Aufruf von beginDialog(DialogContext, Objekt) im Kontext des übergeordneten Elements gestartet. Wenn jedoch die DialogContext.replaceDialog(string, object)-Methode aufgerufen wird, kann das logische untergeordnete Dialogfeld anders als das Original sein. Wenn diese Methode nicht außer Kraft gesetzt wird, ruft das Dialogfeld automatisch den RepromptDialog(ITurnContext, DialogInstance) auf, wenn der Benutzer antwortet.

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

findDialog(string)

Sucht ein untergeordnetes Dialogfeld, das zuvor dem Container hinzugefügt wurde.

function findDialog(dialogId: string): Dialog | undefined

Parameter

dialogId

string

ID des zu suchenden Dialogfelds.

Gibt zurück

Dialog | undefined

Das Dialogfeld, falls gefunden; andernfalls NULL.

Geerbt vonDialogContainer.findDialog

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

getVersion()

Eine codierte Zeichenfolge zur Unterstützung der Erkennung von Bot-Änderungen bei der erneuten Bereitstellung.

function getVersion(): string

Gibt zurück

string

Eindeutige Zeichenfolge, die sich nur ändern sollte, wenn sich das Dialogfeld auf eine Weise geändert hat, die das Dialogfeld neu starten soll.

Hinweise

Dadurch werden standardmäßig die Dialogfelder ID- zurückgegeben, können jedoch außer Kraft gesetzt werden, um präzisere Änderungserkennungslogik bereitzustellen. Jedes Dialogfeld im Stapel, das seine Versionsänderung hat, führt zu einem versionChanged Ereignis wird ausgelöst. Wenn dieses Ereignis nicht vom Bot behandelt wird, wird ein Fehler ausgelöst, der dazu führt, dass die Bots-Fehlerhandlerlogik ausgeführt wird.

Durch zurückgeben einer leeren Zeichenfolge wird die Versionsnachverfolgung für die Komponente insgesamt deaktiviert.

geerbt vonDialog.getVersion

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 vonDialogContainer.onDialogEvent-