InfoAbout component and waterfall dialogs

gilt für: SDK v4APPLIES TO: SDK v4

Dialoge sind in einigen verschiedenen Typen enthalten.Dialogs come in a few different types. In diesem Artikel werden die Dialogfelder für Komponenten, Wasserfall und prompt beschrieben.This article describes component, waterfall, and prompt dialogs. Weitere Informationen zu Dialogfeldern im Allgemeinen finden Sie im Artikel zu Dialoge in der Bibliothek .For information about dialogs in general, see the dialogs library article. Informationen zu adaptiven Dialogfeldern finden Sie in der Einführung in Adaptive Dialoge.For information about adaptive dialogs, see the introduction to adaptive dialogs.

Ein Wasserfall Dialogfeld (oder Wasserfall) definiert eine Abfolge von Schritten, sodass Ihr bot einen Benutzer durch einen linearen Prozess leiten kann.A waterfall dialog (or waterfall) defines a sequence of steps, allowing your bot to guide a user through a linear process. Diese sind in der Regel so konzipiert, dass Sie im Kontext eines Komponenten Dialogfelds funktionieren.These are typically designed to work within the context of a component dialog.

Ein Komponenten Dialogfeld ist ein Typ von Container Dialogfeld, mit dem Dialogfelder in der Gruppe andere Dialogfelder in der Gruppe aufrufen könnenA component dialog is a type of container dialog that allows dialogs in the set to call other dialogs in the set, such as a waterfall dialog calling prompt dialogs or another waterfall dialog. Mit Komponenten Dialogfeldern wird eine Reihe von untergeordneten Dialogfeldern verwaltet, z. b. Wasserfall DialogfelderComponent dialogs manage a set of child dialogs, such as waterfall dialogs, prompts, and so on. Sie können ein Komponenten Dialogfeld entwerfen, um bestimmte Aufgaben zu verarbeiten und im gleichen bot oder über mehrere Bots hinweg wiederzuverwenden.You can design a component dialog to handle specific tasks and reuse it, in the same bot or across multiple bots.

Eingabe Aufforderungs Dialogfelder (Eingabe Aufforderungen) sind Dialogfelder, die den Benutzer für bestimmte Arten von Informationen, z. b. eine Zahl, ein Datum oder einen Namen usw., auffordern sollen.Prompt dialogs (prompts) are dialogs designed to ask the user for specific types of information, such as a number, a date, or a name, and so on. Eingabe Aufforderungen sind zum Arbeiten mit Wasserfall Dialogfeldern in einem Komponenten Dialogfeld konzipiertPrompts are designed to work with waterfall dialogs in a component dialog.

KomponentendialogeComponent dialogs

Manchmal bietet es sich an, einen wiederverwendbaren Dialog zu schreiben, den Sie in verschiedenen Szenarien verwenden können (z. B. ein Adressendialog, bei dem der Benutzer zur Eingabe von Werten für Straße, Ort und Postleitzahl aufgefordert wird).Sometimes you want to write a reusable dialog that you want to use in different scenarios, such as an address dialog that asks the user to provide values for street, city and zip code.

Der Komponentendialog ermöglicht das Erstellen unabhängiger Dialoge für bestimmte Szenarien, indem ein umfangreicher Dialogsatz in besser verwaltbare Teile unterteilt wird.The component dialog provides a strategy for creating independent dialogs to handle specific scenarios, breaking a large dialog set into more manageable pieces. Jeder dieser Teile verfügt über einen eigenen Dialogsatz, wodurch Namenskonflikte mit dem übergeordneten Dialogsatz vermieden werden.Each of these pieces has its own dialog set, and avoids any name collisions with the dialog set that contains it. Weitere Informationen finden Sie in der Anleitung für Komponentendialoge.See the component dialog how to for more on these.

WasserfalldialogeWaterfall dialogs

Ein Wasserfalldialog ist eine spezifische Implementierung eines Dialogs, die häufig verwendet wird, um Informationen vom Benutzer zu erfassen oder den Benutzer durch eine Reihe von Aufgaben zu leiten.A waterfall dialog is a specific implementation of a dialog that is commonly used to collect information from the user or guide the user through a series of tasks. Jeder Schritt der Konversation wird als eine asynchrone Funktion implementiert, die einen Parameter für den Wasserfallschrittkontext (step) akzeptiert.Each step of the conversation is implemented as an asynchronous function that takes a waterfall step context (step) parameter. Bei jedem Schritt führt der Bot die folgenden Schritte aus: Er fordert den Benutzer zur Eingabe auf (oder startet einen untergeordneten Dialog, wobei es sich jedoch oft um eine Eingabeaufforderung handelt), wartet auf eine Antwort und übergibt das Ergebnis dann an den nächsten Schritt.At each step, the bot prompts the user for input (or can begin a child dialog, but that it is often a prompt), waits for a response, and then passes the result to the next step. Das Ergebnis der ersten Funktion wird als Argument an die nächste Funktion übergeben usw.The result of the first function is passed as an argument into the next function, and so on.

Das folgende Diagramm zeigt eine Sequenz von Wasserfallschritten und die ausgeführten Stapelvorgänge.The following diagram shows a sequence of waterfall steps and the stack operations that take place. Ausführliche Informationen zur Verwendung des Dialogstapels finden Sie weiter unten im Abschnitt Verwenden von Dialogen.Details on the use of the dialog stack are below in the using dialogs section.

Dialogkonzept

In Wasserfallschritten wird der Kontext des Wasserfalldialogs im Wasserfallschrittkontext gespeichert.Within waterfall steps, the context of the waterfall dialog is stored in its waterfall step context. Dieser ähnelt dem Dialogkontext, da er Zugriff auf den aktuellen Turn-Kontext und Zustand bietet.This is similar to the dialog context as it provides access to the current turn context and state. Verwenden Sie das Wasserfallschritt-Kontextobjekt, um aus einem Wasserfallschritt heraus mit einem Dialogsatz zu interagieren.Use the waterfall step context object to interact with a dialog set from within a waterfall step.

Sie können den Rückgabewert eines Dialogs entweder innerhalb eines Wasserfallschritts in einem Dialog oder im Turn-Handler Ihres Bots verarbeiten. Im Allgemeinen müssen Sie jedoch nur den Status des Turn-Ergebnisses des Dialogs in der Turn-Logik Ihres Bots überprüfen.You can handle a return value from a dialog either within a waterfall step in a dialog or from your bot's on turn handler, although you generally only need to check the status of the dialog turn result from your bot's turn logic. In einem Wasserfallschritt stellt der Dialog den Rückgabewert in der result-Eigenschaft des Wasserfall-Schrittkontexts bereit.Within a waterfall step, the dialog provides the return value in the waterfall step context's result property.

Eigenschaften des WasserfallschrittkontextsWaterfall step context properties

Der Wasserfallschrittkontext enthält Folgendes:The waterfall step context contains the following:

  • Options: Eingabeinformationen für den Dialog.Options: contains input information for the dialog.
  • Values: Informationen, die dem Kontext hinzugefügt werden können und in nachfolgenden Schritten übernommen werden.Values: contains information you can add to the context, and is carried forward into subsequent steps.
  • Result: Das Ergebnis des vorherigen Schritts.Result: contains the result from the previous step.

Außerdem wird die nächste Methode (nextasync in c#, Next in JS und python) mit dem nächsten Schritt des Wasserfall Dialogfelds innerhalb desselben Turn-Fensters fortgesetzt, sodass Ihr bot bei Bedarf einen bestimmten Schritt überspringen kann.Additionally, the next method (NextAsync in C#, next in JS and Python) continues to the next step of the waterfall dialog within the same turn, enabling your bot to skip a certain step if needed.

EingabeaufforderungenPrompts

Die in der Dialogbibliothek verfügbaren Eingabeaufforderungen sind eine einfache Möglichkeit, um Benutzer zur Eingabe von Informationen aufzufordern und ihre Antwort auszuwerten.Prompts, within the dialogs library, provide an easy way to ask the user for information and evaluate their response. Für eine Zahleneingabeaufforderung geben Sie beispielsweise die Frage oder die gewünschten Informationen an, und die Eingabeaufforderung überprüft automatisch, ob eine gültige Zahl als Antwort empfangen wurde.For example for a number prompt, you specify the question or information you are asking for, and the prompt automatically checks to see if it received a valid number response. Wenn dies der Fall ist, kann die Konversation fortgesetzt werden. Andernfalls wird der Benutzer erneut zur Eingabe einer gültigen Antwort aufgefordert.If it did, the conversation can continue; if it didn't, it will re-prompt the user for a valid answer.

Im Hintergrund sind Eingabeaufforderungen ein aus zwei Schritten bestehender Dialog.Behind the scenes, prompts are a two-step dialog. Im ersten Schritt fordert die Eingabeaufforderung den Benutzer zur Eingabe auf. Im zweiten Schritt wird der gültige Wert zurückgegeben oder der Vorgang mit einer erneuten Eingabeaufforderung wiederholt.First, the prompt asks for input; second, it returns the valid value, or starts from the top with a reprompt.

Eingabeaufforderungen verfügen über Eingabeaufforderungsoptionen, die beim Aufrufen der Eingabeaufforderung bereitgestellt werden. In diesen Optionen können Sie den Text der Eingabeaufforderung, die erneute Eingabeaufforderung im Fall eines Validierungsfehlers und Auswahlmöglichkeiten für die Beantwortung der Eingabeaufforderung angeben.Prompts have prompt options given when the prompt is called, which is where you can specify the text to prompt with, the retry prompt if validation fails, and choices to answer the prompt. Im Allgemeinen sind die prompt- und retryPrompt-Eigenschaften Aktivitäten, sie werden jedoch in verschiedenen Programmiersprachen unterschiedlich behandelt.In general, the prompt and retry prompt properties are activities, though there is some variation on how this is handled in different programming languages.

Zudem können Sie beim Erstellen der Eingabeaufforderung eine benutzerdefinierte Validierung hinzufügen.Additionally, you can choose to add some custom validation for your prompt when you create it. Angenommen, Sie möchten mit der Zahleneingabeaufforderung eine Anzahl von Personen erfragen, diese Zahl muss jedoch größer als 2 und kleiner als 12 sein.For example, say we wanted to get a party size using the number prompt, but that party size has to be more than 2 and less than 12. Die Eingabeaufforderung überprüft zunächst, ob eine gültige Zahl empfangen wurde, und führt dann (sofern angegeben) die benutzerdefinierte Validierung aus.The prompt first checks to see if it received a valid number, then runs the custom validation if it is provided. Falls die benutzerdefinierte Validierung fehlschlägt, wird der Benutzer wie oben beschrieben erneut zur Eingabe aufgefordert.If the custom validation fails, it will re-prompt the user as above.

Eine Eingabeaufforderung gibt bei ihrem Abschluss den resultierenden angeforderten Wert explizit zurück.When a prompt completes, it explicitly returns the resulting value that was asked for. Wenn dieser Wert zurückgegeben wird, können wir sicher sein, dass er sowohl die integrierte Eingabeaufforderungsvalidierung als auch die zusätzliche benutzerdefinierte Validierung (sofern vorhanden) bestanden hat.When that value is returned, we can be sure it has passed both the built in prompt validation and any additional custom validation that may have been provided.

Beispiele zur Verwendung verschiedener Eingabeaufforderungen finden Sie im Artikel zum Erfassen von Benutzereingaben mithilfe der Dialogbibliothek.For examples on using various prompts, take a look at how to use the dialogs library to gather user input.

EingabeaufforderungstypenPrompt types

Im Hintergrund sind Eingabeaufforderungen ein aus zwei Schritten bestehender Dialog.Behind the scenes, prompts are a two-step dialog. Im ersten Schritt fordert die Eingabeaufforderungen den Benutzer zur Eingabe auf. Im zweiten Schritt wird der gültige Wert zurückgegeben oder der Vorgang mit einer erneuten Eingabeaufforderung neu gestartet.First, the prompt asks for input; second, it returns the valid value, or restarts from the top with a re-prompt. Die Dialogebibliothek enthält viele einfache Eingabeaufforderungen, die jeweils zum Anfordern einer anderen Art von Antwort verwendet werden.The dialogs library offers a number of basic prompts, each used for collecting a different type of response. Die einfachen Eingabeaufforderungen können Eingaben in natürlicher Sprache interpretieren (z. B. „zehn“ oder „ein Dutzend“ für eine Zahl oder „morgen“ oder „Freitag um 10 Uhr“ für eine Datums- und Zeitangabe).The basic prompts can interpret natural language input, such as "ten" or "a dozen" for a number, or "tomorrow" or "Friday at 10am" for a date-time.

PromptPrompt BESCHREIBUNGDescription RückgabeReturns
AnlageneingabeaufforderungAttachment prompt Fordert den Benutzer auf, eine oder mehrere Anlagen anzufügen (beispielsweise ein Dokument oder Bild).Asks for one or more attachments, such as a document or image. Eine Sammlung von attachment-Objekten.A collection of attachment objects.
AuswahleingabeaufforderungChoice prompt Fordert den Benutzer auf, eine Auswahl in einer Reihe von Optionen zu treffen.Asks for a choice from a set of options. Ein found choice-Objekt.A found choice object.
BestätigungseingabeaufforderungConfirm prompt Fordert den Benutzer zur Bestätigung auf.Asks for a confirmation. Ein boolescher Wert.A Boolean value.
Datums-/UhrzeiteingabeaufforderungDate-time prompt Fordert den Benutzer auf, ein Datum und eine Uhrzeit anzugeben.Asks for a date-time. Eine Sammlung von Objekten für die Datums-/Uhrzeitauflösung.A collection of date-time resolution objects.
ZahleneingabeaufforderungNumber prompt Fordert den Benutzer auf, eine Zahl einzugeben.Asks for a number. Ein numerischer Wert.A numeric value.
TexteingabeaufforderungText prompt Fordert den Benutzer auf, einen allgemeinen Text einzugeben.Asks for general text input. Eine Zeichenfolge.A string.

Um einen Benutzer zur Eingabe aufzufordern, definieren Sie eine Eingabeaufforderung mit einer der integrierten Klassen (beispielsweise text prompt), und fügen Sie diese dann Ihrem Dialogsatz hinzu.To prompt a user for input, define a prompt using one of the built-in classes, such as the text prompt, and add it to your dialog set. Eingabeaufforderungen verfügen über feste IDs, die innerhalb eines Dialogsatzes eindeutig sein müssen.Prompts have fixed IDs that must be unique within a dialog set. Sie können ein benutzerdefiniertes Validierungssteuerelement für jede Eingabeaufforderung verwenden, und für einige Eingabeaufforderungen können Sie ein Standardgebietsschema angeben.You can have a custom validator for each prompt, and for some prompts, you can specify a default locale.

Gebietsschema der EingabeaufforderungPrompt locale

Das Gebietsschema wird verwendet, um das sprachspezifische Verhalten der Eingabeaufforderungen choice, confirm, date-time und number zu bestimmen.The locale is used to determine language-specific behavior of the choice, confirm, date-time, and number prompts. Wenn für den Kanal eine locale-Eigenschaft angegeben wurde, wird für alle Eingaben des Benutzers dieser Wert verwendet.For any given input from the user, if the channel provided a locale property in user's message, then that is used. Wenn das Standardgebietsschema der Eingabeaufforderung beim Aufrufen des Konstruktors der Eingabeaufforderung angegeben oder zu einem späteren Zeitpunkt festgelegt wird, wird andernfalls dieses Gebietsschema verwendet.Otherwise, if the prompt's default locale is set, by providing it when calling the prompt's constructor or by setting it later, then that is used. Falls keine dieser Angaben vorhanden ist, wird Englisch („en-us“) als Gebietsschema genutzt.If neither of those are provided, English ("en-us") is used as the locale. Hinweis: Das Gebietsschema ist ein zwei-, drei- oder vierstelliger ISO 639-Code, der eine Sprache oder eine Sprachfamilie darstellt.Note: The locale is a 2, 3, or 4 character ISO 639 code that represents a language or language family.

EingabeaufforderungsoptionenPrompt options

Der zweite Parameter der prompt-Methode des Schrittkontexts akzeptiert ein promptOptions-Objekt mit den folgenden Eigenschaften.The second parameter of the step context's prompt method takes a prompt options object, which has the following properties.

EigenschaftProperty BESCHREIBUNGDescription
promptPrompt Die erste Aktivität, die an den Benutzer gesendet wird, um ihn zur Eingabe aufzufordern.The initial activity to send the user, to ask for their input.
retryPromptRetry prompt Die Aktivität, die an den Benutzer gesendet wird, wenn seine erste Eingabe nicht überprüft werden konnte.The activity to send the user if their first input did not validate.
choicesChoices Eine Liste mit Optionen, aus denen der Benutzer bei einer Auswahleingabeaufforderung wählen kann.A list of choices for the user to choose from, for use with a choice prompt.
validationsValidations Zusätzliche Parameter für die Verwendung mit einem benutzerdefinierten Validierungssteuerelement.Additional parameters to use with a custom validator.
styleStyle Legt fest, wie die Optionen für eine Auswahl- oder Bestätigungsaufforderung einem Benutzer präsentiert werden.Defines how the choices for a choice prompt or confirm prompt will be presented to a user.

Sie sollten immer die anfängliche Eingabeaufforderungsaktivität zum Senden des Benutzers sowie eine Wiederholungsaufforderung für Fälle angeben, in denen die Eingaben des Benutzers nicht validiert werden.You should always specify the initial prompt activity to send the user, as well as a retry prompt for instances when the user's input doesn't validate.

Wenn die Eingabe des Benutzers nicht gültig ist, wird die Wiederholungsaufforderung an den Benutzer gesendet. Wenn keine Wiederholung angegeben wurde, wird die anfängliche Eingabeaufforderung erneut gesendet.If the user's input isn't valid, the retry prompt is sent to the user; if there was no retry specified, then the initial prompt is re-sent. Wenn jedoch eine Aktivität aus dem Validierungssteuerelement an den Benutzer zurückgesendet wird, wird keine Wiederholungsaufforderung gesendet.However, if an activity is sent back to the user from within the validator, no retry prompt is sent.

Validierung einer EingabeaufforderungPrompt validation

Sie können die Antwort auf eine Eingabeaufforderung vor der Rückgabe des Werts an den nächsten Schritt des Wasserfalls überprüfen.You can validate a prompt response before returning the value to the next step of the waterfall. Eine Validierungsfunktion verfügt über einen Parameter für den Validierungskontext der Eingabeaufforderung und gibt einen booleschen Wert zurück, der angibt, ob die Validierung der Eingabe erfolgreich war.A validator function has a prompt validator context parameter and returns a Boolean, indicating whether the input passes validation. Der Validierungskontext der Eingabeaufforderung enthält die folgenden Eigenschaften:The prompt validator context includes the following properties:

EigenschaftProperty BESCHREIBUNGDescription
ContextContext Der aktuelle Turn-Kontext für den Bot.The current turn context for the bot.
RecognizedRecognized Ein Ergebnis der Eingabeaufforderungserkennung, das Informationen zu der von der Erkennung verarbeiteten Benutzereingabe enthält.A prompt recognizer result that contains information about the user input, as processed by the recognizer.
OptionenOptions Enthält die Eingabeaufforderungsoptionen, die im Aufruf zum Starten der Eingabeaufforderung angegeben wurden.Contains the prompt options that were provided in the call to start the prompt.

Das Ergebnis der Eingabeaufforderungserkennung weist die folgenden Eigenschaften auf:The prompt recognizer result has the following properties:

EigenschaftProperty BESCHREIBUNGDescription
ErfolgreichSucceeded Gibt an, ob die Erkennung die Eingabe analysieren konnte.Indicates whether the recognizer was able to parse the input.
WertValue Der Rückgabewert der Erkennung.The return value from the recognizer. Bei Bedarf kann der Validierungscode diesen Wert ändern.If necessary, the validation code can modify this value.

Verwenden von DialogenUsing dialogs

Sie können sich Dialoge als einen programmgesteuerten Stapel vorstellen, den so genannten Dialogstapel. Der Turn-Handler steuert den Stapel und fungiert als Fallback, wenn der Stapel leer ist.Dialogs can be thought of as a programmatic stack, which we call the dialog stack, with the turn handler as the one directing it and serving as the fallback if the stack is empty. Das oberste Element auf diesem Stapel wird als aktives Dialog Feld betrachtet, und der Dialog Kontext leitet alle Eingaben an das aktive Dialogfeld.The top-most item on that stack is considered the active dialog, and the dialog context directs all input to the active dialog.

Wenn ein Dialog gestartet wird, wird er in den Stapel gepusht und ist dann der aktive Dialog.When a dialog begins, it is pushed onto the stack, and is now the active dialog. Er bleibt der aktive Dialog, bis er beendet oder von der ReplaceDialog-Methode entfernt wird oder bis ein anderer Dialog (vom Turn-Handler oder vom aktiven Dialog selbst) in den Stapel gepusht und zum aktiven Dialog wird.It remains the active dialog until it either ends, it is removed by the replace dialog method, or another dialog is pushed onto the stack (by either the turn handler or active dialog itself) and becomes the active dialog. Wenn dieser neue Dialog endet, wird er aus dem Stapel entfernt, und der nächste Dialog im Stapel wird zum aktiven Dialog.When that new dialog ends, it is popped off the stack and the next dialog down becomes the active dialog again. Dies ermöglicht das Wiederholen eines Dialogs oder das Verzweigen einer Konversation (wie unten beschrieben).This allows for repeating a dialog or branching a conversation, discussed below.

Mithilfe der Erweiterungsmethode " Run Dialog" können Sie ein root-Dialogfeld Starten oder fortsetzen.You can begin or continue a root dialog using the run dialog extension method. Im bot-Code wird durch Aufrufen der Erweiterungsmethode für die Dialogführung entweder das vorhandene Dialogfeld fortgesetzt, oder es wird eine neue Instanz des Dialog Felds gestartet, wenn der Stapel aktuell leer ist.From the bot code, calling the dialog run extension method either continues the existing dialog, or starts a new instance of the dialog if the stack is currently empty. Die Steuerelement-und Benutzereingaben werden in das aktive Dialogfeld auf dem Stapel übertragen.Control and user input goes to the active dialog on the stack.

Die Run-Methode erfordert einen Zustands Eigenschaften Accessor , um auf den Dialog Zustand zuzugreifen.The run method requires a state property accessor to access the dialog state. Der Accessor wird wie andere Zustandsaccessoren erstellt und verwendet, er wird jedoch auf der Grundlage des Konversationszustands als seine eigene Eigenschaft erstellt.The accessor is created and used the same way as other state accessors, but is created as it's own property based off of the conversation state. Informationen zur Verwaltung des Zustands finden Sie im Thema Verwalten des Zustands. Die Verwendung des Dialogzustands wird in der Anleitung Implementieren eines sequenziellen Konversationsflusses erläutert.Details on managing state can be found in the managing state topic, and usage of dialog state is shown in the sequential conversation flow how-to.

In einem Dialogfeld haben Sie Zugriff auf den Dialog Kontext und können damit andere Dialogfelder starten, das aktuelle Dialogfeld beenden und andere Vorgänge ausführen.From within a dialog, you have access to the dialog context and can use it to start other dialogs, end the current dialog, and perform other operations.

So starten Sie einen DialogTo start a dialog

Übergeben Sie innerhalb eines Wasserfall Dialogfelds die Dialogfeld- ID , die Sie starten möchten, in der Dialogfeld Seite Begin Dialog, prompt oder Replace des Dialog Kontexts.From within a waterfall dialog, pass the dialog ID you want to start into the dialog context's begin dialog, prompt, or replace dialog method.

  • Mit den Methoden prompt und BEGIN Dialog wird eine neue Instanz des Dialog Felds, auf das verwiesen wird, auf den oberen Rand des Stapels übermitteln.The prompt and begin dialog methods will push a new instance of the referenced dialog onto the top of the stack.
  • Die Methode „replace dialog“ entfernt den aktuellen Dialog aus dem Stapel und verschiebt den ersetzenden Dialog an den Anfang des Stapels.The replace dialog method will pop the current dialog off the stack and push the replacing dialog onto the stack. Der ersetzte Dialog wird abgebrochen, und alle in dieser Instanz enthaltenen Informationen werden entfernt.The replaced dialog is canceled and any information that instance contained is disposed of.

Verwenden Sie den options-Parameter, um Informationen an die neue Instanz des Dialogs zu übergeben.Use the options parameter to pass information to the new instance of the dialog. Der Zugriff auf die in den neuen Dialog übergebenen Optionen ist in jedem Schritt des Dialogs über die options-Eigenschaft des Schrittkontexts möglich.The options passed into the new dialog can be accessed via the step context's options property in any step of the dialog. Beispielcode finden Sie unter Erstellen eines erweiterten Konversationsflusses mithilfe von Verzweigungen und Schleifen.See the Create advanced conversation flow using branches and loops how-to for example code.

So setzen Sie einen Dialog fortTo continue a dialog

Verwenden Sie in einem Wasserfall Dialogfeld die Values -Eigenschaft des Step-Kontexts, um den Zustand zwischen den einzelnenWithin a waterfall dialog, use the step context's values property to persist state between turns. Jeder Wert, der dieser Sammlung in einem vorherigen Durchgang hinzugefügt wurde, ist in den nachfolgenden Durchgängen verfügbar.Any value added to this collection in a previous turn is available in subsequent turns. Beispielcode finden Sie unter Erstellen eines erweiterten Konversationsflusses mithilfe von Verzweigungen und Schleifen.See the Create advanced conversation flow using branches and loops how-to for example code.

So beenden Sie einen DialogTo end a dialog

Verwenden Sie in einem Wasserfall Dialogfeld die End Dialog -Methode, um ein Dialogfeld zu beenden.Within a waterfall dialog, use the end dialog method to end a dialog by popping it off the stack. Die End Dialog -Methode kann ein optionales Ergebnis an den übergeordneten Kontext zurückgeben (z. b. das Dialogfeld, das Sie aufgerufen hat, oder den Turn-Handler des Bots).The end dialog method can return an optional result to the parent context (such as the dialog that called it, or the bot's turn handler). Die Methode wird meistens innerhalb des Dialogs aufgerufen, um die aktuelle Instanz dieses Dialogs zu beenden.This is most often called from within the dialog to end the current instance of itself.

Die EndDialog-Methode kann überall aufgerufen werden, wo ein Dialogkontext vorhanden ist, für den Bot entsteht jedoch der Eindruck, dass sie im aktuellen aktiven Dialog aufgerufen wurde.You can call the end dialog method from anywhere you have a dialog context, but it will appear to the bot that it was called from the current active dialog.

Tipp

Die bewährte Methode besteht darin, am Ende des Dialogs explizit die EndDialog-Methode aufzurufen.It is best practice to explicitly call the end dialog method at the end of the dialog.

So löschen Sie alle DialogeTo clear all dialogs

Wenn Sie alle Dialoge aus dem Stapel entfernen möchten, können Sie den Dialogstapel löschen, indem Sie die cancel all dialogs-Methode des Dialogkontexts aufrufen.If you want to pop all dialogs off the stack, you can clear the dialog stack by calling the dialog context's cancel all dialogs method.

Wiederholen eines DialogsRepeating a dialog

Sie können ein Dialogfeld durch sich selbst ersetzen und dadurch eine Schleife erstellen. Verwenden Sie dazu die Methode replace dialog.You can replace a dialog with itself, creating a loop, by using the replace dialog method. Dies ist eine großartige Möglichkeit, komplexe Interaktionen und eine Technik zum Verwalten von Menüs zu verarbeiten.This is a great way to handle complex interactions and one technique for managing menus.

Hinweis

Wenn der interne Zustand für den aktuellen Dialog beibehalten werden muss, müssen Sie im Aufruf der ReplaceDialog-Methode Informationen an die neue Instanz des Dialogs übergeben und dann den Dialog entsprechend initialisieren.If you need to persist the internal state for the current dialog, you will need to pass information to the new instance of the dialog in the call to the replace dialog method, and then initialize the dialog appropriately.

Verzweigen einer KonversationBranch a conversation

Der Dialogkontext verwaltet den Dialogstapel und verfolgt für jeden Dialog im Stapel nach, welcher Schritt als Nächstes ansteht.The dialog context maintains the dialog stack and for each dialog on the stack, tracks which step is next. Die BeginDialog-Methode erstellt einen untergeordneten Dialog und pusht diesen Dialog an den Anfang des Stapels. Die EndDialog-Methode entfernt den obersten Dialog per Pop aus dem Stapel.Its begin dialog method creates a child and pushes that dialog onto the top of the stack, and its end dialog method pops the top dialog off the stack. EndDialog wird in der Regel innerhalb des Dialogs aufgerufen, der beendet wird.End dialog is usually called from within the dialog that's ending.

Ein Dialog kann innerhalb des gleichen Dialogsatzes einen neuen Dialog starten. Dazu wird die Methode begin dialog des Dialogkontexts aufgerufen und die ID des neuen Dialogs angegeben. Dadurch wird der neue Dialog zum aktuell aktiven Dialog.A dialog can start a new dialog within the same dialog set by calling the dialog context's begin dialog method and providing the ID of the new dialog, which then makes the new dialog the currently active dialog. Der ursprüngliche Dialog befindet sich zwar weiterhin im Stapel, Aufrufe der Methode continue dialog des Dialogkontexts werden aber nur an den Dialog gesendet, der sich ganz oben im Stapel befindet (aktiver Dialog).The original dialog is still on the stack, but calls to the dialog context's continue dialog method are only sent to the dialog that is on top of the stack, the active dialog. Wenn ein Dialog per Pop aus dem Stapel entfernt wird, fährt der Dialogkontext mit dem Schritt des Wasserfalls aus dem Stapel fort, der im ursprünglichen Dialog als nächstes an der Reihe wäre.When a dialog is popped off the stack, the dialog context will resume with the next step of the waterfall on the stack where it left off of the original dialog.

Somit können Sie eine Verzweigung innerhalb Ihres Konversationsablaufs erstellen, indem Sie einen Schritt in einen Dialog einschließen, der bei Bedarf einen Dialog aus einer Gruppe verfügbarer Dialoge startet.Therefore, you can create a branch within your conversation flow by including a step in one dialog that can conditionally choose a dialog to start out of a set of available dialogs.

Zusätzliche InformationenAdditional information