DialogSet class
Ein verwandter Satz von Dialogfeldern, die sich gegenseitig aufrufen können.
Hinweise
Der Konstruktor für den Dialogsatz sollte eine Statuseigenschaft übergeben werden, die verwendet wird, um den Dialogstapel für den Satz beizubehalten:
const { ConversationState, MemoryStorage, ActivityTypes } = require('botbuilder');
const { DialogSet, Dialog, DialogTurnStatus } = require('botbuilder-dialogs');
const convoState = new ConversationState(new MemoryStorage());
const dialogState = convoState.createProperty('dialogState');
const dialogs = new DialogSet(dialogState);
Der Bot kann dem Satz Mithilfe der add()-Methode Dialogfelder oder Eingabeaufforderungen hinzufügen:
class GreetingDialog extends Dialog {
async beginDialog(dc, options) {
await dc.context.sendActivity(`Hi! I'm a bot.`);
return await dc.endDialog();
}
}
dialogs.add(new GreetingDialog('greeting'));
Um mit den Sets-Dialogfeldern zu interagieren, können Sie createContext() mit dem aktuellen TurnContext
aufrufen. Dadurch wird eine DialogContext
erstellt, die zum Starten oder Fortsetzen der Ausführung der Sets-Dialogfelder verwendet werden kann:
// Create DialogContext for the current turn
const dc = await dialogs.createContext(turnContext);
// Try to continue executing an active multi-turn dialog
const result = await dc.continueDialog();
// Send greeting if no other dialogs active
if (result.status == DialogTurnStatus.empty && dc.context.activity.type == ActivityTypes.Message) {
await dc.beginDialog('greeting');
}
Konstruktoren
Dialog |
Erstellt eine neue DialogSet-Instanz. |
Eigenschaften
telemetry |
Legen Sie den Telemetrieclient für diesen Dialogfeldsatz fest, und wenden Sie ihn auf alle aktuellen Dialogfelder an. Legen Sie den Telemetrieclient für diesen Dialogfeldsatz fest, und wenden Sie ihn auf alle aktuellen Dialogfelder an. Zukünftige Dialogfelder, die dem Satz hinzugefügt werden, erben ebenfalls diesen Client. |
Methoden
add<T>(T) | Fügt dem Satz ein neues Dialogfeld oder eine Eingabeaufforderung hinzu. |
create |
Erstellt einen Dialogfeldkontext, der zum Arbeiten mit den Dialogfeldern in der Gruppe verwendet werden kann. |
find(string) | Sucht ein Dialogfeld, das dem Satz zuvor mithilfe add()hinzugefügt wurde. |
get |
Ruft die Dialogfelder des Satzes ab. |
get |
Gibt einen 32-Bit-Hash aller |
Details zum Konstruktor
DialogSet(StatePropertyAccessor<DialogState>)
Erstellt eine neue DialogSet-Instanz.
new DialogSet(dialogState?: StatePropertyAccessor<DialogState>)
Parameter
- dialogState
-
StatePropertyAccessor<DialogState>
(Optional) Zustandseigenschaft, die verwendet wird, um den Set-Dialogstapel beizubehalten.
Hinweise
Wenn die dialogState
-Eigenschaft nicht übergeben wird, geben Aufrufe von createContext() einen Fehler zurück. Sie müssen eine DialogContext
für den Satz manuell erstellen und ihr eigenes Zustandsobjekt übergeben, um den Set-Dialogstapel beizubehalten:
const dc = new DialogContext(dialogs, turnContext, state);
Details zur Eigenschaft
telemetryClient
Legen Sie den Telemetrieclient für diesen Dialogfeldsatz fest, und wenden Sie ihn auf alle aktuellen Dialogfelder an. Legen Sie den Telemetrieclient für diesen Dialogfeldsatz fest, und wenden Sie ihn auf alle aktuellen Dialogfelder an. Zukünftige Dialogfelder, die dem Satz hinzugefügt werden, erben ebenfalls diesen Client.
BotTelemetryClient telemetryClient
Eigenschaftswert
BotTelemetryClient
Der BotTelemetryClient für die Protokollierung verwendet werden.
Details zur Methode
add<T>(T)
Fügt dem Satz ein neues Dialogfeld oder eine Eingabeaufforderung hinzu.
function add<T>(dialog: T): this
Parameter
- dialog
-
T
Das Dialogfeld oder die Aufforderung zum Hinzufügen. Wenn ein Telemetrieclient im Dialogfeldsatz vorhanden ist, wird er jedem Dialogfeld hinzugefügt.
Gibt zurück
this
Das Dialogfeld, das nach Abschluss des Vorgangs festgelegt ist.
Hinweise
Wenn die hinzugefügte Dialog.id
bereits in der Gruppe vorhanden ist, wird die Dialog-ID aktualisiert, um ein Suffix einzuschließen, das sie eindeutig macht. Das Hinzufügen von zwei Dialogfeldern mit dem Namen "duplizieren" zum Satz würde also dazu führen, dass die erste eine ID von "duplizieren" und das zweite Dialogfeld mit der ID "duplizieren2" aufweist.
createContext(TurnContext)
Erstellt einen Dialogfeldkontext, der zum Arbeiten mit den Dialogfeldern in der Gruppe verwendet werden kann.
function createContext(context: TurnContext): Promise<DialogContext>
Parameter
- context
-
TurnContext
Kontext für die aktuelle Unterhaltungswende mit dem Benutzer.
Gibt zurück
Promise<DialogContext>
Eine Zusage, die den asynchronen Vorgang darstellt.
find(string)
Sucht ein Dialogfeld, das dem Satz zuvor mithilfe add()hinzugefügt wurde.
function find(dialogId: string): Dialog | undefined
Parameter
- dialogId
-
string
ID des Dialogfelds oder Aufforderung zum Nachschlagen.
Gibt zurück
Dialog | undefined
Das Dialogfeld, falls gefunden; andernfalls nicht definiert.
Hinweise
In diesem Beispiel wird ein Dialogfeld namens "greeting" gefunden:
const dialog = dialogs.find('greeting');
getDialogs()
Ruft die Dialogfelder des Satzes ab.
function getDialogs(): Dialog[]
Gibt zurück
Dialog[]
Ein Array von Dialog-.
getVersion()
Gibt einen 32-Bit-Hash aller Dialog.version
Werte im Satz zurück.
function getVersion(): string
Gibt zurück
string
Eine Version, die sich ändert, wenn sich eines der untergeordneten Dialogfelder ändert.
Hinweise
Dieser Hash wird im Zustandsspeicher beibehalten und verwendet, um Änderungen an einem Dialogfeldsatz zu erkennen.