Freigeben über


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

DialogSet(StatePropertyAccessor<DialogState>)

Erstellt eine neue DialogSet-Instanz.

Eigenschaften

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.

Methoden

add<T>(T)

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

createContext(TurnContext)

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.

getDialogs()

Ruft die Dialogfelder des Satzes 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 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.