WaterfallDialog class

Una cascata è un dialogo ottimizzato per richiedere a un utente una serie di domande.

Extends

Dialog<O>

Commenti

Le cascate accettano uno stack di funzioni che verranno eseguite in sequenza. Ogni passaggio a cascata può porre una domanda all'utente e la risposta dell'utente verrà passata al passaggio successivo nella cascata tramite step.result. Un oggetto step.value speciale può essere usato per rendere persistenti i valori tra i passaggi:

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;

Costruttori

WaterfallDialog(string, WaterfallStep<O>[])

Crea un nuovo dialogo a cascata contenente la matrice specificata di passaggi.

Proprietà

id

ID univoco del dialogo. Imposta l'ID univoco della finestra di dialogo.

telemetryClient

Ottiene il client di telemetria per questa finestra di dialogo. Imposta il client di telemetria per questa finestra di dialogo.

Proprietà ereditate

EndOfTurn

Ottiene un risultato di fine turno predefinito.

Metodi

addStep(WaterfallStep<O>)

Aggiunge un nuovo passaggio alla cascata.

beginDialog(DialogContext, O)

Chiamato quando il WaterfallDialog viene avviato e inserito nello stack di dialoghi.

continueDialog(DialogContext)

Chiamato quando il WaterfallDialog continua continua, dove è il dialogo attivo e l'utente risponde con un nuovo Activity.

endDialog(TurnContext, DialogInstance, DialogReason)

Chiamato quando termina il dialogo.

getVersion()

Ottiene la versione della finestra di dialogo, composta dall'ID e dal numero di passaggi.

resumeDialog(DialogContext, DialogReason, any)

Chiamato quando un elemento figlio WaterfallDialog completato il suo turno, restituendo il controllo a questa finestra di dialogo.

Metodi ereditati

configure(Record<string, unknown>)

Metodo Fluent per la configurazione dell'oggetto.

getConverter(string)
onDialogEvent(DialogContext, DialogEvent)

Chiamato quando è stato generato un evento, utilizzando DialogContext.emitEvent(), dalla finestra di dialogo corrente o da una finestra di dialogo avviata dalla finestra di dialogo corrente.

repromptDialog(TurnContext, DialogInstance)

Quando ne viene eseguito l'override in una classe derivata, reinserito l'utente per l'input.

Dettagli costruttore

WaterfallDialog(string, WaterfallStep<O>[])

Crea un nuovo dialogo a cascata contenente la matrice specificata di passaggi.

new WaterfallDialog(dialogId: string, steps?: WaterfallStep<O>[])

Parametri

dialogId

string

ID univoco della finestra di dialogo all'interno del componente o impostarne l'aggiunta.

steps

WaterfallStep<O>[]

(Facoltativo) matrice di funzioni a cascata asincrone.

Commenti

Per informazioni dettagliate sulla creazione di una funzione di passaggio valida, vedere la funzione addStep().

Dettagli proprietà

id

ID univoco del dialogo. Imposta l'ID univoco della finestra di dialogo.

string id

Valore della proprietà

string

ID della finestra di dialogo.

Commenti

Questo verrà generato automaticamente se non specificato.

telemetryClient

Ottiene il client di telemetria per questa finestra di dialogo. Imposta il client di telemetria per questa finestra di dialogo.

BotTelemetryClient telemetryClient

Valore della proprietà

BotTelemetryClient

BotTelemetryClient da usare per la registrazione.

Dettagli proprietà ereditate

EndOfTurn

Ottiene un risultato di fine turno predefinito.

static EndOfTurn: DialogTurnResult

Valore della proprietà

Commenti

Questo risultato indica che un dialogo (o un passaggio logico all'interno di una finestra di dialogo) ha completato l'elaborazione per il turno corrente, è ancora attiva ed è in attesa di più input.

ereditato daDialog.EndOfTurn

Dettagli metodo

addStep(WaterfallStep<O>)

Aggiunge un nuovo passaggio alla cascata.

function addStep(step: WaterfallStep<O>): this

Parametri

step

WaterfallStep<O>

Funzione di passaggio asincrona da chiamare.

Restituisce

this

Finestra di dialogo a cascata per le chiamate Fluent a addStep().

Commenti

Tutte le funzioni di passaggio devono essere asincrone e restituire un DialogTurnResult. Il WaterfallStepContext passato alla funzione deriva da DialogContext e contiene numerosi metodi di manipolazione dello stack che restituiscono un DialogTurnResult in modo da poter in genere restituire semplicemente il risultato dal metodo DialogContext chiamato.

La funzione step stessa può essere una chiusura asincrona:

const helloDialog = new WaterfallDialog('hello');

helloDialog.addStep(async (step) => {
    await step.context.sendActivity(`Hello World!`);
    return await step.endDialog();
});

Funzione asincrona denominata:

async function helloWorldStep(step) {
    await step.context.sendActivity(`Hello World!`);
    return await step.endDialog();
}

helloDialog.addStep(helloWorldStep);

In alternativa, un metodo di classe associato al puntatore this:

helloDialog.addStep(this.helloWorldStep.bind(this));

beginDialog(DialogContext, O)

Chiamato quando il WaterfallDialog viene avviato e inserito nello stack di dialoghi.

function beginDialog(dc: DialogContext, options?: O): Promise<DialogTurnResult>

Parametri

dc
DialogContext

Il DialogContext per il turno di conversazione corrente.

options

O

Informazioni iniziali facoltative da passare alla finestra di dialogo .

Restituisce

Promise<DialogTurnResult>

Promessa che rappresenta l'operazione asincrona.

Commenti

Se l'attività ha esito positivo, il risultato indica se il dialogo è ancora attivo dopo l'elaborazione del turno dal dialogo.

continueDialog(DialogContext)

Chiamato quando il WaterfallDialog continua continua, dove è il dialogo attivo e l'utente risponde con un nuovo Activity.

function continueDialog(dc: DialogContext): Promise<DialogTurnResult>

Parametri

dc
DialogContext

Il DialogContext per il turno di conversazione corrente.

Restituisce

Promise<DialogTurnResult>

Promessa che rappresenta l'operazione asincrona.

Commenti

Se l'attività ha esito positivo, il risultato indica se il dialogo è ancora attivo dopo che il turno è stato elaborato dalla finestra di dialogo. Il risultato può contenere anche un valore restituito.

endDialog(TurnContext, DialogInstance, DialogReason)

Chiamato quando termina il dialogo.

function endDialog(context: TurnContext, instance: DialogInstance, reason: DialogReason): Promise<void>

Parametri

context

TurnContext

Contesto per il turno di conversazione corrente.

instance
DialogInstance

Istanza del dialogo corrente.

reason
DialogReason

Motivo per cui la finestra di dialogo sta terminando.

Restituisce

Promise<void>

getVersion()

Ottiene la versione della finestra di dialogo, composta dall'ID e dal numero di passaggi.

function getVersion(): string

Restituisce

string

Versione della finestra di dialogo, composta dall'ID e dal numero di passaggi.

resumeDialog(DialogContext, DialogReason, any)

Chiamato quando un elemento figlio WaterfallDialog completato il suo turno, restituendo il controllo a questa finestra di dialogo.

function resumeDialog(dc: DialogContext, reason: DialogReason, result?: any): Promise<DialogTurnResult>

Parametri

dc
DialogContext

DialogContext per il turno corrente della conversazione.

reason
DialogReason

(xref:botbuilder-dialogs. DialogReason) perché il dialogo è ripreso.

result

any

Valore facoltativo restituito dalla finestra di dialogo chiamata. Il tipo del valore restituito dipende dal dialogo figlio.

Restituisce

Promise<DialogTurnResult>

Promessa che rappresenta l'operazione asincrona.

Dettagli dei metodi ereditati

configure(Record<string, unknown>)

Metodo Fluent per la configurazione dell'oggetto.

function configure(config: Record<string, unknown>): this

Parametri

config

Record<string, unknown>

Impostazioni di configurazione da applicare.

Restituisce

this

Configurabile al termine dell'operazione.

Ereditato daConfigurable.configure

getConverter(string)

function getConverter(_property: string): Converter | ConverterFactory

Parametri

_property

string

Chiave della configurazione del selettore condizionale.

Restituisce

Convertitore per la configurazione del selettore.

ereditato daConfigurable.getConverter

onDialogEvent(DialogContext, DialogEvent)

Chiamato quando è stato generato un evento, utilizzando DialogContext.emitEvent(), dalla finestra di dialogo corrente o da una finestra di dialogo avviata dalla finestra di dialogo corrente.

function onDialogEvent(dc: DialogContext, e: DialogEvent): Promise<boolean>

Parametri

dc
DialogContext

Contesto del dialogo per il turno corrente della conversazione.

e
DialogEvent

Evento generato.

Restituisce

Promise<boolean>

True se l'evento viene gestito dalla finestra di dialogo corrente e il bubbling deve essere arrestato.

ereditato daDialog.onDialogEvent

repromptDialog(TurnContext, DialogInstance)

Quando ne viene eseguito l'override in una classe derivata, reinserito l'utente per l'input.

function repromptDialog(_context: TurnContext, _instance: DialogInstance): Promise<void>

Parametri

_context

TurnContext

Oggetto di contesto per il turno.

_instance
DialogInstance

Informazioni sullo stato corrente per questa finestra di dialogo.

Restituisce

Promise<void>

Commenti

I dialoghi derivati che supportano la convalida e la logica di ripetizione della richiesta devono eseguire l'override di questo metodo. Per impostazione predefinita, questo metodo non ha alcun effetto.

Il DialogContext chiama questo metodo quando la finestra di dialogo corrente deve richiedere nuovamente l'input dell'utente. Questo metodo viene implementato per i dialoghi di richiesta.

Vedere anche

ereditato daDialog.repromptDialog