Dialogbibliothek

GILT FÜR: SDK v4

Dialoge sind ein cMicrosoft Entral-Konzept im SDK und bieten Möglichkeiten zum Verwalten einer zeitintensiven Unterhaltung mit dem Benutzer. Ein Dialogfeld führt eine Aufgabe aus, die einen Teil oder einen vollständigen Unterhaltungsthread darstellen kann. Es kann sich nur um eine oder mehrere Durchläufe erstrecken und einen kurzen oder langen Zeitraum umfassen.

Dieser Artikel beschreibt die wichtigsten Klassen und Features der Dialogbibliothek.

  • Sie sollten mit der Funktionsweise von Bots (einschließlich der Bedeutung eines Durchlaufs) und der Verwaltung von Zuständen vertraut sein.
  • Jeder Dialog stellt eine Unterhaltungsaufgabe dar, die bis zum Abschluss ausgeführt werden kann und gesammelte Informationen zurückgibt.
  • Jeder Dialog stellt eine Grundeinheit des Kontrollflusses dar: Er kann beginnen, fortgesetzt und beendet werden, pausieren und fortgesetzt werden oder abgebrochen werden.
  • Dialogfelder ähneln einer Methode oder Funktion in einer Programmiersprache. Sie können Argumente oder Parameter übergeben, wenn Sie einen Dialog starten, und der Dialog kann später einen Rückgabewert erzeugen, wenn er beendet wird.

Tipp

Wenn Sie mit der Entwicklung von Bots mit dem Bot Framework noch nicht vertraut sind oder eine neue Unterhaltungserfahrung erstellen, beginnen Sie mit dem Bot Framework Composer. Für bestehende SDK-First-Bots, die nicht in Composer erstellt wurden, sollten Sie in Erwägung ziehen, Ihren Bot als Skill freizugeben und Composer für die zukünftige Bot-Entwicklung zu verwenden.

Dialogzustand

Dialoge können eine mehrteilige Unterhaltung implementieren und als solche sind sie auf einen dauerhaften Zustand über Turns hinweg angewiesen. Ohne Zustand in den Dialogen weiß Ihr Bot nicht, an welcher Stelle in der Konversation er sich befindet oder welche Informationen bereits erfasst wurden.

Um den Platz eines Dialogs in der Konversation beizubehalten, muss der Status des Dialogs bei jedem Turn abgerufen und im Speicher abgelegt werden. Dies wird über einer Dialogstatus-Eigenschaftszugriffsmethode behandelt, die im Unterhaltungszustand des Bots definiert ist. Dieser Dialogstatus verwaltet Informationen für alle aktiven Dialoge und untergeordneten Elementen von aktiven Dialogen. So kann der Bot dort weitermachen, wo er zuletzt aufgehört hat und mit verschiedenen Unterhaltungsmodellen umgehen.

Zur Laufzeit enthält die Eigenschaft Dialogstatus Informationen darüber, wo sich der Dialog in seinem logischen Prozess befindet, einschließlich intern gesammelter Informationen in Form eines Dialoginstance-Objekts. Auch hier muss dies in den Bot gelesen und im Arbeitsspeicher gespeichert werden.

Dialoginfrastruktur

Neben verschiedenen Arten von Dialogen sind die folgenden Klassen an der Gestaltung und Steuerung von Unterhaltungen beteiligt. Obwohl Sie normalerweise nicht direkt mit diesen Klassen interagieren müssen, ist es nützlich, sie und ihren Zweck zu kennen, wenn Sie Dialoge für einen Bot entwerfen.

Klasse Beschreibung
Dialogsatz Definiert eine Sammlung von Dialogen, die aufeinander verweisen können und gemeinsam arbeiten können.
Dialogkontext Enthält Informationen zu allen aktiven Dialogfeldern.
Dialoginstance Enthält Informationen zu einem aktiven Dialog.
Ergebnis des Dialogturns Enthält Statusinformationen aus einem aktiven oder vor kurzem aktiven Dialog. Wenn der aktive Dialog beendet wurde, enthält dies seinen Rückgabewert.

Dialogtypen

Die Dialogbibliothek bietet einige Arten von Dialogen, um die Verwaltung der Unterhaltungen Ihres Bots zu erleichtern. Einige dieser Arten werden im weiteren Verlauf dieses Artikels näher beschrieben.

type Beschreibung
Dialogfeld Die Basisklasse für alle Dialoge.
Containerdialog Die Basisklasse für alle Containerdialoge, z. B. Komponenten und adaptive Dialoge. Er verwaltet einen inneren Dialogsatz und ermöglicht es Ihnen, eine Sammlung von Dialogen als eine Einheit zu behandeln.
Komponentendialog Ein universeller Typ eines Container-Dialogs, der einen Satz von Dialogen kapselt und die Wiederverwendung des gesamten Satzes ermöglicht. Wenn ein Komponentendialog gestartet wird, beginnt er mit einem bestimmten Dialog in seiner Sammlung. Nach Abschluss des inneren Prozesses endet der Komponentendialog.
Wasserfalldialog Definiert eine Abfolge von Schritten, sodass Ihr Bot Benutzer*innen durch einen linearen Prozess leiten kann. Diese sind in der Regel so konzipiert, dass sie im Kontext eines Komponentendialogfelds funktionieren.
Eingabeaufforderungsdialoge Bitten Sie den Benutzer um Eingabe, und geben Sie das Ergebnis zurück. Eine Eingabeaufforderung wird wiederholt, bis sie gültige Eingaben erhält oder abgebrochen wird. Sie sind für die Verwendung mit Wasserfalldialogen konzipiert.
Adaptiver Dialog Eine Art von Container-Dialog, der vom Composer verwendet wird, um einen natürlicheren Gesprächsfluss zu ermöglichen. Nicht für die direkte Verwendung in einem SDK-First-Bot vorgesehen.
Aktionsdialoge Ein Dialogtyp, der die Implementierung von Aktionen in Composer unterstützt. Nicht für die direkte Verwendung in einem SDK-First-Bot vorgesehen.
Eingabedialoge Ein Dialogtyp, der die Implementierung von Eingabeaktionen in Composer unterstützt. Nicht für die direkte Verwendung in einem SDK-First-Bot vorgesehen.
Skilldialog Automatisiert die Verwaltung von einem oder mehreren Skillbots von einem Skillconsumer. Composer unterstützt direkt Skills als Aktionen.
QnA Maker-Dialog Automatisiert den Zugriff auf eine QnA Maker-Knowledge Base. Dieser Dialog ist so konzipiert, dass er auch als Aktion im Composer funktioniert.

Wichtig

Adaptive Dialoge wurden zuerst in Version 4.9 des C#-SDKs hinzugefügt. Adaptive Dialoge unterstützen den Bot Framework Composer und sind nicht für die direkte Verwendung in einem SDK-First-Bot vorgesehen.

Dialogmuster

Es gibt zwei Hauptmuster für das Starten und Verwalten von Dialogen über einen Bot.

  1. Wir empfehlen die Verwendung des Bot Framework Composers für die Erstellung von Unterhaltungsdialogen, um von den natürlichen, frei fließenden Unterhaltungsfunktionen zu profitieren. Weitere Informationen finden Sie unter Einführung in Bot Framework Composer. Solche Bots können bei Bedarf immer noch mit Code erweitert werden.
  2. Entwickeln Sie Ihren Bot in einer der SDK-Sprachen und verwenden Sie die Ausführungserweiterungsmethode Ihres Stammdialogs. Informationen zur Verwendung der Run-Methode mit einem Komponentendialog finden Sie unter Komponenten- und Wasserfalldialoge und wie man einen sequentiellen Konversationsfluss implementiert.

Der Dialogstapel

Ein Dialogkontext enthält Informationen zu allen aktiven Dialogen und enthält einen Dialogstapel, der als Aufrufliste für alle aktiven Dialoge fungiert. Jeder Container-Dialog hat einen inneren Satz von Dialogen, die er kontrolliert, und so führt jeder aktive Container-Dialog einen inneren Dialogkontext und Dialogstapel als Teil seines Status ein.

Obwohl Sie nicht direkt auf den Stapel zugreifen, können Sie verstehen, dass er vorhanden ist, und seine Funktion hilft Ihnen zu verstehen, wie verschiedene Aspekte der Dialogbibliothek funktionieren.

Containerdialoge

Ein Containerdialog kann Teil eines größeren Dialogsatzes sein. Jeder Container verfügt über einen inneren Dialogsatz, der ebenfalls verwaltet wird.

  • Jeder Dialogsatz erstellt einen Bereich zum Auflösen von Dialog-IDs.

  • Das SDK implementiert derzeit zwei Typen von Containerdialogen: Komponentendialoge und adaptive Dialoge.

    Die konzeptionelle Struktur der beiden ist recht unterschiedlich. Ein Composer-Bot kann jedoch beides verwenden.

Dialog-IDs

Wenn Sie einen Dialog zu einem Dialogsatz hinzufügen, weisen Sie ihm eine eindeutige ID innerhalb dieses Satzes zu. Dialoge innerhalb eines Satzes referenzieren sich gegenseitig über ihre IDs.

Wenn ein Dialog zur Laufzeit auf einen anderen Dialog verweist, geschieht dies über die ID des Dialogs. Der Dialogkontext versucht, die ID anhand der anderen Dialoge in der unmittelbaren Dialogmenge aufzulösen. Wenn es keine Übereinstimmung gibt, wird nach einer Übereinstimmung in der enthaltenen oder äußeren Dialogmenge gesucht usw. Wenn keine Übereinstimmung gefunden wird, wird eine Ausnahme oder ein Fehler erzeugt.

Komponentendialoge

Komponentendialoge verwenden ein Sequenzmodell für Unterhaltungen, und jeder Dialog im Container ist für den Aufruf anderer Dialoge im Container verantwortlich. Wenn der innere Dialogstapel der Komponente leer ist, wird die Komponente beendet.

Ziehen Sie die Verwendung von Komponenten- und Wasserfalldialogen in Betracht, wenn Ihr Bot einen relativ einfachen Kontrollfluss hat, der keinen dynamischeren Konversationsfluss erfordert.

Informationen zu Komponenten- und Wasserfalldialogen beschreibt Komponenten-, Wasserfall- und Eingabeaufforderungsdialogen ausführlicher.

Weitere Dialoge

Die Dialogfelder QnA Maker und Fähigkeiten können als eigenständige Dialoge oder als Teil einer Sammlung von Dialogfeldern in einem Container verwendet werden.

QnA Maker-Dialog

Hinweis

Azure AI QnA Maker wird am 31. März 2025 eingestellt. Ab dem 01. Oktober 2022 können Sie keine neuen QnA Maker-Ressourcen oder Wissensdatenbanken mehr erstellen. Eine neuere Version der Funktionalität „Fragen und Antworten“ ist jetzt als Teil von Azure KI Language verfügbar.

Benutzerdefiniertes Fragen und Antworten, eine Azure KI Language-Funktion, ist die aktualisierte Version des QnA Maker-Diensts. Weitere Informationen zur Unterstützung von Fragen und Antworten im Bot Framework SDK finden Sie unter Natürliches Sprachverständnis.

Der QnA Maker-Dialog greift auf eine QnA Maker-Knowledge-Base zu und unterstützt die QnA Maker-Features zur Folgeäußerung und zum aktiven Lernen.

  • Folgeäußerungen, auch als Multi-Turn-Eingabeaufforderungen bezeichnet, ermöglichen es einer Knowledge Base, den Benutzer vor der Beantwortung seiner Frage nach weiteren Informationen zu fragen.
  • Aktive Lernvorschläge ermöglichen es, die Knowledge Base im Laufe der Zeit zu verbessern. Der QnA Maker-Dialog unterstützt explizites Feedback für die aktive Lernfunktion.

Weitere Informationen finden Sie unter:

Skilldialog

Ein Skilldialog greift auf eine oder mehrere Skills zu und verwaltet diese. Der Skilldialog veröffentlicht Aktivitäten des übergeordneten Bots für den Skillbot und gibt die Skillantworten an den Benutzer zurück.

Weitere Informationen finden Sie unter:

Nächste Schritte