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

ComponentDialog(string)

Crea una nuova istanza della classe Dialog.

Proprietà

id

ID univoco del dialogo. Imposta l'ID univoco della finestra di dialogo.

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.

Proprietà ereditate

dialogs

Set di dialoghi contenitori.

EndOfTurn

Ottiene un risultato di fine turno predefinito.

Metodi

addDialog(Dialog)

Aggiunge un finestra di dialogo figlio o una richiesta ai componenti interni DialogSet.

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.

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.

createChildContext(DialogContext)

Crea il contesto del dialogo interno

endDialog(TurnContext, DialogInstance, DialogReason)

Viene chiamato quando termina il finestra di dialogo .

repromptDialog(TurnContext, DialogInstance)

Chiamato quando la finestra di dialogo deve richiedere di nuovo l'input all'utente.

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.

Metodi ereditati

configure(Record<string, unknown>)

Metodo Fluent per la configurazione dell'oggetto.

findDialog(string)

Trova una finestra di dialogo figlio aggiunta in precedenza al contenitore.

getConverter(string)
getVersion()

Stringa codificata usata per facilitare il rilevamento delle modifiche del bot nella ri-distribuzione.

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.

Dettagli costruttore

ComponentDialog(string)

Crea una nuova istanza della classe Dialog.

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 figlio o una richiesta ai componenti interni DialogSet.

function addDialog(dialog: Dialog): this

Parametri

dialog
Dialog

Finestra di dialogo figlio o richiesta di aggiunta.

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 DialogContext per il turno di conversazione corrente.

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

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 per questo turno.

instance
DialogInstance

Informazioni sullo stato associate all'istanza di questo componente Dialog nello stack di dialoghi padre.

reason
DialogReason

Motivo per cui la finestra di dialogo terminata.

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 per questo turno.

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

dc
DialogContext

Contesto del dialogo per il turno corrente della conversazione.

e
DialogEvent

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