Projektowanie i sterowanie przepływem 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 wylądowali, 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 szukanie 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; w którym użytkownik prowadzi aktywną konwersację z botem.
Dobrze zaprojektowany bot będzie miał przepływ konwersacyjny, który czuje się naturalny. 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
Rozmowy 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 zadaje pytania w zdefiniowanej kolejności. Pytania można organizować w grupach logicznych, aby zachować kod cMicrosoft Entralized, jednocześnie koncentrując się na prowadzeniu konwersacji. Można na przykład zaprojektować jeden moduł zawierający logikę, która pomaga użytkownikowi przeglądać produkty i oddzielny moduł zawierający logikę, która ułatwia użytkownikowi utworzenie nowego zamówienia.
Możesz utworzyć strukturę tych modułów w dowolny sposób, począwszy od wolnego formularza do sekwencyjnego. Zestaw BOT Framework SDK 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.
W tradycyjnej aplikacji wszystko zaczyna się od głównego ekranu. Ekran główny wywołuje nowy ekran zamówienia . Nowy ekran zamówienia pozostaje w kontrolce do momentu zamknięcia lub wywołania innych ekranów, takich jak ekran wyszukiwania produktów. Jeśli nowy ekran zamówienia zostanie zamknięty, użytkownik zostanie zwrócony do ekranu głównego.
W botze korzystającym z 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 okno dialogowe nowego 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
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 przepływie konwersacji proceduralnej przy użyciu okien dialogowych użytkownik rozpocznie 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 po wybraniu jednego z wyników wyświetlonych w oknie dialogowym wyszukiwania produktów wywołają okno dialogowe nowego 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. Osoby nie zawsze komunikują się w kolejności sekwencyjnej. Mają tendencję do częstego zmieniania umysłów. Rozważmy następujący przykład:
Chociaż bot może być skoncentrowany na procedurach, użytkownik może zdecydować się zrobić 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 yes/no oczekiwanej przez bota. Jak powinien reagować bot?
- Nalegaj, aby użytkownik odpowiedział najpierw na pytanie.
- Zlekceważ wszystkie czynności wykonane wcześniej przez użytkownika, zresetuj cały stos okien dialogowych 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ć z tego miejsca.
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 rozsądnie oczekiwałby 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 upływie określonego czasu. Różne metody koń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 czasu wygaśnięcia usługi Cosmos DB, aby wyczyścić stan po wstępnie skonfigurowanym czasie.
Aby uzyskać więcej informacji, zobacz jak wygaśnąć konwersację.
Następne kroki
Zarządzanie nawigacją użytkownika w oknach dialogowych i projektowanie przepływu konwersacji w sposób, który umożliwia użytkownikom osiąganie swoich celów (nawet w sposób nieliniowy) jest podstawowym wyzwaniem w projektowaniu botów. Artykuł dotyczący nawigacji bota projektowania zawiera przegląd niektórych typowych pułapek słabej nawigacji zaprojektowanej i omówiono strategie unikania tych pułapek.