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
Component |
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. |
telemetry |
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. |
End |
Obtient un résultat de fin de tour par défaut. |
Méthodes
add |
Ajoute un boîte de dialogue enfant |
begin |
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. |
continue |
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. |
create |
Crée le contexte de boîte de dialogue interne |
end |
|
reprompt |
Appelé lorsque la boîte de dialogue doit inviter à nouveau l’utilisateur à entrer. |
resume |
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. |
find |
Recherche une boîte de dialogue enfant qui a été précédemment ajoutée au conteneur. |
get |
|
get |
Chaîne encodée utilisée pour faciliter la détection des modifications de bot lors du rééploiement. |
on |
Appelé lorsqu’un événement a été déclenché, à l’aide de |
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
function addDialog(dialog: Dialog): this
Paramètres
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
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
Contexte de boîte de dialogue pour le tour de conversation actuel.
É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