ComponentDialog class
Classe di base per una finestra di dialogo che contiene altri dialoghi figlio.
- Extends
Commenti
Le finestre di dialogo dei componenti consentono di suddividere la logica del bot in componenti che possono essere aggiunti come finestra di dialogo a un altro ComponentDialog
o DialogSet
. I componenti possono anche essere esportati come parte di un pacchetto del nodo e usati all'interno di altri bot.
Per definire un nuovo componente derivare una classe da ComponentDialog e aggiungere i dialoghi figlio all'interno del costruttore delle classi:
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;
È quindi possibile aggiungere nuove istanze del componente a un altro DialogSet
o ComponentDialog
:
const dialogs = new DialogSet(dialogState);
dialogs.add(new FillProfileDialog('fillProfile'));
Costruttori
Component |
Crea una nuova istanza della classe |
Proprietà
id | ID univoco del dialogo. Imposta l'ID univoco della finestra di dialogo. |
telemetry |
Impostare il client di telemetria e applicarlo anche a tutti i dialoghi figlio. Anche i dialoghi futuri aggiunti al componente erediteranno questo client. Ottenere il client di telemetria corrente. |
Proprietà ereditate
dialogs | Set di dialoghi contenitori. |
End |
Ottiene un risultato di fine turno predefinito. |
Metodi
add |
Aggiunge un finestra di dialogo |
begin |
Viene chiamato quando il dialogo viene avviato e inserito nello stack di dialoghi dell'elemento padre. Per impostazione predefinita, chiama il metodo Dialog.BeginDialogAsync(DialogContext, object, CancellationToken) del dialogo iniziale del dialogo del componente, come definito da InitialDialogId. Eseguire l'override di questo metodo in una classe derivata per implementare la logica di interrupt. |
continue |
Chiamato quando la finestra di dialogo viene continuata, dove è la finestra di dialogo attiva e l'utente risponde con una nuova Activity. Se questo metodo non è sottoposto a override, la finestra di dialogo termina automaticamente quando l'utente risponde. |
create |
Crea il contesto del dialogo interno |
end |
Viene chiamato quando termina il finestra di dialogo |
reprompt |
Chiamato quando la finestra di dialogo deve richiedere di nuovo l'input all'utente. |
resume |
Chiamato quando un dialogo figlio nello stack di dialoghi padre ha completato questo turno, restituendo il controllo a questo componente della finestra di dialogo. |
Metodi ereditati
configure(Record<string, unknown>) | Metodo Fluent per la configurazione dell'oggetto. |
find |
Trova una finestra di dialogo figlio aggiunta in precedenza al contenitore. |
get |
|
get |
Stringa codificata usata per facilitare il rilevamento delle modifiche del bot nella ri-distribuzione. |
on |
Chiamato quando è stato generato un evento, utilizzando |
Dettagli costruttore
ComponentDialog(string)
Crea una nuova istanza della classe
new ComponentDialog(dialogId?: string)
Parametri
- dialogId
-
string
Opzionale. ID univoco del dialogo.
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
Impostare il client di telemetria e applicarlo anche a tutti i dialoghi figlio. Anche i dialoghi futuri aggiunti al componente erediteranno questo client. Ottenere il client di telemetria corrente.
BotTelemetryClient telemetryClient
Valore della proprietà
BotTelemetryClient
BotTelemetryClient da usare per la registrazione.
Dettagli proprietà ereditate
dialogs
Set di dialoghi contenitori.
dialogs: DialogSet
Valore della proprietà
ereditato daDialogContainer.dialogs
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
addDialog(Dialog)
Aggiunge un finestra di dialogo
function addDialog(dialog: Dialog): this
Parametri
Restituisce
this
Il ComponentDialog al termine dell'operazione.
Commenti
Il Dialog.id del primo elemento figlio aggiunto al componente verrà assegnato alla proprietà initialDialogId.
beginDialog(DialogContext, O)
Viene chiamato quando il dialogo viene avviato e inserito nello stack di dialoghi dell'elemento padre. Per impostazione predefinita, chiama il metodo Dialog.BeginDialogAsync(DialogContext, object, CancellationToken) del dialogo iniziale del dialogo del componente, come definito da InitialDialogId. Eseguire l'override di questo metodo in una classe derivata per implementare la logica di interrupt.
function beginDialog(outerDC: DialogContext, options?: O): Promise<DialogTurnResult>
Parametri
- outerDC
- DialogContext
Il padre
- options
-
O
Informazioni iniziali facoltative da passare alla finestra di dialogo.
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.
continueDialog(DialogContext)
Chiamato quando la finestra di dialogo viene continuata, dove è la finestra di dialogo attiva e l'utente risponde con una nuova Activity. Se questo metodo non è sottoposto a override, la finestra di dialogo termina automaticamente quando l'utente risponde.
function continueDialog(outerDC: DialogContext): Promise<DialogTurnResult>
Parametri
- outerDC
- DialogContext
Il padre
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.
createChildContext(DialogContext)
Crea il contesto del dialogo interno
function createChildContext(outerDC: DialogContext): DialogContext
Parametri
- outerDC
- DialogContext
contesto del dialogo esterno
Restituisce
Contesto del dialogo creato.
endDialog(TurnContext, DialogInstance, DialogReason)
Viene chiamato quando termina il finestra di dialogo
function endDialog(context: TurnContext, instance: DialogInstance, reason: DialogReason): Promise<void>
Parametri
- context
-
TurnContext
Oggetto TurnContext
- instance
- DialogInstance
Informazioni sullo stato associate all'istanza di questo componente Dialog nello stack di dialoghi padre.
- reason
- DialogReason
Restituisce
Promise<void>
Promessa che rappresenta l'operazione asincrona.
Commenti
Quando questo metodo viene chiamato dal contesto del dialogo padre, il componente Dialog annulla tutti i dialoghi nello stack di dialoghi interno prima di terminare.
repromptDialog(TurnContext, DialogInstance)
Chiamato quando la finestra di dialogo deve richiedere di nuovo l'input all'utente.
function repromptDialog(context: TurnContext, instance: DialogInstance): Promise<void>
Parametri
- context
-
TurnContext
Oggetto TurnContext
- instance
- DialogInstance
Informazioni sullo stato per questa finestra di dialogo.
Restituisce
Promise<void>
Promessa che rappresenta l'operazione asincrona.
resumeDialog(DialogContext, DialogReason, any)
Chiamato quando un dialogo figlio nello stack di dialoghi padre ha completato questo turno, restituendo il controllo a questo componente della finestra di dialogo.
function resumeDialog(outerDC: DialogContext, _reason: DialogReason, _result?: any): Promise<DialogTurnResult>
Parametri
- outerDC
- DialogContext
Il DialogContext per il turno di conversazione corrente.
- _reason
- DialogReason
Motivo per cui il dialogo è stato 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.
Commenti
Se l'attività ha esito positivo, il risultato indica se questa finestra di dialogo è ancora attiva dopo l'elaborazione di questo turno di dialogo. In genere, il dialogo figlio è stato avviato con una chiamata a beginDialog(DialogContext, object) nel contesto dell'elemento padre. Tuttavia, se viene chiamato il metodo DialogContext.replaceDialog(string, object), il dialogo figlio logico può essere diverso dall'originale. Se questo metodo non è sottoposto a override, la finestra di dialogo chiama automaticamente repromptDialog(ITurnContext, DialogInstance) quando l'utente risponde.
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
findDialog(string)
Trova una finestra di dialogo figlio aggiunta in precedenza al contenitore.
function findDialog(dialogId: string): Dialog | undefined
Parametri
- dialogId
-
string
ID della finestra di dialogo da cercare.
Restituisce
Dialog | undefined
Finestra di dialogo se trovata; in caso contrario null.
ereditato daDialogContainer.findDialog
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
getVersion()
Stringa codificata usata per facilitare il rilevamento delle modifiche del bot nella ri-distribuzione.
function getVersion(): string
Restituisce
string
Stringa univoca che deve cambiare solo quando il dialogo è stato modificato in modo da riavviare la finestra di dialogo.
Commenti
Per impostazione predefinita, la restituzione dei dialoghi id ma può essere sottoposta a override per fornire una logica di rilevamento delle modifiche più precisa. Qualsiasi finestra di dialogo nello stack con la modifica della versione genererà un evento versionChanged
verrà generato. Se questo evento non viene gestito dal bot, verrà generato un errore che causa l'esecuzione della logica del gestore errori dei bot.
La restituzione di una stringa vuota disabilita il rilevamento della versione per il componente insieme.
ereditato daDialog.getVersion
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 daDialogContainer.onDialogEvent