DialogbibliothekDialogs library

gilt für: SDK v4APPLIES TO: SDK v4

Dialoge sind ein zentrales Konzept im SDK und bieten Möglichkeiten, eine lang andauernde Konversation mit dem Benutzer zu verwalten.Dialogs are a central concept in the SDK, providing ways to manage a long-running conversation with the user. Ein Dialog führt eine Aufgabe aus, die einen Teil von oder einen vollständigen Konversationsthread darstellen kann.A dialog performs a task that can represent part of or a complete conversational thread. Sie kann nur einen oder mehrere Durchlaufzeiten und einen kurzen oder langen Zeitraum umfassen.It can span just one turn or many, and can span a short or long period of time.

In diesem Artikel werden die Kernklassen und Features der Dialogbibliothek beschrieben.This article describes the core classes and features of the dialog library.

  • Sie sollten mit der Funktionsweise von Bots (einschließlich des Turns)und der Verwaltung des Zustandsvertraut sein.You should be familiar with how bots work (including what a turn is) and managing state.
  • Jedes Dialogfeld stellt eine Konversationsaufgabe dar, die bis zum Abschluss ausgeführt und gesammelte Informationen zurückgeben kann.Each dialog represents a conversational task that can run to completion and return collected information.
  • Jeder Dialog stellt eine grundlegende Einheit der Ablaufsteuerung dar: Er kann beginnen, fortfahren und enden. Anhalten und Fortsetzen; oder abgebrochen werden.Each dialog represents a basic unit of control flow: it can begin, continue, and end; pause and resume; or be canceled.
  • Dialoge ähneln einer Methode oder Funktion in einer Programmiersprache.Dialogs are similar to a method or function in a programming language. Sie können Argumente oder Parameter übergeben, wenn Sie einen Dialog starten, und der Dialog kann später einen Rückgabewert erzeugen, wenn er endet.You can pass in arguments or parameters when you start a dialog, and the dialog can later produce a return value when it ends.

Tipp

Wenn Sie noch keine Erfahrung mit der Entwicklung von Bots mit dem Bot Framework oder dem Erstellen einer neuen Konversationserfahrung haben, beginnen Sie mit dem Bot Framework Composer.If you are new to developing bots with the Bot Framework or creating a new conversational experience, start with the Bot Framework Composer. Für vorhandene SDK-First-Bots, die nicht in Composer erstellt wurden, sollten Sie erwägen, Ihren Bot als Qualifikation verfügbar zu machen und Composer für die zukünftige Botentwicklung zu verwenden.For existing SDK-first bots, not created in Composer, consider exposing your bot as a skill and using Composer for future bot development.

DialogzustandDialog state

Dialoge können eine Konversation mit mehreren Durchführungen implementieren, und als solche verlassen sie sich auf den permanenten Zustand über Turns hinweg.Dialogs can implement a multi-turn conversation, and as such, they rely on persisted state across turns. Ohne Zustand in Dialogen würde Ihr Bot nicht wissen, wo er sich in der Konversation befand oder welche Informationen er bereits gesammelt hat.Without state in dialogs, your bot wouldn't know where it was in the conversation or what information it had already gathered.

Um die Position eines Dialogs in der Konversation beizubehalten, muss der Zustand des Dialogs abgerufen und bei jedem Turn im Arbeitsspeicher gespeichert werden.To retain a dialog's place in the conversation, the dialog's state must be retrieved from and saved to memory each turn. Dies erfolgt über einen Dialogzustandseigenschaftenaccessor, der für den Konversationszustand des Bots definiert ist.This is handled via a dialog state property accessor defined on the bot's conversation state. Dieser Dialogzustand verwaltet Informationen für alle aktiven Dialoge und die kinderaktiven Dialoge.This dialog state manages information for all active dialogs, and children of active dialogs. Auf diese Weise kann der Bot die Stelle übernehmen, an der er zuletzt aufgelassen hat, und eine Vielzahl von Konversationsmodellen verarbeiten.This allows the bot to pick up where it left off last and to handle a variety of conversation models.

Zur Laufzeit enthält die Dialogzustandseigenschaft Informationen dazu, wo sich der Dialog in seinem logischen Prozess befindet, einschließlich aller intern gesammelten Informationen in Form eines Dialoginstanzobjekts.At run time, the dialog state property includes information on where the dialog is in its logical process, including any internally collected information in the form of a dialog instance object. Auch hier muss dies in den Bot eingelesen und bei jedem Turn im Arbeitsspeicher gespeichert werden.Again, this needs to be read into the bot and saved out to memory each turn.

DialoginfrastrukturDialog infrastructure

Neben verschiedenen Dialogtypen sind die folgenden Klassen am Entwurf und der Steuerung von Konversationen beteiligt.Along with various types of dialogs, the following classes are involved in the design and control of conversations. Obwohl Sie in der Regel nicht direkt mit diesen Klassen interagieren müssen, ist es hilfreich, sie und ihren Zweck zu kennen, wenn Sie Dialoge für einen Bot entwerfen.While you don't usually need to interact with these classes directly, being aware of them and their purpose is useful when designing dialogs for a bot.

KlasseClass BESCHREIBUNGDescription
DialogsatzDialog set Definiert eine Auflistung von Dialogen, die aufeinander verweisen und zusammenarbeiten können.Defines a collection of dialogs that can reference each other and work in concert.
DialogkontextDialog context Enthält Informationen zu allen aktiven Dialogen.Contains information about all active dialogs.
DialoginstanzDialog instance Enthält Informationen zu einem aktiven Dialogfeld.Contains information about one active dialog.
Ergebnis des DialogwechselsDialog turn result Enthält Statusinformationen aus einem aktiven oder kürzlich aktiven Dialogfeld.Contains status information from an active, or recently active, dialog. Wenn der aktive Dialog beendet wurde, enthält dieser den Rückgabewert.If the active dialog ended, this contains its return value.

DialogtypenDialog types

Die Dialogbibliothek bietet einige Arten von Dialogen, um die Verwaltung der Konversationen Ihres Bots zu vereinfachen.The dialogs library provides a few types of dialogs to make your bot's conversations easier to manage. Einige dieser Typen werden weiter unten in diesem Artikel ausführlicher beschrieben.Some of these types are described in more detail later in this article.

typeType BESCHREIBUNGDescription
Dialog (dialog)dialog Die Basisklasse für alle Dialoge.The base class for all dialogs.
Containerdialogfeldcontainer dialog Die Basisklasse für alle Containerdialoge, z. B. Komponenten- und adaptive Dialoge.The base class for all container dialogs, such as component and adaptive dialogs. Sie verwaltet einen inneren Dialogsatz und ermöglicht es Ihnen, eine Sammlung von Dialogen als Einheit zu behandeln.It maintains an inner dialog set and allows you to treat a collection of dialogs as a unit.
Komponentendialogfeldcomponent dialog Ein allgemeiner Typ von Containerdialog, der eine Gruppe von Dialogen kapselt, sodass die Gruppe als Ganzes wiederverwendet werden kann.A general-purpose type of container dialog that encapsulates a set of dialogs, allowing for the reuse of the set as a whole. Wenn ein Komponentendialog gestartet wird, beginnt er mit einem angegebenen Dialog in der Auflistung.When a component dialog starts, it begins with a designated dialog in its collection. Wenn der innere Prozess abgeschlossen ist, wird der Komponentendialog beendet.When the inner process completes, the component dialog ends.
Wasserfalldialogwaterfall dialog Definiert eine Abfolge von Schritten, sodass Ihr Bot einen Benutzer durch einen linearen Prozess führen kann.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 Komponentendialogs funktionieren.These are typically designed to work within the context of a component dialog.
Eingabeaufforderungsdialogeprompt dialogs Bitten Sie den Benutzer um Eingabe, und geben Sie das Ergebnis zurück.Ask the user for input and return the result. Eine Eingabeaufforderung wird wiederholt, bis sie eine gültige Eingabe erhält oder abgebrochen wird.A prompt will repeat until it gets valid input or it is canceled. Sie sind für die Arbeit mit Wasserfalldialogen konzipiert.They are designed to work with waterfall dialogs.
Adaptiver Dialogadaptive dialog Eine Art von Containerdialog, der von Composer verwendet wird, um natürlichere Konversationsflüsse bereitzustellen.A type of container dialog used by Composer to provide more natural conversational flows. Nicht für die direkte Verwendung in einem SDK-First-Bot vorgesehen.Not intended to be used directly in an SDK-first bot.
Aktionsdialogeaction dialogs Ein Dialogtyp, der die Implementierung von Aktionen in Composer unterstützt.A type of dialog that supports the implementation of actions in Composer. Nicht für die direkte Verwendung in einem SDK-First-Bot vorgesehen.Not intended to be used directly in an SDK-first bot.
Eingabedialogeinput dialogs Ein Dialogtyp, der die Implementierung von Eingabeaktionen in Composer unterstützt.A type of dialog that supports the implementation of input actions in Composer. Nicht für die direkte Verwendung in einem SDK-first-Bot vorgesehen.Not intended to be used directly in an SDK-first bot.
Skilldialogfeldskill dialog Automatisiert die Verwaltung eines oder mehrere Skillbots von einem Skill-Consumer.Automates the management of one or more skill bots from a skill consumer. Composer unterstützt Skills direkt als Aktionen.Composer directly supports skills as actions.
QnA Maker DialogQnA Maker dialog Automatisiert den Zugriff auf eine QnA Maker Wissensdatenbank.Automates access to a QnA Maker knowledge base. Dieser Dialog ist so konzipiert, dass er auch als Aktion in Composer funktioniert.This dialog is designed to also work as an action within Composer.

Wichtig

Adaptive Dialoge wurden erstmals in Version 4.9 des C#-SDK hinzugefügt.Adaptive dialogs were first added in version 4.9 of the C# SDK. Adaptive Dialoge unterstützen die Bot Framework Composer und sind nicht für die direkte Verwendung in einem SDK-first-Bot vorgesehen.Adaptive dialogs support the Bot Framework Composer and are not intended to be used directly in an SDK-first bot.

DialogmusterDialog patterns

Es gibt zwei Hauptmuster zum Starten und Verwalten von Dialogen über einen Bot.There are two main patterns for starting and managing dialogs from a bot.

  1. Es wird empfohlen, Bot Framework Composer dialogorientierte Dialoge zu erstellen, um von natürlicheren, frei fließenden Konversationsfunktionen zu profitieren.We recommend using Bot Framework Composer to author conversational dialogs, to benefit from more natural, free-flowing conversational capabilities. Weitere Informationen finden Sie unter Einführung in Bot Framework Composer.For more information, see the Introduction to Bot Framework Composer. Solche Bots können bei Bedarf weiterhin mit Code erweitert werden.Such bots can still be extended with code where needed.
  2. Entwickeln Sie Ihren Bot in einer der SDK-Sprachen, und verwenden Sie die Run Extension-Methode Ihres Stammdialogs.Develop your bot in one of the SDK languages and use your root dialog's run extension method. Informationen zur Verwendung der Run-Methode mit einem Komponentendialog finden Sie unter Informationen zu Komponenten- und Wasserfalldialogen und zum Implementieren eines sequenziellen Konversationsflusses.For information on using the run method with a component dialog, see about component and waterfall dialogs and how to implement sequential conversation flow.

Der DialogstapelThe dialog stack

Ein Dialogkontext enthält Informationen zu allen aktiven Dialogen und einen Dialogstapel, der als Aufrufliste für alle aktiven Dialoge fungiert.A dialog context contains information about all active dialogs and includes a dialog stack, which acts as a call stack for all the active dialogs. Jeder Containerdialog verfügt über einen inneren Satz von Dialogen, die er steuert. Daher führt jeder aktive Containerdialog einen inneren Dialogkontext und einen Dialogstapel als Teil seines Zustands ein.Each container dialog has an inner set of dialogs that it is controlling, and so each active container dialog introduces an inner dialog context and dialog stack as part of its state.

Sie greifen zwar nicht direkt auf den Stapel zu, aber wenn Sie wissen, dass er vorhanden ist, und seine Funktion helfen Ihnen, zu verstehen, wie verschiedene Aspekte der Dialogbibliothek funktionieren.While you will not access the stack directly, understanding that it exists and its function will help you understand how various aspects of the dialogs library work.

ContainerdialogfelderContainer dialogs

Dialogfeld "Container"A container dialog kann Teil eines größeren Dialogsatzes sein.can be part of a larger dialog set. Jeder Container verfügt über einen inneren Dialogsatz, der ebenfalls verwaltet wird.Each container has an inner dialog set that is also managed.

  • Jeder Dialogsatz erstellt einen Bereich zum Auflösen von Dialog-IDs.Each dialog set creates a scope for resolving dialog IDs.

  • Das SDK implementiert derzeit zwei Arten von Containerdialogen: Komponentendialoge und adaptive Dialoge.The SDK currently implements two types of container dialogs: component dialogs and adaptive dialogs.

    Die konzeptionelle Struktur der beiden ist sehr unterschiedlich.The conceptual structure of the two are quite different. Ein Composer-Bot kann jedoch beides verwenden.However, a Composer bot can make use of both.

Dialogfeld-IDsDialog IDs

Wenn Sie einem Dialogsatz ein Dialogfeld hinzufügen, weisen Sie ihm innerhalb dieses Satzes eine eindeutige ID zu.When you add a dialog to a dialog set, you assign it an unique ID within that set. Dialoge innerhalb eines Satzes verweisen über ihre IDs aufeinander.Dialogs within a set reference each other by their IDs.

Wenn ein Dialog zur Laufzeit auf einen anderen Dialog verweist, erfolgt dies über die ID des Dialogs.When one dialog references another dialog at run time, it does so by the dialog's ID. Der Dialogkontext versucht, die ID basierend auf den anderen Dialogen im unmittelbaren Dialogsatz aufzulösen.The dialog context tries to resolve the ID based on the other dialogs in the immediate dialog set. Wenn keine Übereinstimmung vorhanden ist, wird im enthaltenden oder äußeren Dialogsatz nach einer Übereinstimmung gesucht usw.If there is no match, it looks for a match in the containing or outer dialog set, and so on. Wenn keine Übereinstimmung gefunden wird, wird eine Ausnahme oder ein Fehler generiert.If no match is found, an exception or error is generated.

KomponentendialogeComponent dialogs

Komponentendialoge verwenden ein Sequenzmodell für Konversationen, und jeder Dialog im Container ist für den Aufruf anderer Dialoge im Container verantwortlich.Component dialogs use a sequence model for conversations, and each dialog in the container is responsible for calling other dialogs in the container. Wenn der innere Dialogstapel des Komponentendialogs leer ist, wird die Komponente beendet.When the component dialog's inner dialog stack is empty, the component ends.

Erwägen Sie die Verwendung von Komponenten- und Wasserfalldialogen, wenn Ihr Bot über eine relativ einfache Ablaufsteuerung verfügt, die keinen dynamischeren Konversationsfluss erfordert.Consider using component and waterfall dialogs if your bot has a relatively simple control flow that does not require more dynamic conversation flow.

Informationen zu Komponenten- und Wasserfalldialogen beschreibt Komponenten-, Wasserfall- und Eingabeaufforderungsdialoge ausführlicher.About component and waterfall dialogs describes component, waterfall, and prompt dialogs in more detail.

Adaptive DialogeAdaptive dialogs

Adaptive Dialoge ermöglichen Composer das dynamische Aktualisieren des Konversationsflusses basierend auf Kontext und Ereignissen.Adaptive dialogs allow Composer to dynamically update conversation flow based on context and events. Dadurch können Dialoge natürlicher und freifließend sein.This enables dialogs to be more natural and free-flowing. Solche Bots können:Such bots can:

  • Lassen Sie einen Benutzer seine Meinung ändern und eine Frage, die zuvor in der Konversation beantwortet wurde, erneut beantworten.Let a user change their mind and re-answer a question answered earlier in the conversation.
  • Lassen Sie einen Benutzer zwei Fragen mit einer Antwort beantworten.Let a user answer two questions with one response.
  • Lassen Sie einen Benutzerkontext während einer Konversation zu einem anderen Thema wechseln.Let a user context-switch to a different topic mid-way through a conversation.

Dies ist besonders hilfreich, wenn es um Kontextwechsel und Unterbrechungen während einer Konversation geht.This is especially handy when dealing with conversation context switches and interruptions in the middle of a conversation. Adaptive Dialoge unterstützen und setzen auf ein umfangreiches Ereignissystem.Adaptive dialogs support and sit on top of a rich event system.

Die Einführung in Bot Framework Composer beschreibt die Funktionen, die von Composer und adaptiven Dialogen unterstützt werden: Spracherkennung und Sprachgenerierungsunterstützung, Verwendung von Triggern und Aktionen zum Modellieren des Konversationsflusses, Zugriff auf Speicherbereich und so weiter.The Introduction to Bot Framework Composer describes the features supported by Composer and adaptive dialogs: language recognition and language generation support, use of triggers and actions to model conversation flow, access to memory scopes, and so on.

Andere DialogeOther dialogs

Die QnA Maker und Skilldialoge können als eigenständige Dialoge oder als Teil einer Sammlung von Dialogen in einem Container verwendet werden.The QnA Maker and skill dialogs can be used as stand-alone dialogs or as part of a collection of dialogs in a container.

QnA Maker DialogQnA Maker dialog

Der QnA Maker-Dialog QnA Maker auf eine wissensbasierte Wissensdatenbank und unterstützt QnA Maker Folgeaufforderung und aktive Lernfunktionen von Benutzer.The QnA Maker dialog accesses a QnA Maker knowledge base and supports QnA Maker's follow-up prompt and active learning features.

  • Folgeaufforderungen, die auch als Eingabeaufforderungen mit mehrfachen Durchs worden sind, ermöglichen einer Wissensdatenbank, den Benutzer vor der Beantwortung seiner Frage um weitere Informationen zu bitten.Follow-up prompts, also known as multi-turn prompts, allow a knowledge base to ask the user for more information before answering their question.
  • Vorschläge für aktives Lernen ermöglichen die Verbesserung der Wissensdatenbank im Laufe der Zeit.Active learning suggestions allow the knowledge base to improve over time. Der QnA Maker-Dialog unterstützt explizites Feedback für die aktive Lernfunktion.The QnA Maker dialog supports explicit feedback for the active learning feature.

Weitere Informationen finden Sie unterFor more information, see:

SkilldialogfeldSkill dialog

Ein Skilldialogfeld kann auf mindestens eine Qualifikation zugreifen und diese verwalten.A skill dialog accesses and manages one or more skills. Der Skilldialog veröffentlicht Aktivitäten des übergeordneten Bots für den Skillbot und gibt die Skillantworten an den Benutzer zurück.The skill dialog posts activities from the parent bot to the skill bot and returns the skill responses to the user.

Weitere Informationen finden Sie unterFor more information, see:

Nächste SchritteNext steps