Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
DOTYCZY: SDK wersja 4
Okna dialogowe są dostępne w kilku różnych typach. W tym artykule opisano dialogi komponentów, wodospadowe i okna dialogowe promptó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 okien dialogowych adaptacyjnych.
Dialog wodospadowy definiuje sekwencję kroków, umożliwiając botowi poprowadzenie użytkownika przez proces liniowy. Te okna dialogowe są przeznaczone do pracy w kontekście dialogu składnika.
Okno dialogowe składnika to rodzaj okna dialogowego kontenera, które umożliwia oknom dialogowym w zestawie wywoływanie innych okien dialogowych w zestawie, takich jak okna 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 dialogowe itd. Okno dialogowe komponentu można zaprojektować tak, aby obsługiwało określone zadania i ponownie używać go w tym samym bocie lub w wielu botach.
Okna dialogowe z monitami (monity) to okna dialogowe przeznaczone do zapytywania użytkownika o określone typy informacji, takie jak liczba, data lub nazwa itd. Monitywy są przeznaczone do pracy z dialogami kaskadowymi w dialogu 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.
Dialog komponentu zapewnia strategię tworzenia niezależnych okien dialogowych do obsługi określonych scenariuszy, dzieląc duży zestaw okien dialogowych na łatwiejsze do zarządzania części. 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 okno dialogowe składnika, jak to zrobić.
Dialogi kaskadowe
Dialog kaskadowy to specyficzna implementacja dialogu, która jest często używana do zbierania informacji od użytkownika lub prowadzenia go 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 w modelu wodospadowym oraz operacje na stosie, które są wykonywane. Szczegółowe informacje na temat korzystania ze stosu okien dialogowych znajdują się poniżej w sekcji using dialogs (korzystanie z okien dialogowych ).
W krokach kaskadowych kontekst dialogu kaskadowego jest przechowywany w kontekście kroku kaskadowego. Kontekst kroku jest podobny do kontekstu dialogu i zapewnia dostęp do obecnego kontekstu i stanu tury. Obiekt kontekstu kroku kaskadowego umożliwia interakcję z zestawem okien dialogowych wewnątrz kroku kaskadowego.
Można obsłużyć wartość zwracaną z okna dialogowego w kroku kaskadowym w oknie dialogowym lub z poziomu programu obsługi włączania włączania bota, chociaż zazwyczaj wystarczy sprawdzić stan okna dialogowego, aby uzyskać wynik z logiki kolei bota. W kroku kaskadowym dialog zapewnia wartość zwracaną w właściwości wynik 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) będzie kontynuowana w następnym kroku okna dialogowego kaskadowego w tym samym czasie, umożliwiając botowi pominięcie określonego kroku w razie potrzeby.
Polecenia
Monity w bibliotece dialogów zapewniają łatwy sposób, aby poprosić użytkownika o informacje i ocenić jego 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ź z liczbą. Jeśli tak się stanie, konwersacja może się kontynuować, jeśli tak się nie stało, użytkownik zostanie ponownie poproszony o prawidłową odpowiedź.
Za kulisami, podpowiedzi są dwuetapowym dialogiem. Najpierw zostanie wyświetlony monit, aby podać dane wejściowe; następnie zwrócona zostanie prawidłowa wartość lub proces rozpocznie się od nowa z ponownym pytaniem.
Monity mają opcje, które pojawiają się po ich wywołaniu. Można w nich określić tekst monitu, monit ponowny w przypadku niepowodzenia walidacji oraz opcje odpowiedzi na monit. Ogólnie rzecz biorąc, właściwości monitu i ponawiania są działaniami, choć 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, że chcemy ustalić wielkość grupy za pomocą podpowiedzi liczby, ale ta wielkość musi być większa niż 2 i mniejsza niż 12. Monit najpierw sprawdza, czy otrzymał prawidłowy numer, a następnie uruchamia niestandardową walidację, jeśli została podana. Jeśli walidacja niestandardowa nie powiedzie się, poprosi użytkownika o ponowne wprowadzenie danych, jak pokazano powyżej.
Po zakończeniu działania monitu jawnie zwraca wynikową wartość, o którą proszono. Gdy ta wartość zostanie zwrócona, możemy mieć pewność, że przeszła zarówno wbudowaną weryfikację komunikatu, jak i wszelkie dodatkowe niestandardowe weryfikacje, które mogły zostać dostarczone.
Aby zapoznać się z przykładami dotyczącymi używania różnych monitów, zobacz, jak używać biblioteki okien dialogowych do zbierania danych wejściowych użytkownika.
Typy monitów
Za kulisami, podpowiedzi są dwuetapowym dialogiem. Najpierw zostanie wyświetlony monit o podanie danych wejściowych; następnie zwraca prawidłową wartość lub rozpoczyna od nowa z ponownym monitowaniem. Biblioteka okien dialogowych oferuje różne podstawowe wskazówki, z których każda służy do zbierania innego rodzaju odpowiedzi. Podstawowe polecenia mogą interpretować dane wejściowe języka naturalnego, takie jak "dziesięć" lub "tuzin" dla liczby, czy "jutro" lub "piątek o 10:00" dla daty i godziny.
Podpowiedź | Opis | Zwraca |
---|---|---|
Komunikat o załączniku | Prosi o co najmniej jeden załącznik, taki jak dokument lub obraz. | Kolekcja obiektów załączników . |
Wybór opcji | Prosi o wybór z zestawu opcji. | Znaleziony obiekt wyboru. |
Potwierdź monit | Prosi o potwierdzenie. | Wartość logiczna. |
Komunikat o dacie i godzinie | prosi o datę i godzinę. | Kolekcja obiektów rozwiązania daty i czasu. |
Monit o podanie numeru | Prosi o liczbę. | Wartość liczbowa. |
Monit tekstowy | Prosi o ogólne wprowadzenie tekstu. | Pewien ciąg. |
Aby wyświetlić monit o podanie 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. Możesz mieć niestandardowy moduł sprawdzania poprawności dla każdego monitu, a w przypadku niektórych monitów można określić domyślne ustawienia regionalne.
Monituj ustawienia regionalne
Lokalizacja jest używana do określania zachowania specyficznego dla języka w przypadku monitów: wyboru, potwierdzenia, daty i godziny oraz 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 domyślna lokalizacja żądania jest ustawiona, podając ją podczas wywołania konstruktora żądania lub ustawiając później, to właśnie ona jest używana. Jeśli żadna z tych ustawień regionalnych nie jest podana, język angielski ("en-us") jest używany jako ustawienia regionalne.
Locale to dwie, trzy lub cztery znaki kodu ISO 639, które reprezentują język lub rodzinę 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.
Majątek | Opis |
---|---|
Polecenie | Początkowe działanie, które ma wysłać użytkownika, aby poprosić o podanie danych wejściowych. |
Monit o ponowienie próby | Działanie wysyłania użytkownika, jeśli ich pierwsze dane wejściowe nie zostały zweryfikowane. |
Wybory | Lista opcji dla użytkownika do wykorzystania z komunikatem wyboru. |
walidacji | Dodatkowe parametry do użycia z niestandardowym walidatorem. |
styl | Określa sposób przedstawiania użytkownikowi opcji wyboru lub zapytania potwierdzającego. |
Zawsze należy określić początkowy monit do wysłania do użytkownika oraz monit powtórkowy w sytuacjach, gdy dane wejściowe użytkownika nie zostaną zweryfikowane.
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.
Zatwierdzenie promptu
Możesz zweryfikować odpowiedź monitu przed zwróceniem wartości do następnego kroku kaskadowego. Funkcja walidatora ma parametr kontekstu walidatora 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:
Majątek | Opis |
---|---|
kontekst | Kontekst aktualnej interakcji bota. |
Rozpoznawane | Wynik rozpoznawania monitu zawierający informacje o wejściu użytkownika, przetworzone przez rozpoznający. |
Opcje | Zawiera opcje monitu podane w wywołaniu w celu uruchomienia monitu. |
Wynik rozpoznawania monitu ma następujące właściwości:
Majątek | Opis |
---|---|
Powodzenie | Wskazuje, czy rozpoznawarka była w stanie przeanalizować dane wejściowe. |
Wartość | Wartość zwracana przez rozpoznawarkę. W razie potrzeby kod weryfikacji może zmodyfikować tę wartość. |
Korzystanie z okien dialogowych
Dialogi można traktować jako stos programowy, który nazywamy stosem dialogów, z obsługą przesunięć jako elementem, którego zadaniem jest kierowanie nim oraz służącym jako zapasowy, jeśli stos jest pusty. Najbardziej górny element w 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, zostaje ono dodane do stosu i staje się teraz aktywnym dialogiem. Pozostaje aktywnym oknem dialogowym, dopóki nie zakończy się, zostanie usunięte przez metodę wymiany okna dialogowego lub inne okno dialogowe zostanie dodane do stosu (przez mechanizm obsługi tur lub aktywne okno dialogowe) i stanie się aktywnym oknem dialogowym. Po zakończeniu tego nowego dialogu zostanie on usunięty ze stosu, a następny dialog stanie się aktywnym dialogiem. Umożliwia to powtarzanie okna dialogowego lub rozgałęzianie konwersacji omówionej poniżej.
Możesz rozpocząć lub kontynuować okno dialogowe główne za pomocą metody rozszerzenia run. W kodzie bota wywołanie metody rozszerzenia uruchamiania dialogu kontynuuje istniejący dialog lub uruchamia nową instancję dialogu, jeśli stos jest pusty. Kontrolka i dane wejściowe użytkownika przechodzą do aktywnego okna dialogowego na stosie.
Metoda uruchamiania wymaga akcesora właściwości stanu do 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ść na podstawie stanu konwersacji. Szczegółowe informacje na temat zarządzania stanem można znaleźć w temacie zarządzania stanem, a użycie stanu okna dialogowego jest wyświetlane w instrukcji sekwencyjnego przepływu konwersacji .
W oknie dialogowym masz dostęp do kontekstu okna dialogowego i możesz go użyć do uruchamiania innych okien dialogowych, kończenia bieżącego okna dialogowego i wykonywania innych operacji.
Aby uruchomić okno dialogowe
W kaskadowym dialogu przekaż identyfikator dialogu, który chcesz rozpocząć, do kontekstu dialogu kaskadowego, używając metody rozpoczęcia dialogu, monitu lub zastąpienia dialogu.
- Metody wywołania i rozpoczęcia dialogu umieszczą nowe wystąpienie odniesionego dialogu na szczycie stosu.
- Metoda zamiany okna dialogowego usunie bieżące okno dialogowe ze stosu i doda nowe okno dialogowe do stosu. Zastąpione 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. Opcje przekazywane do nowego okna dialogowego są dostępne poprzez właściwość opcji kontekstu kroku na każdym etapie okna dialogowego. Aby uzyskać więcej informacji, zobacz jak utworzyć zaawansowany przepływ konwersacji przy użyciu gałęzi i pętli.
Aby kontynuować dialog
W dialogu kaskadowym użyj właściwości wartości kontekstu kroku, aby utrwalić stan między krokami. Każda wartość dodana do tej kolekcji w poprzedniej turze jest dostępna w kolejnych turach. 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 ramach dialogu kaskadowego użyj metody zakończyć dialog, aby zakończyć dialog, usuwając go ze stosu. Metoda zakończ dialog może zwrócić opcjonalny wynik do kontekstu nadrzędnego (takiego jak okno dialogowe, które go wywołało, lub obsługę tury bota). Jest to najczęściej wywoływane z poziomu okna dialogowego, aby zakończyć bieżące wystąpienie samego.
Możesz wywołać metodę zakończenia dialogu z dowolnego miejsca, w którym masz kontekst dialogu, ale dla bota będzie to wyglądać, jakby została wywołana z bieżącego aktywnego dialogu.
Wskazówka
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 usunąć wszystkie okna dialogowe ze stosu, możesz wyczyścić stos dialogów, wywołując metodę anuluj wszystkie okna dialogowe kontekstu dialogowego.
Powtarzanie okna dialogowego
Można zamienić okno dialogowe na to samo, tworząc pętlę, przy użyciu metody zamień okno dialogowe. Jest to doskonały sposób obsługi złożonych interakcji i jednej techniki zarządzania menu.
Uwaga / Notatka
Jeśli musisz utrwalić stan wewnętrzny bieżącego okna dialogowego, musisz przekazać informacje do nowego wystąpienia okna dialogowego w wywołaniu metody zamiany okna dialogowego , a następnie odpowiednio zainicjować okno dialogowe.
Rozgałęzij konwersację
Kontekst dialogu utrzymuje stos dialogów i dla każdego dialogu na stosie śledzi, jaki krok będzie następny. Metoda rozpoczęcia dialogu tworzy element podrzędny i umieszcza to okno dialogowe na wierzchu stosu, a metoda zakończenia dialogu usuwa górne okno dialogowe ze stosu. End dialog jest zwykle wywoływane w ramach okna dialogowego, które się kończy.
Okno dialogowe może uruchomić nowe okno dialogowe w tym samym zestawie okien dialogowych, wywołując metodę rozpoczęcia okna dialogowego i podając identyfikator nowego okna dialogowego, co powoduje, że nowe okno dialogowe jest obecnie aktywne. Oryginalne okno dialogowe jest nadal w stosie, ale wywołania metody kontekstu okna dialogowego kontynuuj dialog są wysyłane tylko do okna dialogowego, które znajduje się na szczycie stosu, aktywne okno dialogowe. Gdy okno dialogowe zostanie zwinięte ze stosu, kontekst okna dialogowego zostanie wznowiony z następnym krokiem kaskadowego 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 dialogu, który może warunkowo wybrać dialog do rozpoczęcia z zestawu dostępnych dialogów.
Dodatkowe informacje
- Aby uzyskać więcej informacji na temat okien dialogowych adaptacyjnych, zobacz wprowadzenie do okien dialogowych adaptacyjnych.
- Aby uzyskać informacje o umiejętnościach, zobacz informacje o umiejętnościach.