Entwerfen und Steuern des Unterhaltungsflusses

GILT FÜR: SDK v4

In herkömmlichen Anwendungen besteht die Benutzeroberfläche (UI) aus einer Reihe von Bildschirmen. Eine einzelne App oder Website kann je nach Bedarf einen oder mehrere Bildschirme zum Austausch von Informationen mit dem Benutzer nutzen. Die meisten Anwendungen beginnen mit einem Hauptbildschirm, auf den die Benutzer zuerst gelangen und der die Navigation ermöglicht. Diese führt zu anderen Bildschirmen für verschiedene Funktionen, wie das Erstellen einer neuen Bestellung, das Durchsuchen der Produkte oder die Suche nach Hilfe.

Wie Apps und Websites verfügen auch Bots über eine Benutzeroberfläche. Diese besteht aber anstelle von Bildschirmen aus Nachrichten. Nachrichten können Schaltflächen, Text und andere Elemente enthalten, oder sie können vollständig sprachbasiert sein.

Während traditionelle Anwendungen oder Websites mehrere Informationen gleichzeitig auf einem Bildschirm anfordern können, sammelt ein Bot die gleiche Menge an Informationen über mehrere Nachrichten. Auf diese Weise ist der Vorgang des Sammelns von Informationen vom Benutzer eine aktive Interaktion, bei der der Benutzer eine aktive Konversation mit dem Bot hat.

Ein gut entworfener Bot sorgt für einen Konversationsfluss, der sich natürlich anfühlt. Der Bot muss das Kerngespräch reibungslos führen können und mit Unterbrechungen oder Themenwechseln zurechtkommen.

Prozeduraler Konversationsfluss

Die Konversation mit einem Bot konzentriert sich in der Regel auf die Aufgabe, die ein Bot erreichen soll, was als prozeduraler Fluss bezeichnet. Der Bot stellt dem Benutzer eine Reihe von Fragen, um alle Informationen zu sammeln, die er zur Verarbeitung der Aufgabe benötigt.

Bei einem prozeduralen Konversationsfluss definieren Sie die Reihenfolge der Fragen, und der Bot stellt die Fragen in der Reihenfolge, die Sie festgelegt haben. Sie können die Fragen in logischen Modulen organisieren, um den Code zu zentralisieren und den Fokus darauf zu legen, die Konversation zu führen. Sie können beispielsweise eine Nachricht entwerfen, die die Logik enthält, mit der die Benutzer Produkte suchen können, und eine separate Nachricht mit der Logik, die Benutzer beim Erstellen einer neuen Bestellung unterstützt.

Sie können den Ablauf dieser Module auf beliebige Weise strukturieren – von einer komplett freien Form bis hin zum sequenziellen Abarbeiten. Das Bot Framework SDK bietet eine Dialogbibliothek, mit der Sie einen für Ihren Bot geeigneten Konversationsfluss erstellen können. Die Bibliothek enthält Wasserfall-Dialoge zum Erstellen einer Abfolge von Schritten und Aufforderungen, um Benutzern Fragen zu stellen. Weitere Informationen finden Sie unter Dialogbibliothek.

Diagram comparing application GUI flow against bot conversation flow.

In einer herkömmlichen Anwendung beginnt alles mit dem Hauptbildschirm. Der Hauptbildschirm ruft den Bildschirm für neue Bestellungen auf. Der Bildschirm für neue Bestellungen bleibt aktiv, bis er geschlossen oder andere Bildschirme aufgerufen werden, z.B. der Bildschirm für die Produktsuche. Wenn der Bildschirm für neue Bestellungen geschlossen wird, kehrt der Benutzer zurück zum Hauptbildschirm.

Bei einem Bot, der Dialoge nutzt, beginnt alles mit dem Stammdialog. Der Stammdialog ruft den Dialog für neue Bestellungen auf. An diesem Punkt übernimmt der Dialog für neue Bestellungen die Steuerung der Konversation, bis er geschlossen wird oder andere Dialoge aufruft, z.B. den Dialog für die Produktsuche. Wenn der Dialog für neue Bestellungen geschlossen wird, übernimmt der Stammdialog wieder die Steuerung der Konversation.

Ein Beispiel für die Implementierung eines Konversationsflusses mithilfe der Dialogbibliotheken finden Sie unter Implementieren eines sequenziellen Konversationsflusses.

Behandeln von Unterbrechungen

Es ist verlockend, davon auszugehen, dass Benutzer prozedurale Aufgaben nacheinander auf praktische und geordnete Weise ausführen. Beispielsweise kann ein Benutzer in einem prozeduralen Fluss mit Dialogen am Stammdialog beginnen und einen Dialog für eine neue Bestellung aufrufen. Benutzer können den Dialog für neue Bestellungen auch aus dem Produktsuche-Dialog heraus aufrufen. Wenn Sie dann eines der Ergebnisse auswählen, die im Produktsuche-Dialog aufgeführt sind, rufen sie den Dialog für neue Bestellungen auf. Nach Abschluss der Bestellung gelangen sie wieder zum Stammdialog.

Auch wenn es fantastisch wäre, wenn Benutzer immer ein solch linearen, logischen Pfad nutzen würden, kommt es nur sehr selten vor. Personen kommunizieren nicht immer in sequenzieller Reihenfolge. Sie neigen dazu, sich häufig umzuentscheiden. Betrachten Sie das folgende Beispiel:

Example of a user asking a question in response to a question from the bot.

Obwohl Ihr Bot prozedural ausgelegt ist, entscheidet der Benutzer, etwas ganz anderes zu tun oder eine Frage zu stellen, die mit dem aktuellen Thema nichts zu tun hat. Im Beispiel oben stellt der Benutzer eine Frage anstatt die Ja-Nein-Antwort zu geben, die der Bot erwartet. Wie soll Ihr Bot reagieren?

  • Er könnte darauf bestehen, dass der Benutzer zunächst die Frage beantwortet.
  • Er könnte alle zuvor vom Benutzer getroffenen Entscheidungen verwerfen, den kompletten Dialogstapel zurücksetzen und ganz neu beginnen, indem er versucht, die Frage des Benutzers zu beantworten.
  • Er könnte versuchen, die Frage des Benutzers zu beantworten und dann zu dieser Ja-Nein-Frage zurückkehren und versuchen, erneut von dort fortzufahren.

Es gibt keine richtige Antwort auf diese Frage. Die beste Lösung hängt von der jeweiligen Situation ab und davon, was Benutzer als angemessene Reaktion des Bots erwarten würden. Erfahren Sie, wie Sie Benutzerunterbrechungen für einen Bot behandeln, der für die Behandlung einiger Arten von Unterbrechungen konzipiert ist.

Festlegen des Ablaufs einer Konversation

Manchmal ist es hilfreich, eine Unterhaltung von vorne zu starten. Wenn ein Benutzer beispielsweise nach einem bestimmten Zeitraum nicht reagiert. Zu den verschiedenen Methoden zum Beenden einer Unterhaltung gehören:

  • Verfolgen Sie das letzte Mal, wenn eine Nachricht von einem Benutzer empfangen wurde, und löschen Sie den Status, wenn die Zeit größer als eine vorkonfigurierte Dauer bis zur nächsten Nachricht eines Benutzers ist.
  • Verwenden Sie ein Speicherebenen-Feature wie das Time-to-Live-Feature von Cosmos DB, um den Zustand nach einer vorkonfigurierten Zeitspanne zu löschen.

Weitere Informationen finden Sie unter Konversation beenden.

Nächste Schritte

Das Verwalten der Benutzernavigation innerhalb der Dialoge und der Entwurf eines Konversationsflusses, der es Benutzern ermöglicht, ihre Ziele (auch auf nicht lineare Weise) zu erreichen, ist eine der wesentlichen Herausforderungen beim Bot-Design. Im Artikel Bot-Navigation entwerfen werden einige häufiger auftretende Probleme bei schlechten Navigationsentwürfen sowie Strategien zur Vermeidung dieser erläutert.