Partager via


ComponentDialog class

Classe de base pour un dialogue qui contient d’autres dialogues enfants.

Extends

Remarques

Les dialogues de composant vous permettent de décomposer la logique de votre bot en composants qui peuvent eux-mêmes être ajoutés en tant que boîte de dialogue à une autre ComponentDialog ou DialogSet. Les composants peuvent également être exportés dans le cadre d’un package de nœuds et utilisés dans d’autres bots.

Pour définir un nouveau composant dériver une classe de ComponentDialog et ajouter vos dialogues enfants dans le constructeur 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;

Vous pouvez ensuite ajouter de nouvelles instances de votre composant à une autre DialogSet ou ComponentDialog:

const dialogs = new DialogSet(dialogState);
dialogs.add(new FillProfileDialog('fillProfile'));

Constructeurs

ComponentDialog(string)

Crée une instance de la classe Dialog.

Propriétés

id

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

telemetryClient

Définissez le client de télémétrie et appliquez-le également à toutes les boîtes de dialogue enfants. Les boîtes de dialogue ultérieures ajoutées au composant héritent également de ce client. Obtenez le client de télémétrie actuel.

Propriétés héritées

dialogs

La boîte de dialogue conteneurs est définie.

EndOfTurn

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

Méthodes

addDialog(Dialog)

Ajoute un boîte de dialogue enfant ou invite aux composants internes DialogSet.

beginDialog(DialogContext, O)

Appelé lorsque le dialogue est démarré et envoyé (push) sur la pile de dialogues du parent. Par défaut, cela appelle la méthode Dialog.BeginDialogAsync(DialogContext, object, CancellationToken) de la boîte de dialogue initiale du dialogue du composant, telle que définie par InitialDialogId. Remplacez cette méthode dans une classe dérivée pour implémenter la logique d’interruption.

continueDialog(DialogContext)

Appelé lorsque le dialogue est continu, où il s’agit du dialogue actif et que l’utilisateur répond avec une nouvelle Activité. Si cette méthode n’est pas substituée, la boîte de dialogue se termine automatiquement lorsque l’utilisateur répond.

createChildContext(DialogContext)

Crée le contexte de boîte de dialogue interne

endDialog(TurnContext, DialogInstance, DialogReason)

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

repromptDialog(TurnContext, DialogInstance)

Appelé lorsque la boîte de dialogue doit inviter à nouveau l’utilisateur à entrer.

resumeDialog(DialogContext, DialogReason, any)

Appelé lorsqu’un dialogue enfant sur la pile de dialogues parent a terminé ce tour, retournant le contrôle à ce composant de dialogue.

Méthodes héritées

configure(Record<string, unknown>)

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

findDialog(string)

Recherche une boîte de dialogue enfant qui a été précédemment ajoutée au conteneur.

getConverter(string)
getVersion()

Chaîne encodée utilisée pour faciliter la détection des modifications de bot lors du rééploiement.

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

Détails du constructeur

ComponentDialog(string)

Crée une instance de la classe Dialog.

new ComponentDialog(dialogId?: string)

Paramètres

dialogId

string

Optionnel. ID unique de la boîte de dialogue.

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

Définissez le client de télémétrie et appliquez-le également à toutes les boîtes de dialogue enfants. Les boîtes de dialogue ultérieures ajoutées au composant héritent également de ce client. Obtenez le client de télémétrie actuel.

BotTelemetryClient telemetryClient

Valeur de propriété

BotTelemetryClient

Le BotTelemetryClient à utiliser pour la journalisation.

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

dialogs

La boîte de dialogue conteneurs est définie.

dialogs: DialogSet

Valeur de propriété

héritée deDialogContainer.dialogs

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

addDialog(Dialog)

Ajoute un boîte de dialogue enfant ou invite aux composants internes DialogSet.

function addDialog(dialog: Dialog): this

Paramètres

dialog
Dialog

Boîte de dialogue enfant ou invite à ajouter.

Retours

this

Le ComponentDialog une fois l’opération terminée.

Remarques

La Dialog.id du premier enfant ajouté au composant est affectée à la propriété initialDialogId.

beginDialog(DialogContext, O)

Appelé lorsque le dialogue est démarré et envoyé (push) sur la pile de dialogues du parent. Par défaut, cela appelle la méthode Dialog.BeginDialogAsync(DialogContext, object, CancellationToken) de la boîte de dialogue initiale du dialogue du composant, telle que définie par InitialDialogId. Remplacez cette méthode dans une classe dérivée pour implémenter la logique d’interruption.

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

Paramètres

outerDC
DialogContext

Le DialogContext parent 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 le tour traité par la boîte de dialogue.

continueDialog(DialogContext)

Appelé lorsque le dialogue est continu, où il s’agit du dialogue actif et que l’utilisateur répond avec une nouvelle Activité. Si cette méthode n’est pas substituée, la boîte de dialogue se termine automatiquement lorsque l’utilisateur répond.

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

Paramètres

outerDC
DialogContext

Le DialogContext parent 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.

createChildContext(DialogContext)

Crée le contexte de boîte de dialogue interne

function createChildContext(outerDC: DialogContext): DialogContext

Paramètres

outerDC
DialogContext

contexte de boîte de dialogue externe

Retours

Contexte de boîte de dialogue créé.

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

Objet TurnContext pour ce tour.

instance
DialogInstance

Informations d’état associées à l’instance de ce composant Boîte de dialogue sur la pile de dialogues de son parent.

reason
DialogReason

Raison pour laquelle la boîte de dialogue s’est terminée.

Retours

Promise<void>

Promesse représentant l’opération asynchrone.

Remarques

Lorsque cette méthode est appelée à partir du contexte du dialogue parent, le composant Dialog annule toutes les boîtes de dialogue sur sa pile de dialogues interne avant de se terminer.

repromptDialog(TurnContext, DialogInstance)

Appelé lorsque la boîte de dialogue doit inviter à nouveau l’utilisateur à entrer.

function repromptDialog(context: TurnContext, instance: DialogInstance): Promise<void>

Paramètres

context

TurnContext

Objet TurnContext pour ce tour.

instance
DialogInstance

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

Retours

Promise<void>

Promesse représentant l’opération asynchrone.

resumeDialog(DialogContext, DialogReason, any)

Appelé lorsqu’un dialogue enfant sur la pile de dialogues parent a terminé ce tour, retournant le contrôle à ce composant de dialogue.

function resumeDialog(outerDC: DialogContext, _reason: DialogReason, _result?: any): Promise<DialogTurnResult>

Paramètres

outerDC
DialogContext

DialogContext pour le tour de conversation actuel.

_reason
DialogReason

Raison pour laquelle 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.

Remarques

Si la tâche réussit, le résultat indique si cette boîte de dialogue est toujours active une fois que ce tour de dialogue a été traité. En règle générale, le dialogue enfant a été démarré avec un appel à beginDialog(DialogContext, object) dans le contexte du parent. Toutefois, si la méthode DialogContext.replaceDialog(string, object) est appelée, la boîte de dialogue enfant logique peut être différente de l’original. Si cette méthode n’est pas substituée, la boîte de dialogue appelle automatiquement son RepromptDialog(ITurnContext, DialogInstance) lorsque l’utilisateur répond.

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

findDialog(string)

Recherche une boîte de dialogue enfant qui a été précédemment ajoutée au conteneur.

function findDialog(dialogId: string): Dialog | undefined

Paramètres

dialogId

string

ID de la boîte de dialogue à rechercher.

Retours

Dialog | undefined

Boîte de dialogue s’il est trouvé ; sinon null.

héritée deDialogContainer.findDialog

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

getVersion()

Chaîne encodée utilisée pour faciliter la détection des modifications de bot lors du rééploiement.

function getVersion(): string

Retours

string

Chaîne unique qui ne doit changer que lorsque la boîte de dialogue a changé de manière à redémarrer la boîte de dialogue.

Remarques

Cela permet par défaut de retourner les dialogues id, mais peut être substitué pour fournir une logique de détection des modifications plus précise. Toute boîte de dialogue sur la pile qui a sa modification de version entraîne un événement versionChanged sera déclenché. Si cet événement n’est pas géré par le bot, une erreur est générée, ce qui entraîne l’exécution de la logique du gestionnaire d’erreurs des bots.

Le renvoi d’une chaîne vide désactive le suivi des versions pour le composant tous ensemble.

héritée deDialog.getVersion

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