Freigeben über


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 TurnContextaufrufen. 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

DialogSet(StatePropertyAccessor<DialogState>)

Erstellt eine neue DialogSet-Instanz.

Eigenschaften

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.

Methoden

add<T>(T)

Fügt dem Satz ein neues Dialogfeld oder eine neue Eingabeaufforderung hinzu.

createContext(TurnContext)

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.

getDialogs()

Ruft die Dialoge der Gruppe ab.

getVersion()

Gibt einen 32-Bit-Hash aller Dialog.version Werte im Satz zurück.

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.