DialogSet class
Ein verwandter Satz von Dialogen, die sich alle gegenseitig aufrufen können.
Hinweise
Dem Konstruktor für den Dialogsatz sollte eine Zustandseigenschaft übergeben werden, die verwendet wird, um den Dialogstapel für die Gruppe 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 Setdialogen zu interagieren, können Sie createContext() mit dem aktuellen TurnContext
aufrufen. Dadurch wird ein DialogContext
erstellt, das verwendet werden kann, um die Ausführung der Sätzedialoge zu starten oder fortzusetzen:
// 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 Dialogsatz fest, und wenden Sie ihn auf alle aktuellen Dialogfelder an. Legen Sie den Telemetrieclient für diesen Dialogsatz fest, und wenden Sie ihn auf alle aktuellen Dialogfelder an. Zukünftige Dialogfelder, die dem Satz hinzugefügt werden, erben auch diesen Client. |
Methoden
add<T>(T) | Fügt dem Satz ein neues Dialogfeld oder eine neue Eingabeaufforderung hinzu. |
create |
Erstellt einen Dialogkontext, der zum Arbeiten mit den Dialogen im Satz verwendet werden kann. |
find(string) | Sucht ein Dialogfeld, das dem Satz zuvor mithilfe von add() hinzugefügt wurde. |
get |
Ruft die Dialoge der Gruppe 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 zum Beibehalten des Dialogstapels für Sätze verwendet wird.
Hinweise
Wenn die dialogState
Eigenschaft nicht übergeben wird, geben Aufrufe von createContext() einen Fehler zurück. Sie müssen einen DialogContext
für den Satz manuell erstellen und Ihr eigenes Zustandsobjekt übergeben, um den Dialogstapel für Sätze beizubehalten:
const dc = new DialogContext(dialogs, turnContext, state);
Details zur Eigenschaft
telemetryClient
Legen Sie den Telemetrieclient für diesen Dialogsatz fest, und wenden Sie ihn auf alle aktuellen Dialogfelder an. Legen Sie den Telemetrieclient für diesen Dialogsatz fest, und wenden Sie ihn auf alle aktuellen Dialogfelder an. Zukünftige Dialogfelder, die dem Satz hinzugefügt werden, erben auch diesen Client.
BotTelemetryClient telemetryClient
Eigenschaftswert
BotTelemetryClient
Der BotTelemetryClient , der für die Protokollierung verwendet werden soll.
Details zur Methode
add<T>(T)
Fügt dem Satz ein neues Dialogfeld oder eine neue Eingabeaufforderung hinzu.
function add<T>(dialog: T): this
Parameter
- dialog
-
T
Das dialogfeld oder die eingabeaufforderung, die hinzugefügt werden soll. Wenn im Dialogsatz ein telemetryClient vorhanden ist, wird er jedem Dialogfeld hinzugefügt.
Gibt zurück
this
Das Dialogfeld, das nach Abschluss des Vorgangs festgelegt ist.
Hinweise
Wenn das Dialog.id
hinzugefügte bereits im Satz vorhanden ist, wird die Dialog-ID aktualisiert, sodass sie ein Suffix enthält, das sie eindeutig macht. Das Hinzufügen von 2 Dialogen mit dem Namen "duplikat" zum Satz würde also dazu führen, dass das erste Dialogfeld eine ID von "dupliziert" und das zweite dialogfeld mit der ID "duplikat2" aufweist.
createContext(TurnContext)
Erstellt einen Dialogkontext, der zum Arbeiten mit den Dialogen im Satz verwendet werden kann.
function createContext(context: TurnContext): Promise<DialogContext>
Parameter
- context
-
TurnContext
Kontext für den aktuellen Gesprächsverlauf 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 von add() hinzugefügt wurde.
function find(dialogId: string): Dialog | undefined
Parameter
- dialogId
-
string
ID des Dialogfelds oder der Aufforderung zum Suchen.
Gibt zurück
Dialog | undefined
Das Dialogfeld, falls gefunden; andernfalls nicht definiert.
Hinweise
In diesem Beispiel wird ein Dialogfeld mit dem Namen "Greeting" gefunden:
const dialog = dialogs.find('greeting');
getDialogs()
Ruft die Dialoge der Gruppe 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 eine der untergeordneten Dialogfelder ändert.
Hinweise
Dieser Hash wird im Zustandsspeicher beibehalten und zum Erkennen von Änderungen an einem Dialogsatz verwendet.