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
Waterfall |
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. |
telemetry |
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
End |
Obtiene un resultado predeterminado de fin de turno. |
Métodos
add |
Agrega un nuevo paso a la cascada. |
begin |
Se llama cuando se inicia la |
continue |
Se llama cuando el de |
end |
Se llama cuando finaliza el cuadro de diálogo. |
get |
Obtiene la versión del cuadro de diálogo, compuesta por el identificador y el número de pasos. |
resume |
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. |
get |
|
on |
Se llama cuando se ha generado un evento, mediante |
reprompt |
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
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
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
function beginDialog(dc: DialogContext, options?: O): Promise<DialogTurnResult>
Parámetros
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 de sigue activo después de que el cuadro de diálogo haya procesado el turno.
continueDialog(DialogContext)
Se llama cuando el de
function continueDialog(dc: DialogContext): Promise<DialogTurnResult>
Parámetros
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
El dialogContext de
- 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
Contexto del cuadro de diálogo para el turno actual de conversación.
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
- dialogContext.repromptDialog
- prompt
heredado dedialog.repromptDialog