Compartir a través de


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

ComponentDialog(string)

Crea una nueva instancia de la clase dialog Dialog.

Propiedades

id

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

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.

Propiedades heredadas

dialogs

El conjunto de diálogos contenedores.

EndOfTurn

Obtiene un resultado predeterminado de fin de turno.

Métodos

addDialog(Dialog)

Agrega un de diálogo de secundario o pregunta a los componentes internos DialogSet.

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.

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.

createChildContext(DialogContext)

Crea el contexto del cuadro de diálogo interno

endDialog(TurnContext, DialogInstance, DialogReason)

Se llama cuando finaliza el cuadro de diálogo de .

repromptDialog(TurnContext, DialogInstance)

Se llama cuando el cuadro de diálogo debe volver a solicitar al usuario la entrada.

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.

Métodos heredados

configure(Record<string, unknown>)

Método Fluent para configurar el objeto.

findDialog(string)

Busca un cuadro de diálogo secundario que se agregó anteriormente al contenedor.

getConverter(string)
getVersion()

Cadena codificada que se usa para ayudar a detectar los cambios del bot en la reimplempleción.

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.

Detalles del constructor

ComponentDialog(string)

Crea una nueva instancia de la clase dialog 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

BotTelemetryClient que se va a usar para el registro.

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 secundario o pregunta a los componentes internos DialogSet.

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 DialogContext para el turno actual de conversación.

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

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

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 dedialogContainer.onDialogEvent