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 DialogSet
hinzugefü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 ComponentDialog
neue Instanzen Ihrer Komponente hinzufügen:
const dialogs = new DialogSet(dialogState);
dialogs.add(new FillProfileDialog('fillProfile'));
Konstruktoren
Component |
Erstellt eine neue Instanz der Dialog Klasse. |
Eigenschaften
id | Eindeutige ID des Dialogfelds. Legt die eindeutige ID des Dialogfelds fest. |
telemetry |
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. |
End |
Ruft ein Standardmäßiges End-of-Turn-Ergebnis ab. |
Methoden
add |
Fügt ein untergeordnetes Dialog- hinzu oder fordert sie den internen DialogSet-. |
begin |
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. |
continue |
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. |
create |
Erstellt den inneren Dialogfeldkontext. |
end |
Wird aufgerufen, wenn das Dialogfeld beendet wird. |
reprompt |
Wird aufgerufen, wenn das Dialogfeld den Benutzer zur Eingabe erneut auffordert. |
resume |
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. |
find |
Sucht ein untergeordnetes Dialogfeld, das zuvor dem Container hinzugefügt wurde. |
get |
|
get |
Eine codierte Zeichenfolge zur Unterstützung der Erkennung von Bot-Änderungen bei der erneuten Bereitstellung. |
on |
Wird aufgerufen, wenn ein Ereignis mit |
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
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.
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
Der Dialogkontext für die aktuelle Unterhaltungswende.
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-