Projektowanie i kontrolowanie przepływu konwersacji

DOTYCZY: Zestaw SDK w wersji 4

W tradycyjnej aplikacji interfejs użytkownika (UI) składa się z serii ekranów, a jedna aplikacja lub witryna internetowa może używać co najmniej jednego ekranu w razie potrzeby do wymiany informacji z użytkownikiem. Większość aplikacji zaczyna się od głównego ekranu, na którym użytkownicy początkowo lądują, a ekran zapewnia nawigację, która prowadzi do innych ekranów dla różnych funkcji, takich jak uruchamianie nowego zamówienia, przeglądanie produktów lub szuka pomocy.

Podobnie jak aplikacje i witryny internetowe, boty mają interfejs użytkownika, ale składają się z komunikatów , a nie ekranów. Komunikaty mogą zawierać przyciski, tekst i inne elementy lub być całkowicie oparte na mowie.

Chociaż tradycyjna aplikacja lub witryna internetowa może zażądać wielu informacji na ekranie jednocześnie, bot zbierze tę samą ilość informacji przy użyciu wielu komunikatów. W ten sposób proces zbierania informacji od użytkownika jest aktywnym środowiskiem; jeden, w którym użytkownik ma aktywną konwersację z botem.

Dobrze zaprojektowany bot będzie miał przepływ konwersacyjny, który czuje się naturalnie. Bot powinien być w stanie bezproblemowo obsługiwać podstawową konwersację i być w stanie bezproblemowo obsługiwać przerwy lub przełączać tematy.

Przepływ konwersacji proceduralnej

Konwersacje z botem mogą skupić się na zadaniu, które bot próbuje osiągnąć, co jest nazywane przepływem proceduralnym. Bot zadaje użytkownikowi szereg pytań w celu zebrania wszystkich potrzebnych informacji przed przetworzeniem zadania.

W przepływie konwersacji proceduralnej zdefiniujesz kolejność pytań, a bot będzie zadawać pytania w zdefiniowanej kolejności. Pytania można organizować w grupach logicznych, aby zachować scentralizowany kod, jednocześnie koncentrując się na prowadzeniu konwersacji. Można na przykład zaprojektować jeden moduł, aby zawierał logikę, która pomaga użytkownikowi przeglądać produkty i oddzielny moduł zawierający logikę, która pomaga użytkownikowi utworzyć nowe zamówienie.

Te moduły można tworzyć w dowolny sposób, począwszy od wolnego formularza do sekwencyjnego. Zestaw SDK platformy Bot Framework udostępnia bibliotekę okien dialogowych, która umożliwia konstruowanie dowolnego przepływu konwersacyjnego potrzebnego botowi. Biblioteka zawiera okna dialogowe kaskadowe służące do tworzenia sekwencji kroków i monitów o zadawanie pytań użytkownikom. Aby uzyskać więcej informacji, zobacz Biblioteka okien dialogowych.

Diagram porównujący przepływ interfejsu użytkownika aplikacji z przepływem konwersacji bota.

W tradycyjnej aplikacji wszystko zaczyna się od ekranu głównego . Ekran główny wywołuje nowy ekran zamówienia . Nowy ekran zamówienia pozostaje w kontrolce, dopóki nie zostanie zamknięty lub wywoła inne ekrany, takie jak ekran wyszukiwania produktów . Jeśli nowy ekran zamówienia zostanie zamknięty, użytkownik zostanie zwrócony na ekran główny.

W botze, który używa okien dialogowych, wszystko zaczyna się od okna dialogowego głównego. Okno dialogowe katalogu głównego wywołuje okno dialogowe nowego zamówienia. W tym momencie okno dialogowe nowego zamówienia przejmuje kontrolę nad konwersacją i pozostaje w kontrolce, dopóki nie zostanie zamknięte lub wywoła inne okno dialogowe, takie jak okno dialogowe wyszukiwania produktów. Jeśli nowe okno dialogowe zamówienia zostanie zamknięte, kontrolka konwersacji powróci do okna dialogowego głównego.

Aby zapoznać się z przykładem implementowania przepływu konwersacyjnego przy użyciu bibliotek dialogowych, zobacz Implementowanie sekwencyjnego przepływu konwersacji.

Obsługa przerw w działaniu

Może być kuszące założenie, że użytkownicy będą wykonywać zadania proceduralne jeden po drugim w sposób schludny i uporządkowany. Na przykład w proceduralnym przepływie konwersacji przy użyciu okien dialogowych użytkownik rozpocznie pracę w oknie dialogowym głównym i wywoła nowe okno dialogowe zamówienia. W oknie dialogowym nowe zamówienie wywołują okno dialogowe wyszukiwania produktów. Następnie podczas wybierania jednego z wyników wyświetlanych w oknie dialogowym wyszukiwania produktów wywołują nowe okno dialogowe zamówienia. Po zakończeniu zamówienia wracają do okna dialogowego głównego.

Chociaż byłoby wspaniale, gdyby użytkownicy zawsze podróżowali tak liniową, logiczną ścieżką, rzadko występuje. Ludzie nie zawsze komunikują się w kolejności sekwencyjnej. Często zmieniają zdanie. Rozpatrzmy następujący przykład:

Przykład użytkownika, który zadaje pytanie w odpowiedzi na pytanie od bota.

Chociaż bot może być skoncentrowany proceduralnie, użytkownik może zdecydować się na coś zupełnie innego lub zadać pytanie, które może nie być związane z bieżącym tematem. W powyższym przykładzie użytkownik zadaje pytanie, a nie podaje odpowiedzi tak/bez oczekiwanej przez bota. Jak powinien odpowiadać bot?

  • Nalegaj, aby użytkownik najpierw odpowiedział na pytanie.
  • Zlekceważ wszystko, co użytkownik zrobił wcześniej, zresetuj cały stos okna dialogowego i zacznij od początku, próbując odpowiedzieć na pytanie użytkownika.
  • Spróbuj odpowiedzieć na pytanie użytkownika, a następnie wróć do tego pytania tak/nie i spróbuj wznowić je stamtąd.

Nie ma właściwej odpowiedzi na to pytanie, ponieważ najlepsze rozwiązanie będzie zależeć od specyfiki danego scenariusza i sposobu, w jaki użytkownik będzie rozsądnie oczekiwać odpowiedzi bota. Zobacz, jak obsługiwać przerwy użytkowników dla bota, który jest przeznaczony do obsługi niektórych typów przerw.

Wygasanie konwersacji

Czasami warto ponownie uruchomić konwersację od początku. Jeśli na przykład użytkownik nie odpowie po pewnym czasie. Różne metody zakończenia konwersacji obejmują:

  • Śledź czas ostatniego odebrania komunikatu od użytkownika i wyczyść stan, jeśli czas jest większy niż wstępnie skonfigurowana długość po otrzymaniu następnego komunikatu od użytkownika.
  • Użyj funkcji warstwy magazynu, takiej jak funkcja czas wygaśnięcia usługi Cosmos DB, aby wyczyścić stan po wstępnie skonfigurowanym czasie.

Aby uzyskać więcej informacji, zobacz jak wygaśnieć konwersację.

Następne kroki

Zarządzanie nawigacją użytkownika w oknach dialogowych i projektowanie przepływu konwersacyjnego w sposób, który umożliwia użytkownikom osiągnięcie swoich celów (nawet w sposób nieliniowy) jest podstawowym wyzwaniem dla projektowania botów. Artykuł na temat nawigacji bota projektowania zawiera przegląd niektórych typowych pułapek słabo zaprojektowanej nawigacji i omawia strategie unikania tych pułapek.