Compartilhar via


ComponentDialog class

Classe base para uma caixa de diálogo que contém outros diálogos filho.

Extends

Comentários

As caixas de diálogo de componente permitem que você divida a lógica do bot em componentes que podem ser adicionados como uma caixa de diálogo a outro ComponentDialog ou DialogSet. Os componentes também podem ser exportados como parte de um pacote de nós e usados em outros bots.

Para definir um novo componente, derive uma classe de ComponentDialog e adicione suas caixas de diálogo filho no construtor de classes:

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;

Em seguida, você pode adicionar novas instâncias do componente a outra DialogSet ou ComponentDialog:

const dialogs = new DialogSet(dialogState);
dialogs.add(new FillProfileDialog('fillProfile'));

Construtores

ComponentDialog(string)

Cria uma nova instância da classe da caixa de diálogo .

Propriedades

id

ID exclusiva da caixa de diálogo. Define a ID exclusiva da caixa de diálogo.

telemetryClient

Defina o cliente de telemetria e aplique-o a todas as caixas de diálogo filho. As caixas de diálogo futuras adicionadas ao componente também herdarão esse cliente. Obtenha o cliente de telemetria atual.

Propriedades herdadas

dialogs

O conjunto de diálogos de contêineres.

EndOfTurn

Obtém um resultado de fim de turno padrão.

Métodos

addDialog(Dialog)

Adiciona uma caixa de diálogo filho ou prompt aos componentes internos DialogSet.

beginDialog(DialogContext, O)

Chamado quando a caixa de diálogo é iniciada e enviada por push para a pilha de diálogo do pai. Por padrão, isso chama o método Dialog.BeginDialogAsync(DialogContext, object, CancellationToken) da caixa de diálogo inicial do componente, conforme definido por InitialDialogId. Substitua esse método em uma classe derivada para implementar a lógica de interrupção.

continueDialog(DialogContext)

Chamado quando a caixa de diálogo é continuada, em que é a caixa de diálogo ativa e o usuário responde com um novo Activity. Se esse método não for substituído, a caixa de diálogo terminará automaticamente quando o usuário responder.

createChildContext(DialogContext)

Cria o contexto da caixa de diálogo interna

endDialog(TurnContext, DialogInstance, DialogReason)

Chamado quando o da caixa de diálogo está terminando.

repromptDialog(TurnContext, DialogInstance)

Chamado quando a caixa de diálogo deve solicitar novamente entrada ao usuário.

resumeDialog(DialogContext, DialogReason, any)

Chamado quando uma caixa de diálogo filho na pilha de diálogo do pai concluiu essa curva, retornando o controle para esse componente de caixa de diálogo.

Métodos herdados

configure(Record<string, unknown>)

Método fluente para configurar o objeto.

findDialog(string)

Localiza uma caixa de diálogo filho que foi adicionada anteriormente ao contêiner.

getConverter(string)
getVersion()

Uma cadeia de caracteres codificada usada para ajudar na detecção de alterações de bot na re-implantação.

onDialogEvent(DialogContext, DialogEvent)

Chamado quando um evento foi gerado, usando DialogContext.emitEvent(), pela caixa de diálogo atual ou por uma caixa de diálogo iniciada pela caixa de diálogo atual.

Detalhes do construtor

ComponentDialog(string)

Cria uma nova instância da classe da caixa de diálogo .

new ComponentDialog(dialogId?: string)

Parâmetros

dialogId

string

Opcional. ID exclusiva da caixa de diálogo.

Detalhes da propriedade

id

ID exclusiva da caixa de diálogo. Define a ID exclusiva da caixa de diálogo.

string id

Valor da propriedade

string

A ID da caixa de diálogo.

Comentários

Isso será gerado automaticamente se não for especificado.

telemetryClient

Defina o cliente de telemetria e aplique-o a todas as caixas de diálogo filho. As caixas de diálogo futuras adicionadas ao componente também herdarão esse cliente. Obtenha o cliente de telemetria atual.

BotTelemetryClient telemetryClient

Valor da propriedade

BotTelemetryClient

O BotTelemetryClient a ser usado para registro em log.

Detalhes das propriedades herdadas

dialogs

O conjunto de diálogos de contêineres.

dialogs: DialogSet

Valor da propriedade

herdado dedialogContainer.dialogs

EndOfTurn

Obtém um resultado de fim de turno padrão.

static EndOfTurn: DialogTurnResult

Valor da propriedade

Comentários

Esse resultado indica que uma caixa de diálogo (ou uma etapa lógica em uma caixa de diálogo) concluiu o processamento para a curva atual, ainda está ativa e está aguardando mais entrada.

herdado doDialog.EndOfTurn

Detalhes do método

addDialog(Dialog)

Adiciona uma caixa de diálogo filho ou prompt aos componentes internos DialogSet.

function addDialog(dialog: Dialog): this

Parâmetros

dialog
Dialog

A caixa de diálogo filho ou solicitar a adição.

Retornos

this

O ComponentDialog após a conclusão da operação.

Comentários

O Dialog.id do primeiro filho adicionado ao componente será atribuído à propriedade initialDialogId.

beginDialog(DialogContext, O)

Chamado quando a caixa de diálogo é iniciada e enviada por push para a pilha de diálogo do pai. Por padrão, isso chama o método Dialog.BeginDialogAsync(DialogContext, object, CancellationToken) da caixa de diálogo inicial do componente, conforme definido por InitialDialogId. Substitua esse método em uma classe derivada para implementar a lógica de interrupção.

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

Parâmetros

outerDC
DialogContext

O DialogContext do pai para a virada atual da conversa.

options

O

Informações iniciais opcionais a serem passadas para a caixa de diálogo.

Retornos

Promise<DialogTurnResult>

Uma promessa que representa a operação assíncrona.

Comentários

Se a tarefa for bem-sucedida, o resultado indicará se a caixa de diálogo ainda estará ativa depois que a curva tiver sido processada pela caixa de diálogo.

continueDialog(DialogContext)

Chamado quando a caixa de diálogo é continuada, em que é a caixa de diálogo ativa e o usuário responde com um novo Activity. Se esse método não for substituído, a caixa de diálogo terminará automaticamente quando o usuário responder.

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

Parâmetros

outerDC
DialogContext

O DialogContext do pai para a virada atual da conversa.

Retornos

Promise<DialogTurnResult>

Uma promessa que representa a operação assíncrona.

Comentários

Se a tarefa for bem-sucedida, o resultado indicará se a caixa de diálogo ainda estará ativa depois que a curva tiver sido processada pela caixa de diálogo. O resultado também pode conter um valor retornado.

createChildContext(DialogContext)

Cria o contexto da caixa de diálogo interna

function createChildContext(outerDC: DialogContext): DialogContext

Parâmetros

outerDC
DialogContext

o contexto da caixa de diálogo externa

Retornos

O contexto da caixa de diálogo criado.

endDialog(TurnContext, DialogInstance, DialogReason)

Chamado quando o da caixa de diálogo está terminando.

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

Parâmetros

context

TurnContext

O objeto TurnContext para esta curva.

instance
DialogInstance

Informações de estado associadas à instância desse componente dialog na pilha de diálogo do pai.

reason
DialogReason

Motivo pelo qual a caixa de diálogo terminou.

Retornos

Promise<void>

Uma promessa que representa a operação assíncrona.

Comentários

Quando esse método é chamado do contexto da caixa de diálogo pai, o componente caixa de diálogo cancela todos os diálogos em sua pilha de diálogo interna antes de terminar.

repromptDialog(TurnContext, DialogInstance)

Chamado quando a caixa de diálogo deve solicitar novamente entrada ao usuário.

function repromptDialog(context: TurnContext, instance: DialogInstance): Promise<void>

Parâmetros

context

TurnContext

O objeto TurnContext para esta curva.

instance
DialogInstance

Informações de estado para esta caixa de diálogo.

Retornos

Promise<void>

Uma promessa que representa a operação assíncrona.

resumeDialog(DialogContext, DialogReason, any)

Chamado quando uma caixa de diálogo filho na pilha de diálogo do pai concluiu essa curva, retornando o controle para esse componente de caixa de diálogo.

function resumeDialog(outerDC: DialogContext, _reason: DialogReason, _result?: any): Promise<DialogTurnResult>

Parâmetros

outerDC
DialogContext

O dialogContext para a virada atual da conversa.

_reason
DialogReason

Motivo pelo qual a caixa de diálogo foi retomada.

_result

any

Opcional, o valor retornado da caixa de diálogo que foi chamada. O tipo do valor retornado depende da caixa de diálogo filho.

Retornos

Promise<DialogTurnResult>

Uma promessa que representa a operação assíncrona.

Comentários

Se a tarefa for bem-sucedida, o resultado indicará se essa caixa de diálogo ainda estará ativa depois que essa curva de diálogo tiver sido processada. Geralmente, a caixa de diálogo filho foi iniciada com uma chamada para beginDialog(DialogContext, object) no contexto do pai. No entanto, se o método DialogContext.replaceDialog(string, object) for chamado, a caixa de diálogo filho lógica poderá ser diferente da original. Se esse método não for substituído, a caixa de diálogo chamará automaticamente seu RepromptDialog(ITurnContext, DialogInstance) quando o usuário responder.

Detalhes do método herdado

configure(Record<string, unknown>)

Método fluente para configurar o objeto.

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

Parâmetros

config

Record<string, unknown>

Configurações a serem aplicadas.

Retornos

this

O configurável após a conclusão da operação.

Herdado deConfigurble.configure

findDialog(string)

Localiza uma caixa de diálogo filho que foi adicionada anteriormente ao contêiner.

function findDialog(dialogId: string): Dialog | undefined

Parâmetros

dialogId

string

ID da caixa de diálogo a ser pesquisada.

Retornos

Dialog | undefined

A caixa de diálogo, se encontrada; caso contrário, nulo.

herdado dedialogContainer.findDialog

getConverter(string)

function getConverter(_property: string): Converter | ConverterFactory

Parâmetros

_property

string

A chave da configuração do seletor condicional.

Retornos

O conversor para a configuração do seletor.

herdado deconfigurable.getConverter

getVersion()

Uma cadeia de caracteres codificada usada para ajudar na detecção de alterações de bot na re-implantação.

function getVersion(): string

Retornos

string

Cadeia de caracteres exclusiva que só deve ser alterada quando a caixa de diálogo foi alterada de uma maneira que deve reiniciar a caixa de diálogo.

Comentários

Esse padrão é retornar as caixas de diálogo id mas pode ser substituído para fornecer uma lógica de detecção de alterações mais precisa. Qualquer caixa de diálogo na pilha que tenha sua alteração de versão resultará em um evento versionChanged será gerado. Se esse evento não for tratado pelo bot, um erro será gerado, resultando na execução da lógica do manipulador de erros de bots.

Retornar uma cadeia de caracteres vazia desabilitará o acompanhamento de versão para o componente.

herdado dedialog.getVersion

onDialogEvent(DialogContext, DialogEvent)

Chamado quando um evento foi gerado, usando DialogContext.emitEvent(), pela caixa de diálogo atual ou por uma caixa de diálogo iniciada pela caixa de diálogo atual.

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

Parâmetros

dc
DialogContext

O contexto da caixa de diálogo para a virada atual da conversa.

e
DialogEvent

O evento que está sendo gerado.

Retornos

Promise<boolean>

True se o evento for tratado pela caixa de diálogo atual e o borbulhamento deve parar.

Herdado deDialogContainer.onDialogEvent