Compartilhar via


WaterfallDialog class

Uma cascata é uma caixa de diálogo otimizada para solicitar a um usuário uma série de perguntas.

Extends

Dialog<O>

Comentários

As cascatas aceitam uma pilha de funções que serão executadas em sequência. Cada etapa em cascata pode fazer uma pergunta ao usuário e a resposta do usuário será passada para a próxima etapa na cascata por meio de step.result. Um objeto step.value especial pode ser usado para persistir valores entre as etapas:

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;

Construtores

WaterfallDialog(string, WaterfallStep<O>[])

Cria uma nova caixa de diálogo em cascata que contém a matriz de etapas fornecida.

Propriedades

id

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

telemetryClient

Obtém o cliente de telemetria para esta caixa de diálogo. Define o cliente de telemetria para essa caixa de diálogo.

Propriedades herdadas

EndOfTurn

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

Métodos

addStep(WaterfallStep<O>)

Adiciona uma nova etapa à cascata.

beginDialog(DialogContext, O)

Chamado quando a WaterfallDialog é iniciada e enviada por push para a pilha de diálogo.

continueDialog(DialogContext)

Chamado quando o WaterfallDialog é continuado, em que é a caixa de diálogo ativa e o usuário responde com um novode Atividade .

endDialog(TurnContext, DialogInstance, DialogReason)

Chamado quando a caixa de diálogo está terminando.

getVersion()

Obtém a versão da caixa de diálogo, composta pela ID e número de etapas.

resumeDialog(DialogContext, DialogReason, any)

Chamado quando um filho WaterfallDialog completou sua vez, retornando o controle para essa caixa de diálogo.

Métodos herdados

configure(Record<string, unknown>)

Método fluente para configurar o objeto.

getConverter(string)
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.

repromptDialog(TurnContext, DialogInstance)

Quando substituído em uma classe derivada, reprompta o usuário para entrada.

Detalhes do construtor

WaterfallDialog(string, WaterfallStep<O>[])

Cria uma nova caixa de diálogo em cascata que contém a matriz de etapas fornecida.

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

Parâmetros

dialogId

string

ID exclusiva da caixa de diálogo dentro do componente ou defina sua adição.

steps

WaterfallStep<O>[]

(Opcional) matriz de funções de etapa de cascata assíncronas.

Comentários

Consulte a função addStep() para obter detalhes sobre como criar uma função de etapa válida.

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

Obtém o cliente de telemetria para esta caixa de diálogo. Define o cliente de telemetria para essa caixa de diálogo.

BotTelemetryClient telemetryClient

Valor da propriedade

BotTelemetryClient

O BotTelemetryClient a ser usado para registro em log.

Detalhes das propriedades herdadas

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

addStep(WaterfallStep<O>)

Adiciona uma nova etapa à cascata.

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

Parâmetros

step

WaterfallStep<O>

Função de etapa assíncrona a ser chamada.

Retornos

this

Caixa de diálogo cascata para chamadas fluentes para addStep().

Comentários

Todas as funções de etapa devem ser assíncronas e retornar um DialogTurnResult. O WaterfallStepContext passado para sua função deriva de DialogContext e contém vários métodos de manipulação de pilha que retornam um DialogTurnResult para que você possa retornar o resultado do método DialogContext que você chama.

A função de etapa em si pode ser um fechamento assíncrono:

const helloDialog = new WaterfallDialog('hello');

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

Uma função assíncrona nomeada:

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

helloDialog.addStep(helloWorldStep);

Ou um método de classe que foi associado ao seu ponteiro this:

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

beginDialog(DialogContext, O)

Chamado quando a WaterfallDialog é iniciada e enviada por push para a pilha de diálogo.

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

Parâmetros

dc
DialogContext

O dialogContext para a virada atual da conversa.

options

O

Informações opcionais e iniciais 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 for processada pela caixa de diálogo.

continueDialog(DialogContext)

Chamado quando o WaterfallDialog é continuado, em que é a caixa de diálogo ativa e o usuário responde com um novode Atividade .

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

Parâmetros

dc
DialogContext

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

endDialog(TurnContext, DialogInstance, DialogReason)

Chamado quando a caixa de diálogo está terminando.

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

Parâmetros

context

TurnContext

Contexto para a virada atual da conversa.

instance
DialogInstance

A instância da caixa de diálogo atual.

reason
DialogReason

O motivo pelo qual a caixa de diálogo está terminando.

Retornos

Promise<void>

getVersion()

Obtém a versão da caixa de diálogo, composta pela ID e número de etapas.

function getVersion(): string

Retornos

string

Versão da caixa de diálogo, composta pela ID e número de etapas.

resumeDialog(DialogContext, DialogReason, any)

Chamado quando um filho WaterfallDialog completou sua vez, retornando o controle para essa caixa de diálogo.

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

Parâmetros

dc
DialogContext

O DialogContext para a virada atual da conversa.

reason
DialogReason

(xref:botbuilder-dialogs. DialogReason) por que 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.

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

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

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 da caixa de diálogo.onDialogEvent

repromptDialog(TurnContext, DialogInstance)

Quando substituído em uma classe derivada, reprompta o usuário para entrada.

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

Parâmetros

_context

TurnContext

O objeto de contexto para a curva.

_instance
DialogInstance

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

Retornos

Promise<void>

Comentários

Caixas de diálogo derivadas que dão suporte à validação e à lógica de nova solicitação devem substituir esse método. Por padrão, esse método não tem efeito.

O DialogContext chama esse método quando a caixa de diálogo atual deve solicitar novamente a entrada do usuário. Esse método é implementado para caixas de diálogo de prompt.

Consulte também

Herdado deDialog.repromptDialog