Informacje o oknach dialogowych składników i kaskadowych

DOTYCZY: Zestaw SDK w wersji 4

Okna dialogowe są dostępne w kilku różnych typach. W tym artykule opisano składniki, kaskadowe i okna dialogowe monitów. Aby uzyskać ogólne informacje o oknach dialogowych, zobacz artykuł dotyczący biblioteki okien dialogowych . Aby uzyskać informacje o oknach dialogowych adaptacyjnych, zobacz wprowadzenie do dialogów adaptacyjnych.

Okno dialogowe kaskadowe (lub kaskadowe) definiuje sekwencję kroków, umożliwiając botowi przeprowadzenie użytkownika przez proces liniowy. Te okna dialogowe są przeznaczone do pracy w kontekście okna dialogowego składnika.

Okno dialogowe składnika jest typem okna dialogowego kontenera, które umożliwia okno dialogowe w zestawie do wywoływania innych okien dialogowych w zestawie, takich jak okno dialogowe kaskadowe wywołujące monity lub inne okno dialogowe kaskadowe. Okna dialogowe składników zarządzają zestawem okien dialogowych podrzędnych , takich jak okna dialogowe kaskadowe, monity itd. Okno dialogowe składnika można zaprojektować w celu obsługi określonych zadań i ponownego użycia go w tym samym botze lub wielu botach.

Okna dialogowe monitów (monity) to okna dialogowe przeznaczone do monitowania użytkownika o określone typy informacji, takie jak liczba, data lub nazwa itd. Monity są przeznaczone do pracy z oknami dialogowymi kaskadowymi w oknie dialogowym składnika.

Okna dialogowe składników

Czasami chcesz napisać okno dialogowe wielokrotnego użytku, które ma być używane w różnych scenariuszach, na przykład okno dialogowe adresu, które prosi użytkownika o podanie wartości dla ulicy, miasta i kodu pocztowego.

Okno dialogowe składników zapewnia strategię tworzenia niezależnych okien dialogowych w celu obsługi określonych scenariuszy, co pozwala na podzielenie dużego okna dialogowego na bardziej zarządzane elementy. Każdy z tych elementów ma własny zestaw okien dialogowych i unika kolizji nazw z zestawem dialogowym, który go zawiera. Aby uzyskać więcej informacji, zobacz instrukcje w oknie dialogowym składnika.

Okna dialogowe kaskadowe

Okno dialogowe kaskadowe to konkretna implementacja okna dialogowego, które jest często używane do zbierania informacji od użytkownika lub kierowania użytkownika przez serię zadań. Każdy krok konwersacji jest implementowany jako funkcja asynchroniczna, która przyjmuje parametr kontekstu kroku kaskadowego (step). W każdym kroku bot monituje użytkownika o podanie danych wejściowych (lub może rozpocząć okno dialogowe podrzędne, ale często jest to monit), czeka na odpowiedź, a następnie przekazuje wynik do następnego kroku. Wynik pierwszej funkcji jest przekazywany jako argument do następnej funkcji itd.

Na poniższym diagramie przedstawiono sekwencję kroków kaskadowych i wykonywanych operacji stosu. Szczegółowe informacje na temat korzystania ze stosu okien dialogowych znajdują się poniżej w sekcji using dialogs (Używanie okien dialogowych ).

Reprezentacja sposobu mapowania komunikatów na kroki kaskadowe.

W krokach kaskadowych kontekst okna dialogowego kaskadowego jest przechowywany w kontekście kroku kaskadowego. Kontekst kroku jest podobny do kontekstu okna dialogowego i zapewnia dostęp do bieżącego kontekstu i stanu kolei. Obiekt kontekstu kroku kaskadowego umożliwia interakcję z zestawem okien dialogowych z poziomu kroku kaskadowego.

Wartość zwracaną z okna dialogowego można obsługiwać w kroku kaskadowym w oknie dialogowym lub w programie obsługi włączania włączania bota, chociaż zazwyczaj wystarczy sprawdzić stan okna dialogowego, aby uzyskać wynik z logiki kolei bota. W kroku kaskadowym okno dialogowe zawiera wartość zwracaną we właściwości wyniku kontekstu kroku kaskadowego.

Właściwości kontekstu kroku kaskadowego

Kontekst kroku kaskadowego zawiera następujące właściwości:

  • Opcje: zawiera informacje wejściowe dla okna dialogowego.
  • Wartości: zawiera informacje, które można dodać do kontekstu i są przenoszone do kolejnych kroków.
  • Wynik: zawiera wynik z poprzedniego kroku.

Ponadto następna metoda (NextAsync w języku C#, następna w językach JavaScript i Python) kontynuuje kolejny krok okna dialogowego kaskadowego w tym samym kroku, umożliwiając botowi pominięcie określonego kroku w razie potrzeby.

Monity

Monity w bibliotece okien dialogowych zapewniają łatwy sposób, aby poprosić użytkownika o informacje i ocenić ich odpowiedź. Na przykład w przypadku monitu o liczbę należy określić pytanie lub informacje, o które prosisz, a monit automatycznie sprawdza, czy otrzymał prawidłową odpowiedź liczbową. Jeśli tak się stanie, konwersacja może kontynuować; Jeśli tak nie jest, zostanie ponownie przeprowizduje użytkownika, aby uzyskać prawidłową odpowiedź.

W tle monity są dwuetapowym dialogiem. Najpierw zostanie wyświetlony monit o podanie danych wejściowych; Po drugie zwraca prawidłową wartość lub zaczyna się od góry z repromptem.

Monity mają opcje monitu podane po wywołaniu monitu, w którym można określić tekst do wyświetlenia monitu, monit ponawiania próby w przypadku niepowodzenia walidacji i opcje odpowiedzi na monit. Ogólnie rzecz biorąc, właściwości monitu i ponawiania są działaniami, chociaż istnieje pewne różnice w sposobie obsługi tego polecenia w różnych językach programowania.

Ponadto możesz dodać niestandardową walidację monitu podczas jego tworzenia. Załóżmy na przykład, że chcemy uzyskać rozmiar strony przy użyciu monitu o numer, ale rozmiar tej partii musi być większy niż 2 i mniejszy niż 12. Monit najpierw sprawdza, czy otrzymał prawidłową liczbę, a następnie uruchamia niestandardową walidację, jeśli została podana. Jeśli weryfikacja niestandardowa nie powiedzie się, zostanie ponownie przeprowizduje użytkownika, jak pokazano powyżej.

Po zakończeniu monitu jawnie zwraca wynikową wartość, o którą prosino. Po zwróceniu tej wartości możemy mieć pewność, że została ona przekazana zarówno przez wbudowaną weryfikację monitu, jak i wszelkie dodatkowe weryfikacje niestandardowe, które mogły zostać podane.

Aby zapoznać się z przykładami dotyczącymi korzystania z różnych monitów, zobacz, jak używać biblioteki okien dialogowych do zbierania danych wejściowych użytkownika.

Typy monitów

W tle monity są dwuetapowym dialogiem. Najpierw zostanie wyświetlony monit o podanie danych wejściowych; Po drugie zwraca prawidłową wartość lub uruchamia się ponownie od góry z repromptem. Biblioteka okien dialogowych oferuje różne podstawowe monity, z których każdy jest używany do zbierania innego typu odpowiedzi. Podstawowe monity mogą interpretować dane wejściowe języka naturalnego, takie jak "dziesięć" lub "tuzin" dla liczby, "jutro" lub "piątek o godzinie 10:00" dla daty i godziny.

Monit Opis Zwraca
Monit o załącznik Pyta o co najmniej jeden załącznik, taki jak dokument lub obraz. Kolekcja obiektów załączników .
Monit o wybór Pyta o wybór z zestawu opcji. Znaleziony obiekt wyboru.
Potwierdź monit Prosi o potwierdzenie. Wartość logiczna.
Monit o datę i godzinę Pyta o datę i godzinę. Kolekcja obiektów rozpoznawania daty i godziny .
Monit o podanie numeru Pyta o liczbę. Wartość liczbowa.
Wiersz tekstu Pyta o ogólne wprowadzanie tekstu. Ciąg.

Aby monitować użytkownika o wprowadzenie danych wejściowych, zdefiniuj monit przy użyciu jednej z wbudowanych klas, takich jak monit tekstowy, i dodaj go do zestawu okien dialogowych. Monity mają stałe identyfikatory, które muszą być unikatowe w zestawie okien dialogowych. Dla każdego monitu można mieć niestandardowy moduł sprawdzania poprawności, a w przypadku niektórych monitów można określić domyślne ustawienia regionalne.

Monituj ustawienia regionalne

Ustawienia regionalne służą do określania wybranego zachowania specyficznego dla języka, potwierdzenia, daty i godziny oraz monitów o liczbę . W przypadku danych wejściowych od użytkownika, jeśli kanał podał właściwość ustawień regionalnych w komunikacie użytkownika, jest to używane. W przeciwnym razie, jeśli ustawiono domyślne ustawienia regionalne monitu, podając je podczas wywoływania konstruktora monitu lub przez ustawienie go później, to jest ono używane. Jeśli żadna z tych ustawień regionalnych nie jest podana, język angielski ("en-us") jest używany jako ustawienia regionalne.

Ustawienia regionalne to dwa, trzy lub cztery znaki kodu ISO 639, który reprezentuje rodzinę języków lub języków.

Opcje monitu

Drugi parametr metody monitu kontekstu kroku przyjmuje obiekt opcji monitu , który ma następujące właściwości.

Właściwość Opis
Monit Początkowe działanie wysyłania użytkownika, aby poprosić o podanie danych wejściowych.
Monit o ponowienie próby Działanie wysyłające użytkownika, jeśli ich pierwsze dane wejściowe nie zostały zweryfikowane.
Choices Lista opcji wyboru dla użytkownika do wyboru, do użycia z monitem wyboru.
Weryfikacje Dodatkowe parametry do użycia z niestandardowym modułem sprawdzania poprawności.
Stylu Określa sposób wyświetlania użytkownikowi opcji wyboru lub monitu o potwierdzenie.

Zawsze należy określić początkowe działanie monitu do wysłania do użytkownika, a ponawianie próby dla wystąpień, gdy dane wejściowe użytkownika nie są weryfikowane.

Jeśli dane wejściowe użytkownika są nieprawidłowe, zostanie wysłany monit o ponowienie próby do użytkownika; Jeśli nie określono ponawiania próby, zostanie użyty początkowy monit. Jeśli jednak działanie jest wysyłane z powrotem do użytkownika z poziomu modułu sprawdzania poprawności, nie zostanie wysłany żaden monit o ponowienie próby.

Monituj o walidację

Przed zwróceniem wartości do następnego kroku kaskadowego możesz zweryfikować odpowiedź z monitem. Funkcja modułu sprawdzania poprawności ma parametr kontekstu modułu sprawdzania poprawności monitu i zwraca wartość logiczną wskazującą, czy dane wejściowe przechodzą walidację. Kontekst modułu sprawdzania poprawności monitu zawiera następujące właściwości:

Właściwość Opis
Kontekst Bieżący kontekst kolei bota.
Rozpoznawane Wynik rozpoznawania monitu zawierający informacje o danych wejściowych użytkownika przetwarzanych przez aparat rozpoznawania.
Opcje Zawiera opcje monitu , które zostały podane w wywołaniu w celu uruchomienia monitu.

Wynik aparatu rozpoznawania monitu ma następujące właściwości:

Właściwość Opis
Powodzenie Wskazuje, czy aparat rozpoznawania mógł przeanalizować dane wejściowe.
Wartość Wartość zwracana z rozpoznawania. W razie potrzeby kod weryfikacji może zmodyfikować tę wartość.

Korzystanie z okien dialogowych

Okna dialogowe można traktować jako stos programowy, który nazywamy stosem okien dialogowych, z programem obsługi kolei jako elementem kierującym go i służąc jako rezerwowy, jeśli stos jest pusty. Najbardziej górny element na tym stosie jest uważany za aktywne okno dialogowe, a kontekst okna dialogowego kieruje wszystkie dane wejściowe do aktywnego okna dialogowego.

Po rozpoczęciu okna dialogowego jest on wypychany do stosu i jest teraz aktywnym dialogiem. Pozostaje to aktywne okno dialogowe, dopóki nie zostanie zakończone, zostanie usunięte przez metodę wymiany okna dialogowego lub inne okno dialogowe zostanie wypchnięte do stosu (przez program obsługi kolei lub aktywne okno dialogowe) i staje się aktywnym oknom dialogowym. Po zakończeniu tego nowego okna dialogowego pojawi się stos, a następne okno dialogowe ponownie stanie się aktywnym dialogem. Umożliwia to powtarzanie okna dialogowego lub rozgałęzianie konwersacji omówionej poniżej.

Możesz rozpocząć lub kontynuować okno dialogowe katalogu głównego przy użyciu metody rozszerzenia okna dialogowego uruchamiania . W kodzie bota wywoływanie metody rozszerzenia uruchamiania okna dialogowego kontynuuje istniejące okno dialogowe lub uruchamia nowe wystąpienie okna dialogowego, jeśli stos jest obecnie pusty. Kontrolka i dane wejściowe użytkownika przechodzą do aktywnego okna dialogowego na stosie.

Metoda uruchamiania wymaga dostępu do właściwości stanu w celu uzyskania dostępu do stanu okna dialogowego. Metoda dostępu jest tworzona i używana w taki sam sposób jak inne metody dostępu stanu, ale jest tworzona jako własna właściwość oparta na stanie konwersacji. Szczegółowe informacje na temat zarządzania stanem można znaleźć w temacie zarządzaniem stanem, a użycie stanu okna dialogowego jest wyświetlane w sekwencyjnym przepływie konwersacji .

W oknie dialogowym masz dostęp do kontekstu okna dialogowego i możesz użyć go do uruchamiania innych okien dialogowych, kończenia bieżącego okna dialogowego i wykonywania innych operacji.

Aby uruchomić okno dialogowe

W oknie dialogowym kaskadowym przekaż identyfikator okna dialogowego okna dialogowego , które chcesz rozpocząć w kontekście okna dialogowego kaskadowego, używając okna dialogowego rozpoczęcia, monitu lub metody okna dialogowego zamieniania .

  • Metody monitu i rozpoczęcia okna dialogowego wypchną nowe wystąpienie okna dialogowego, do których odwołuje się odwołanie, na początku stosu.
  • Metoda zamiany okna dialogowego spowoduje wyskakujące bieżące okno dialogowe z stosu i wypchnięcie okna dialogowego zastępowania do stosu. Zamienione okno dialogowe zostanie anulowane, a wszystkie informacje zawarte w wystąpieniu zostaną usunięte.

Użyj parametru options , aby przekazać informacje do nowego wystąpienia okna dialogowego. Dostęp do opcji przekazywanych do nowego okna dialogowego można uzyskać za pośrednictwem właściwości opcje kontekstu kroku w dowolnym kroku okna dialogowego. Aby uzyskać więcej informacji, zobacz jak utworzyć zaawansowany przepływ konwersacji przy użyciu gałęzi i pętli.

Aby kontynuować okno dialogowe

W oknie dialogowym kaskadowym użyj właściwości wartości kontekstu kroku, aby utrwały stan między zwrotami. Każda wartość dodana do tej kolekcji w poprzednim kroku jest dostępna w kolejnych zwrotach. Aby uzyskać więcej informacji, zobacz jak utworzyć zaawansowany przepływ konwersacji przy użyciu gałęzi i pętli.

Aby zakończyć okno dialogowe

W oknie dialogowym kaskadowym użyj metody końcowego okna dialogowego , aby zakończyć okno dialogowe, wyskakując go z stosu. Metoda końcowego okna dialogowego może zwrócić opcjonalny wynik do kontekstu nadrzędnego (takiego jak okno dialogowe, które go nazwało, lub program obsługi kolei bota). Jest to najczęściej wywoływane z poziomu okna dialogowego, aby zakończyć bieżące wystąpienie samego siebie.

Metodę okna dialogowego zakończenia można wywołać z dowolnego miejsca, w którym istnieje kontekst okna dialogowego, ale będzie on widoczny dla bota, który został wywołany z bieżącego aktywnego okna dialogowego.

Porada

Najlepszym rozwiązaniem jest jawne wywołanie metody końcowego okna dialogowego na końcu okna dialogowego.

Aby wyczyścić wszystkie okna dialogowe

Jeśli chcesz wyskakować wszystkie okna dialogowe poza stosem, możesz wyczyścić stos okien dialogowych, wywołując metodę anulowania wszystkich okien dialogowych kontekstu okna dialogowego .

Powtarzanie okna dialogowego

Możesz zastąpić okno dialogowe samym sobą, tworząc pętlę, za pomocą metody zamieniania okna dialogowego . Jest to doskonały sposób obsługi złożonych interakcji i jednej techniki zarządzania menu.

Uwaga

Jeśli musisz utrwalić stan wewnętrzny bieżącego okna dialogowego, musisz przekazać informacje do nowego wystąpienia okna dialogowego w wywołaniu metody zamieniania okna dialogowego , a następnie odpowiednio zainicjować okno dialogowe.

Rozgałęzij konwersację

Kontekst okna dialogowego obsługuje stos okien dialogowych i dla każdego okna dialogowego na stosie, śledzi następny krok. Metoda rozpoczynania okna dialogowego tworzy element podrzędny i wypycha to okno dialogowe na górę stosu, a jego metoda okna dialogowego końcowego powoduje wyskakujące górne okno dialogowe z stosu. Okno dialogowe zakończenia jest zwykle wywoływane z poziomu okna dialogowego, które kończy się.

Okno dialogowe może uruchomić nowe okno dialogowe w tym samym zestawie okien dialogowych, wywołując metodę rozpoczynania okna dialogowego kontekstu okna dialogowego i podając identyfikator nowego okna dialogowego, co powoduje, że nowe okno dialogowe jest aktualnie aktywne. Oryginalne okno dialogowe jest nadal w stosie, ale wywołania metody kontynuowania okna dialogowego kontekstu okna dialogowego są wysyłane tylko do okna dialogowego, które znajduje się na stosie, aktywne okno dialogowe. Gdy okno dialogowe zostanie wyskoczone ze stosu, kontekst okna dialogowego zostanie wznowiony z następnym krokiem kaskady na stosie, w którym został wyłączony z oryginalnego okna dialogowego.

W związku z tym można utworzyć gałąź w przepływie konwersacji, dołączając krok w jednym oknie dialogowym, które może warunkowo wybrać okno dialogowe, aby rozpocząć od zestawu dostępnych okien dialogowych.

Dodatkowe informacje