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
Component |
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. |
telemetry |
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. |
End |
Obtém um resultado de fim de turno padrão. |
Métodos
add |
Adiciona uma caixa de diálogo filho ou prompt aos componentes internos DialogSet. |
begin |
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. |
continue |
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. |
create |
Cria o contexto da caixa de diálogo interna |
end |
Chamado quando o da caixa de diálogo |
reprompt |
Chamado quando a caixa de diálogo deve solicitar novamente entrada ao usuário. |
resume |
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. |
find |
Localiza uma caixa de diálogo filho que foi adicionada anteriormente ao contêiner. |
get |
|
get |
Uma cadeia de caracteres codificada usada para ajudar na detecção de alterações de bot na re-implantação. |
on |
Chamado quando um evento foi gerado, usando |
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
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.
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
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
- 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
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
function endDialog(context: TurnContext, instance: DialogInstance, reason: DialogReason): Promise<void>
Parâmetros
- context
-
TurnContext
O objeto TurnContext
- instance
- DialogInstance
Informações de estado associadas à instância desse componente dialog na pilha de diálogo do pai.
- reason
- DialogReason
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
- 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
- _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
O contexto da caixa de diálogo para a virada atual da conversa.
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