WaterfallDialog class
Una cascata è un dialogo ottimizzato per richiedere a un utente una serie di domande.
- Extends
-
Dialog<O>
Commenti
Le cascate accettano uno stack di funzioni che verranno eseguite in sequenza. Ogni passaggio a cascata può porre una domanda all'utente e la risposta dell'utente verrà passata al passaggio successivo nella cascata tramite step.result
. Un oggetto step.value
speciale può essere usato per rendere persistenti i valori tra i passaggi:
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;
Costruttori
Waterfall |
Crea un nuovo dialogo a cascata contenente la matrice specificata di passaggi. |
Proprietà
id | ID univoco del dialogo. Imposta l'ID univoco della finestra di dialogo. |
telemetry |
Ottiene il client di telemetria per questa finestra di dialogo. Imposta il client di telemetria per questa finestra di dialogo. |
Proprietà ereditate
End |
Ottiene un risultato di fine turno predefinito. |
Metodi
add |
Aggiunge un nuovo passaggio alla cascata. |
begin |
Chiamato quando il WaterfallDialog viene avviato e inserito nello stack di dialoghi. |
continue |
Chiamato quando il |
end |
Chiamato quando termina il dialogo. |
get |
Ottiene la versione della finestra di dialogo, composta dall'ID e dal numero di passaggi. |
resume |
Chiamato quando un elemento figlio WaterfallDialog completato il suo turno, restituendo il controllo a questa finestra di dialogo. |
Metodi ereditati
configure(Record<string, unknown>) | Metodo Fluent per la configurazione dell'oggetto. |
get |
|
on |
Chiamato quando è stato generato un evento, utilizzando |
reprompt |
Quando ne viene eseguito l'override in una classe derivata, reinserito l'utente per l'input. |
Dettagli costruttore
WaterfallDialog(string, WaterfallStep<O>[])
Crea un nuovo dialogo a cascata contenente la matrice specificata di passaggi.
new WaterfallDialog(dialogId: string, steps?: WaterfallStep<O>[])
Parametri
- dialogId
-
string
ID univoco della finestra di dialogo all'interno del componente o impostarne l'aggiunta.
- steps
-
WaterfallStep<O>[]
(Facoltativo) matrice di funzioni a cascata asincrone.
Commenti
Per informazioni dettagliate sulla creazione di una funzione di passaggio valida, vedere la funzione addStep().
Dettagli proprietà
id
ID univoco del dialogo. Imposta l'ID univoco della finestra di dialogo.
string id
Valore della proprietà
string
ID della finestra di dialogo.
Commenti
Questo verrà generato automaticamente se non specificato.
telemetryClient
Ottiene il client di telemetria per questa finestra di dialogo. Imposta il client di telemetria per questa finestra di dialogo.
BotTelemetryClient telemetryClient
Valore della proprietà
BotTelemetryClient
BotTelemetryClient da usare per la registrazione.
Dettagli proprietà ereditate
EndOfTurn
Ottiene un risultato di fine turno predefinito.
static EndOfTurn: DialogTurnResult
Valore della proprietà
Commenti
Questo risultato indica che un dialogo (o un passaggio logico all'interno di una finestra di dialogo) ha completato l'elaborazione per il turno corrente, è ancora attiva ed è in attesa di più input.
ereditato daDialog.EndOfTurn
Dettagli metodo
addStep(WaterfallStep<O>)
Aggiunge un nuovo passaggio alla cascata.
function addStep(step: WaterfallStep<O>): this
Parametri
- step
Funzione di passaggio asincrona da chiamare.
Restituisce
this
Finestra di dialogo a cascata per le chiamate Fluent a addStep()
.
Commenti
Tutte le funzioni di passaggio devono essere asincrone e restituire un DialogTurnResult
. Il WaterfallStepContext
passato alla funzione deriva da DialogContext
e contiene numerosi metodi di manipolazione dello stack che restituiscono un DialogTurnResult
in modo da poter in genere restituire semplicemente il risultato dal metodo DialogContext chiamato.
La funzione step stessa può essere una chiusura asincrona:
const helloDialog = new WaterfallDialog('hello');
helloDialog.addStep(async (step) => {
await step.context.sendActivity(`Hello World!`);
return await step.endDialog();
});
Funzione asincrona denominata:
async function helloWorldStep(step) {
await step.context.sendActivity(`Hello World!`);
return await step.endDialog();
}
helloDialog.addStep(helloWorldStep);
In alternativa, un metodo di classe associato al puntatore this
:
helloDialog.addStep(this.helloWorldStep.bind(this));
beginDialog(DialogContext, O)
Chiamato quando il WaterfallDialog viene avviato e inserito nello stack di dialoghi.
function beginDialog(dc: DialogContext, options?: O): Promise<DialogTurnResult>
Parametri
Il DialogContext per il turno di conversazione corrente.
Restituisce
Promise<DialogTurnResult>
Promessa che rappresenta l'operazione asincrona.
Commenti
Se l'attività ha esito positivo, il risultato indica se il
continueDialog(DialogContext)
Chiamato quando il
function continueDialog(dc: DialogContext): Promise<DialogTurnResult>
Parametri
Il DialogContext per il turno di conversazione corrente.
Restituisce
Promise<DialogTurnResult>
Promessa che rappresenta l'operazione asincrona.
Commenti
Se l'attività ha esito positivo, il risultato indica se il dialogo è ancora attivo dopo che il turno è stato elaborato dalla finestra di dialogo. Il risultato può contenere anche un valore restituito.
endDialog(TurnContext, DialogInstance, DialogReason)
Chiamato quando termina il dialogo.
function endDialog(context: TurnContext, instance: DialogInstance, reason: DialogReason): Promise<void>
Parametri
- context
-
TurnContext
Contesto per il turno di conversazione corrente.
- instance
- DialogInstance
Istanza del dialogo corrente.
- reason
- DialogReason
Motivo per cui la finestra di dialogo sta terminando.
Restituisce
Promise<void>
getVersion()
Ottiene la versione della finestra di dialogo, composta dall'ID e dal numero di passaggi.
function getVersion(): string
Restituisce
string
Versione della finestra di dialogo, composta dall'ID e dal numero di passaggi.
resumeDialog(DialogContext, DialogReason, any)
Chiamato quando un elemento figlio WaterfallDialog completato il suo turno, restituendo il controllo a questa finestra di dialogo.
function resumeDialog(dc: DialogContext, reason: DialogReason, result?: any): Promise<DialogTurnResult>
Parametri
DialogContext per il turno corrente della conversazione.
- reason
- DialogReason
(xref:botbuilder-dialogs. DialogReason) perché il dialogo è ripreso.
- result
-
any
Valore facoltativo restituito dalla finestra di dialogo chiamata. Il tipo del valore restituito dipende dal dialogo figlio.
Restituisce
Promise<DialogTurnResult>
Promessa che rappresenta l'operazione asincrona.
Dettagli dei metodi ereditati
configure(Record<string, unknown>)
Metodo Fluent per la configurazione dell'oggetto.
function configure(config: Record<string, unknown>): this
Parametri
- config
-
Record<string, unknown>
Impostazioni di configurazione da applicare.
Restituisce
this
Configurabile al termine dell'operazione.
Ereditato daConfigurable.configure
getConverter(string)
function getConverter(_property: string): Converter | ConverterFactory
Parametri
- _property
-
string
Chiave della configurazione del selettore condizionale.
Restituisce
Convertitore per la configurazione del selettore.
ereditato daConfigurable.getConverter
onDialogEvent(DialogContext, DialogEvent)
Chiamato quando è stato generato un evento, utilizzando DialogContext.emitEvent()
, dalla finestra di dialogo corrente o da una finestra di dialogo avviata dalla finestra di dialogo corrente.
function onDialogEvent(dc: DialogContext, e: DialogEvent): Promise<boolean>
Parametri
Contesto del dialogo per il turno corrente della conversazione.
Evento generato.
Restituisce
Promise<boolean>
True se l'evento viene gestito dalla finestra di dialogo corrente e il bubbling deve essere arrestato.
ereditato daDialog.onDialogEvent
repromptDialog(TurnContext, DialogInstance)
Quando ne viene eseguito l'override in una classe derivata, reinserito l'utente per l'input.
function repromptDialog(_context: TurnContext, _instance: DialogInstance): Promise<void>
Parametri
- _context
-
TurnContext
Oggetto di contesto per il turno.
- _instance
- DialogInstance
Informazioni sullo stato corrente per questa finestra di dialogo.
Restituisce
Promise<void>
Commenti
I dialoghi derivati che supportano la convalida e la logica di ripetizione della richiesta devono eseguire l'override di questo metodo. Per impostazione predefinita, questo metodo non ha alcun effetto.
Il DialogContext chiama questo metodo quando la finestra di dialogo corrente deve richiedere nuovamente l'input dell'utente. Questo metodo viene implementato per i dialoghi di richiesta.
Vedere anche
ereditato daDialog.repromptDialog