Compartir a través de


WaterfallDialog class

Una cascada es un cuadro de diálogo optimizado para solicitar a un usuario una serie de preguntas.

Extends

Dialog<O>

Comentarios

Las cascadas aceptan una pila de funciones que se ejecutarán en secuencia. Cada paso en cascada puede hacer una pregunta del usuario y la respuesta del usuario se pasará al siguiente paso de la cascada a través de step.result. Se puede usar un objeto step.value especial para conservar los valores entre los pasos:

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;

Constructores

WaterfallDialog(string, WaterfallStep<O>[])

Crea un cuadro de diálogo en cascada que contiene la matriz de pasos especificada.

Propiedades

id

Identificador único del cuadro de diálogo. Establece el identificador único del cuadro de diálogo.

telemetryClient

Obtiene el cliente de telemetría para este cuadro de diálogo. Establece el cliente de telemetría para este cuadro de diálogo.

Propiedades heredadas

EndOfTurn

Obtiene un resultado predeterminado de fin de turno.

Métodos

addStep(WaterfallStep<O>)

Agrega un nuevo paso a la cascada.

beginDialog(DialogContext, O)

Se llama cuando se inicia la WaterfallDialog y se inserta en la pila de diálogos.

continueDialog(DialogContext)

Se llama cuando el de WaterfallDialog continúa, donde es el cuadro de diálogo activo y el usuario responde con un nuevo Actividad.

endDialog(TurnContext, DialogInstance, DialogReason)

Se llama cuando finaliza el cuadro de diálogo.

getVersion()

Obtiene la versión del cuadro de diálogo, compuesta por el identificador y el número de pasos.

resumeDialog(DialogContext, DialogReason, any)

Se llama cuando un elemento secundario WaterfallDialog completó su turno, devolviendo el control a este cuadro de diálogo.

Métodos heredados

configure(Record<string, unknown>)

Método Fluent para configurar el objeto.

getConverter(string)
onDialogEvent(DialogContext, DialogEvent)

Se llama cuando se ha generado un evento, mediante DialogContext.emitEvent(), mediante el cuadro de diálogo actual o un diálogo que inició el diálogo actual.

repromptDialog(TurnContext, DialogInstance)

Cuando se invalida en una clase derivada, reprote el usuario para la entrada.

Detalles del constructor

WaterfallDialog(string, WaterfallStep<O>[])

Crea un cuadro de diálogo en cascada que contiene la matriz de pasos especificada.

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

Parámetros

dialogId

string

Identificador único del cuadro de diálogo dentro del componente o establece en el que se va a agregar.

steps

WaterfallStep<O>[]

(Opcional) matriz de funciones asincrónicas de pasos de cascada.

Comentarios

Consulte la función addStep() para obtener más información sobre cómo crear una función de paso válida.

Detalles de las propiedades

id

Identificador único del cuadro de diálogo. Establece el identificador único del cuadro de diálogo.

string id

Valor de propiedad

string

Identificador del cuadro de diálogo.

Comentarios

Se generará automáticamente si no se especifica.

telemetryClient

Obtiene el cliente de telemetría para este cuadro de diálogo. Establece el cliente de telemetría para este cuadro de diálogo.

BotTelemetryClient telemetryClient

Valor de propiedad

BotTelemetryClient

BotTelemetryClient que se va a usar para el registro.

Detalles de las propiedades heredadas

EndOfTurn

Obtiene un resultado predeterminado de fin de turno.

static EndOfTurn: DialogTurnResult

Valor de propiedad

Comentarios

Este resultado indica que un cuadro de diálogo (o un paso lógico dentro de un diálogo) ha completado el procesamiento del turno actual, sigue activo y está esperando más entradas.

heredado dedialog.EndOfTurn

Detalles del método

addStep(WaterfallStep<O>)

Agrega un nuevo paso a la cascada.

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

Parámetros

step

WaterfallStep<O>

Función de paso asincrónica que se va a llamar.

Devoluciones

this

Cuadro de diálogo en cascada para llamadas fluidas a addStep().

Comentarios

Todas las funciones de paso deben ser asincrónicas y devolver un DialogTurnResult. El WaterfallStepContext pasado a la función deriva de DialogContext y contiene numerosos métodos de manipulación de pila que devuelven un DialogTurnResult para que normalmente pueda devolver el resultado del método DialogContext al que llama.

La propia función step puede ser un cierre asincrónico:

const helloDialog = new WaterfallDialog('hello');

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

Una función asincrónica con nombre:

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

helloDialog.addStep(helloWorldStep);

O bien, un método de clase que se ha enlazado a su puntero this:

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

beginDialog(DialogContext, O)

Se llama cuando se inicia la WaterfallDialog y se inserta en la pila de diálogos.

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

Parámetros

dc
DialogContext

dialogContext para el turno actual de conversación.

options

O

Opcional, la información inicial que se va a pasar al cuadro de diálogo de .

Devoluciones

Promise<DialogTurnResult>

Promesa que representa la operación asincrónica.

Comentarios

Si la tarea se realiza correctamente, el resultado indica si el cuadro de diálogo de sigue activo después de que el cuadro de diálogo haya procesado el turno.

continueDialog(DialogContext)

Se llama cuando el de WaterfallDialog continúa, donde es el cuadro de diálogo activo y el usuario responde con un nuevo Actividad.

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

Parámetros

dc
DialogContext

dialogContext para el turno actual de conversación.

Devoluciones

Promise<DialogTurnResult>

Promesa que representa la operación asincrónica.

Comentarios

Si la tarea se realiza correctamente, el resultado indica si el cuadro de diálogo sigue activo después de que el diálogo haya procesado el turno. El resultado también puede contener un valor devuelto.

endDialog(TurnContext, DialogInstance, DialogReason)

Se llama cuando finaliza el cuadro de diálogo.

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

Parámetros

context

TurnContext

Contexto para el turno actual de conversación.

instance
DialogInstance

Instancia del cuadro de diálogo actual.

reason
DialogReason

Motivo por el que finaliza el cuadro de diálogo.

Devoluciones

Promise<void>

getVersion()

Obtiene la versión del cuadro de diálogo, compuesta por el identificador y el número de pasos.

function getVersion(): string

Devoluciones

string

Versión del cuadro de diálogo, compuesta por el identificador y el número de pasos.

resumeDialog(DialogContext, DialogReason, any)

Se llama cuando un elemento secundario WaterfallDialog completó su turno, devolviendo el control a este cuadro de diálogo.

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

Parámetros

dc
DialogContext

El dialogContext de para el turno actual de la conversación.

reason
DialogReason

(xref:botbuilder-dialogs. DialogReason) por qué se reanudó el diálogo.

result

any

Opcional, el valor devuelto desde el cuadro de diálogo al que se llamó. El tipo del valor devuelto depende del cuadro de diálogo secundario.

Devoluciones

Promise<DialogTurnResult>

Promesa que representa la operación asincrónica.

Detalles de los métodos heredados

configure(Record<string, unknown>)

Método Fluent para configurar el objeto.

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

Parámetros

config

Record<string, unknown>

Opciones de configuración que se van a aplicar.

Devoluciones

this

configurable una vez completada la operación.

heredado deconfigurable.configure

getConverter(string)

function getConverter(_property: string): Converter | ConverterFactory

Parámetros

_property

string

Clave de la configuración del selector condicional.

Devoluciones

Convertidor para la configuración del selector.

heredado deconfigurable.getConverter

onDialogEvent(DialogContext, DialogEvent)

Se llama cuando se ha generado un evento, mediante DialogContext.emitEvent(), mediante el cuadro de diálogo actual o un diálogo que inició el diálogo actual.

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

Parámetros

dc
DialogContext

Contexto del cuadro de diálogo para el turno actual de conversación.

e
DialogEvent

Evento que se está generando.

Devoluciones

Promise<boolean>

True si el diálogo actual controla el evento y se debe detener la propagación.

Heredado deDialog.onDialogEvent

repromptDialog(TurnContext, DialogInstance)

Cuando se invalida en una clase derivada, reprote el usuario para la entrada.

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

Parámetros

_context

TurnContext

Objeto de contexto del turno.

_instance
DialogInstance

Información de estado actual para este cuadro de diálogo.

Devoluciones

Promise<void>

Comentarios

Los diálogos derivados que admiten la validación y la lógica de nueva solicitud deben invalidar este método. De forma predeterminada, este método no tiene ningún efecto.

El DialogContext llama a este método cuando el diálogo actual debe volver a solicitar la entrada del usuario. Este método se implementa para los cuadros de diálogo de solicitud.

Consulte también

heredado dedialog.repromptDialog