Partager via


WaterfallDialog class

Une cascade est un dialogue optimisé pour inviter un utilisateur avec une série de questions.

Extends

Dialog<O>

Remarques

Les cascades acceptent une pile de fonctions qui seront exécutées en séquence. Chaque étape en cascade peut poser une question à l’utilisateur et la réponse de l’utilisateur sera passée à l’étape suivante de la cascade via step.result. Un objet step.value spécial peut être utilisé pour conserver des valeurs entre les étapes :

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;

Constructeurs

WaterfallDialog(string, WaterfallStep<O>[])

Crée un dialogue en cascade contenant le tableau d’étapes donné.

Propriétés

id

ID unique de la boîte de dialogue. Définit l’ID unique de la boîte de dialogue.

telemetryClient

Obtient le client de télémétrie pour cette boîte de dialogue. Définit le client de télémétrie pour cette boîte de dialogue.

Propriétés héritées

EndOfTurn

Obtient un résultat de fin de tour par défaut.

Méthodes

addStep(WaterfallStep<O>)

Ajoute une nouvelle étape à la cascade.

beginDialog(DialogContext, O)

Appelé lorsque le CascadeDialog est démarré et envoyé (push) sur la pile de dialogues.

continueDialog(DialogContext)

Appelé lorsque le CascadeDialog est continu, où il s’agit de la boîte de dialogue active et l’utilisateur répond avec une nouvelle Activité.

endDialog(TurnContext, DialogInstance, DialogReason)

Appelé lorsque la boîte de dialogue se termine.

getVersion()

Obtient la version de la boîte de dialogue, composée de l’ID et du nombre d’étapes.

resumeDialog(DialogContext, DialogReason, any)

Appelé lorsqu’un enfant WaterfallDialog terminé son tour, retournant le contrôle à cette boîte de dialogue.

Méthodes héritées

configure(Record<string, unknown>)

Méthode Fluent pour la configuration de l’objet.

getConverter(string)
onDialogEvent(DialogContext, DialogEvent)

Appelé lorsqu’un événement a été déclenché, à l’aide de DialogContext.emitEvent(), par la boîte de dialogue active ou par une boîte de dialogue que la boîte de dialogue active a démarré.

repromptDialog(TurnContext, DialogInstance)

En cas de substitution dans une classe dérivée, repromène l’utilisateur pour l’entrée.

Détails du constructeur

WaterfallDialog(string, WaterfallStep<O>[])

Crée un dialogue en cascade contenant le tableau d’étapes donné.

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

Paramètres

dialogId

string

ID unique de la boîte de dialogue dans le composant ou définissez son ajout.

steps

WaterfallStep<O>[]

(Facultatif) tableau de fonctions d’étape en cascade asynchrones.

Remarques

Consultez la fonction addStep() pour plus d’informations sur la création d’une fonction d’étape valide.

Détails de la propriété

id

ID unique de la boîte de dialogue. Définit l’ID unique de la boîte de dialogue.

string id

Valeur de propriété

string

ID de la boîte de dialogue.

Remarques

Cette opération est générée automatiquement si elle n’est pas spécifiée.

telemetryClient

Obtient le client de télémétrie pour cette boîte de dialogue. Définit le client de télémétrie pour cette boîte de dialogue.

BotTelemetryClient telemetryClient

Valeur de propriété

BotTelemetryClient

Le BotTelemetryClient à utiliser pour la journalisation.

Détails de la propriété héritée

EndOfTurn

Obtient un résultat de fin de tour par défaut.

static EndOfTurn: DialogTurnResult

Valeur de propriété

Remarques

Ce résultat indique qu’un dialogue (ou une étape logique dans un dialogue) a terminé le traitement du tour actuel, est toujours actif et attend plus d’entrée.

héritée dedialog.EndOfTurn

Détails de la méthode

addStep(WaterfallStep<O>)

Ajoute une nouvelle étape à la cascade.

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

Paramètres

step

WaterfallStep<O>

Fonction d’étape asynchrone à appeler.

Retours

this

Dialogue en cascade pour les appels Fluent à addStep().

Remarques

Toutes les fonctions d’étape doivent être asynchrones et retourner une DialogTurnResult. Le WaterfallStepContext passé dans votre fonction dérive de DialogContext et contient de nombreuses méthodes de manipulation de pile qui retournent un DialogTurnResult afin de pouvoir simplement renvoyer le résultat de la méthode DialogContext que vous appelez.

La fonction d’étape elle-même peut être une fermeture asynchrone :

const helloDialog = new WaterfallDialog('hello');

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

Fonction asynchrone nommée :

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

helloDialog.addStep(helloWorldStep);

Ou une méthode de classe liée à son pointeur this :

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

beginDialog(DialogContext, O)

Appelé lorsque le CascadeDialog est démarré et envoyé (push) sur la pile de dialogues.

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

Paramètres

dc
DialogContext

DialogContext pour le tour de conversation actuel.

options

O

Informations initiales facultatives à transmettre à la boîte de dialogue .

Retours

Promise<DialogTurnResult>

Promesse représentant l’opération asynchrone.

Remarques

Si la tâche réussit, le résultat indique si la boîte de dialogue est toujours active une fois que le tour a été traité par la boîte de dialogue.

continueDialog(DialogContext)

Appelé lorsque le CascadeDialog est continu, où il s’agit de la boîte de dialogue active et l’utilisateur répond avec une nouvelle Activité.

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

Paramètres

dc
DialogContext

DialogContext pour le tour de conversation actuel.

Retours

Promise<DialogTurnResult>

Promesse représentant l’opération asynchrone.

Remarques

Si la tâche réussit, le résultat indique si la boîte de dialogue est toujours active une fois le tour traité par la boîte de dialogue. Le résultat peut également contenir une valeur de retour.

endDialog(TurnContext, DialogInstance, DialogReason)

Appelé lorsque la boîte de dialogue se termine.

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

Paramètres

context

TurnContext

Contexte pour le tour de conversation actuel.

instance
DialogInstance

Instance de la boîte de dialogue active.

reason
DialogReason

Raison pour laquelle la boîte de dialogue se termine.

Retours

Promise<void>

getVersion()

Obtient la version de la boîte de dialogue, composée de l’ID et du nombre d’étapes.

function getVersion(): string

Retours

string

Version de boîte de dialogue, composée de l’ID et du nombre d’étapes.

resumeDialog(DialogContext, DialogReason, any)

Appelé lorsqu’un enfant WaterfallDialog terminé son tour, retournant le contrôle à cette boîte de dialogue.

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

Paramètres

dc
DialogContext

DialogContext pour le tour actuel de la conversation.

reason
DialogReason

(xref :botbuilder-dialogs. DialogReason) pourquoi le dialogue a repris.

result

any

Facultatif, valeur retournée à partir de la boîte de dialogue appelée. Le type de la valeur retournée dépend de la boîte de dialogue enfant.

Retours

Promise<DialogTurnResult>

Promesse représentant l’opération asynchrone.

Détails de la méthode héritée

configure(Record<string, unknown>)

Méthode Fluent pour la configuration de l’objet.

function configure(config: Record<string, unknown>): this

Paramètres

config

Record<string, unknown>

Paramètres de configuration à appliquer.

Retours

this

configurable une fois l’opération terminée.

héritée deConfigurable.configure

getConverter(string)

function getConverter(_property: string): Converter | ConverterFactory

Paramètres

_property

string

Clé de la configuration du sélecteur conditionnel.

Retours

Convertisseur de la configuration du sélecteur.

héritée deconfigurable.getConverter

onDialogEvent(DialogContext, DialogEvent)

Appelé lorsqu’un événement a été déclenché, à l’aide de DialogContext.emitEvent(), par la boîte de dialogue active ou par une boîte de dialogue que la boîte de dialogue active a démarré.

function onDialogEvent(dc: DialogContext, e: DialogEvent): Promise<boolean>

Paramètres

dc
DialogContext

Contexte de boîte de dialogue pour le tour de conversation actuel.

e
DialogEvent

Événement déclenché.

Retours

Promise<boolean>

True si l’événement est géré par la boîte de dialogue actuelle et que le bouglage doit s’arrêter.

héritée deDialog.onDialogEvent

repromptDialog(TurnContext, DialogInstance)

En cas de substitution dans une classe dérivée, repromène l’utilisateur pour l’entrée.

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

Paramètres

_context

TurnContext

Objet de contexte pour le tour.

_instance
DialogInstance

Informations d’état actuelles pour cette boîte de dialogue.

Retours

Promise<void>

Remarques

Les dialogues dérivés qui prennent en charge la validation et la logique de nouvelle invite doivent remplacer cette méthode. Par défaut, cette méthode n’a aucun effet.

Le DialogContext appelle cette méthode lorsque la boîte de dialogue active doit demander à nouveau l’entrée de l’utilisateur. Cette méthode est implémentée pour les dialogues d’invite.

Voir également

héritée dedialog.repromptDialog