ComponentDialog class
Clase base para un cuadro de diálogo que contiene otros diálogos secundarios.
- Extends
Comentarios
Los diálogos de componentes permiten dividir la lógica del bot en componentes que se pueden agregar como un cuadro de diálogo a otro ComponentDialog
o DialogSet
. Los componentes también se pueden exportar como parte de un paquete de nodo y usarse dentro de otros bots.
Para definir un nuevo componente, derive una clase de ComponentDialog y agregue los diálogos secundarios dentro del constructor de clases:
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;
A continuación, puede agregar nuevas instancias del componente a otra DialogSet
o ComponentDialog
:
const dialogs = new DialogSet(dialogState);
dialogs.add(new FillProfileDialog('fillProfile'));
Constructores
Component |
Crea una nueva instancia de la clase dialog |
Propiedades
id | Identificador único del cuadro de diálogo. Establece el identificador único del cuadro de diálogo. |
telemetry |
Establezca el cliente de telemetría y aplíquelo también a todos los diálogos secundarios. Los diálogos futuros agregados al componente también heredarán este cliente. Obtenga el cliente de telemetría actual. |
Propiedades heredadas
dialogs | El conjunto de diálogos contenedores. |
End |
Obtiene un resultado predeterminado de fin de turno. |
Métodos
add |
Agrega un de diálogo de |
begin |
Se llama cuando se inicia el cuadro de diálogo e inserta en la pila de diálogos del elemento primario. De forma predeterminada, esto llama al método Dialog.BeginDialogAsync(DialogContext, object, CancellationToken) del cuadro de diálogo inicial del componente, tal como se define en InitialDialogId. Invalide este método en una clase derivada para implementar la lógica de interrupción. |
continue |
Se llama cuando se continúa el cuadro de diálogo, donde es el diálogo activo y el usuario responde con una nueva actividad de . Si este método no se invalidado, el cuadro de diálogo finaliza automáticamente cuando el usuario responde. |
create |
Crea el contexto del cuadro de diálogo interno |
end |
|
reprompt |
Se llama cuando el cuadro de diálogo debe volver a solicitar al usuario la entrada. |
resume |
Se llama cuando un cuadro de diálogo secundario de la pila de diálogos del elemento primario completó este turno, devolviendo el control a este componente de diálogo. |
Métodos heredados
configure(Record<string, unknown>) | Método Fluent para configurar el objeto. |
find |
Busca un cuadro de diálogo secundario que se agregó anteriormente al contenedor. |
get |
|
get |
Cadena codificada que se usa para ayudar a detectar los cambios del bot en la reimplempleción. |
on |
Se llama cuando se ha generado un evento, mediante |
Detalles del constructor
ComponentDialog(string)
Crea una nueva instancia de la clase dialog
new ComponentDialog(dialogId?: string)
Parámetros
- dialogId
-
string
Opcional. identificador único del cuadro de diálogo.
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
Establezca el cliente de telemetría y aplíquelo también a todos los diálogos secundarios. Los diálogos futuros agregados al componente también heredarán este cliente. Obtenga el cliente de telemetría actual.
BotTelemetryClient telemetryClient
Valor de propiedad
BotTelemetryClient
Detalles de las propiedades heredadas
dialogs
El conjunto de diálogos contenedores.
dialogs: DialogSet
Valor de propiedad
heredado dedialogContainer.dialogs
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
addDialog(Dialog)
Agrega un de diálogo de
function addDialog(dialog: Dialog): this
Parámetros
- dialog
- Dialog
El cuadro de diálogo secundario o mensaje que se va a agregar.
Devoluciones
this
El ComponentDialog una vez completada la operación.
Comentarios
El Dialog.id del primer elemento secundario agregado al componente se asignará a la propiedad initialDialogId.
beginDialog(DialogContext, O)
Se llama cuando se inicia el cuadro de diálogo e inserta en la pila de diálogos del elemento primario. De forma predeterminada, esto llama al método Dialog.BeginDialogAsync(DialogContext, object, CancellationToken) del cuadro de diálogo inicial del componente, tal como se define en InitialDialogId. Invalide este método en una clase derivada para implementar la lógica de interrupción.
function beginDialog(outerDC: DialogContext, options?: O): Promise<DialogTurnResult>
Parámetros
- outerDC
- DialogContext
La principal
- options
-
O
Opcional, información inicial que se va a pasar al cuadro de diálogo.
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.
continueDialog(DialogContext)
Se llama cuando se continúa el cuadro de diálogo, donde es el diálogo activo y el usuario responde con una nueva actividad de . Si este método no se invalidado, el cuadro de diálogo finaliza automáticamente cuando el usuario responde.
function continueDialog(outerDC: DialogContext): Promise<DialogTurnResult>
Parámetros
- outerDC
- DialogContext
La principal
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.
createChildContext(DialogContext)
Crea el contexto del cuadro de diálogo interno
function createChildContext(outerDC: DialogContext): DialogContext
Parámetros
- outerDC
- DialogContext
el contexto del cuadro de diálogo externo
Devoluciones
Contexto de diálogo creado.
endDialog(TurnContext, DialogInstance, DialogReason)
Se llama cuando finaliza el cuadro de diálogo de .
function endDialog(context: TurnContext, instance: DialogInstance, reason: DialogReason): Promise<void>
Parámetros
- context
-
TurnContext
Objeto TurnContext para este turno.
- instance
- DialogInstance
Información de estado asociada a la instancia de este componente Cuadro de diálogo en la pila de diálogos de su elemento primario.
- reason
- DialogReason
Motivo por el que finalizó el cuadro de diálogo de
Devoluciones
Promise<void>
Promesa que representa la operación asincrónica.
Comentarios
Cuando se llama a este método desde el contexto del diálogo primario, el componente Dialog cancela todos los diálogos en su pila de diálogos interno antes de finalizar.
repromptDialog(TurnContext, DialogInstance)
Se llama cuando el cuadro de diálogo debe volver a solicitar al usuario la entrada.
function repromptDialog(context: TurnContext, instance: DialogInstance): Promise<void>
Parámetros
- context
-
TurnContext
Objeto TurnContext para este turno.
- instance
- DialogInstance
Información de estado de este cuadro de diálogo.
Devoluciones
Promise<void>
Promesa que representa la operación asincrónica.
resumeDialog(DialogContext, DialogReason, any)
Se llama cuando un cuadro de diálogo secundario de la pila de diálogos del elemento primario completó este turno, devolviendo el control a este componente de diálogo.
function resumeDialog(outerDC: DialogContext, _reason: DialogReason, _result?: any): Promise<DialogTurnResult>
Parámetros
- outerDC
- DialogContext
dialogContext para el turno actual de conversación.
- _reason
- DialogReason
Motivo por el que se reanudó el cuadro de 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.
Comentarios
Si la tarea se realiza correctamente, el resultado indica si este diálogo sigue activo después de procesar este turno de diálogo. Por lo general, el cuadro de diálogo secundario se inició con una llamada a beginDialog(DialogContext, object) en el contexto del elemento primario. Sin embargo, si se llama al método DialogContext.replaceDialog(string, object), el cuadro de diálogo secundario lógico puede ser diferente del original. Si este método no se invalidado, el cuadro de diálogo llama automáticamente a su RepromptDialog(ITurnContext, DialogInstance) cuando el usuario responde.
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
findDialog(string)
Busca un cuadro de diálogo secundario que se agregó anteriormente al contenedor.
function findDialog(dialogId: string): Dialog | undefined
Parámetros
- dialogId
-
string
Identificador del cuadro de diálogo que se va a buscar.
Devoluciones
Dialog | undefined
Cuadro de diálogo si se encuentra; de lo contrario, null.
heredado dedialogContainer.findDialog
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
getVersion()
Cadena codificada que se usa para ayudar a detectar los cambios del bot en la reimplempleción.
function getVersion(): string
Devoluciones
string
Cadena única que solo debe cambiar cuando el cuadro de diálogo ha cambiado de una manera que debe reiniciar el diálogo.
Comentarios
Este valor predeterminado es devolver los cuadros de diálogo id, pero se puede invalidar para proporcionar lógica de detección de cambios más precisa. Cualquier cuadro de diálogo de la pila que tenga su cambio de versión producirá un evento versionChanged
. Si el bot no controla este evento, se producirá un error que dará lugar a la ejecución de la lógica del controlador de errores de bots.
Al devolver una cadena vacía, se deshabilitará el seguimiento de versiones para el componente en conjunto.
Heredado deDialog.getVersion
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 dedialogContainer.onDialogEvent