O komponentách a vodopádových dialogech

PLATÍ PRO: SDK v4

Dialogy mají několik různých typů. Tento článek popisuje dialogová okna komponent, vodopádů a výzev. Obecné informace o dialogových oknech najdete v článku o knihovně dialogů . Informace o adaptivních dialogech najdete v úvodu k adaptivním dialogům.

Vodopádový dialog (nebo vodopád) definuje posloupnost kroků, což vašemu robotovi umožňuje řídit uživatele lineárním procesem. Tyto dialogy jsou navržené tak, aby fungovaly v kontextu dialogového okna komponenty.

Dialogové okno komponenty je typ dialogového okna kontejneru, který umožňuje dialogům v sadě volat další dialogy, jako je například dialogové okno vodopádového volání výzvy nebo jiné vodopádové dialogové okno. Dialogy komponent spravují sadu podřízených dialogů, jako jsou vodopádové dialogy, výzvy atd. Dialogové okno komponenty můžete navrhnout tak, aby zpracovával konkrétní úlohy a opakovaně ho používal ve stejném robotovi nebo ve více robotech.

Dialogy s výzvou (výzvy) jsou dialogy navržené tak, aby uživatele požádaly o konkrétní typy informací, jako je číslo, datum nebo jméno atd. Výzvy jsou navržené tak, aby fungovaly s vodopádovými dialogy v dialogovém okně komponenty.

Dialogy komponent

Někdy chcete napsat opakovaně použitelné dialogové okno, které chcete použít v různých scénářích, jako je dialogové okno adresy, které uživatele požádá o zadání hodnot pro ulici, město a PSČ.

Dialogové okno komponent poskytuje strategii pro vytváření nezávislých dialogových oken pro zpracování konkrétních scénářů a rozdělení velkého dialogového okna na více spravovatelných částí. Každá z těchto částí má vlastní sadu dialogových oken a zabraňuje kolizím názvů se sadou dialogových oken, která ji obsahuje. Další informace najdete v dialogovém okně komponent, jak na to.

Vodopádové dialogy

Vodopádový dialog je specifická implementace dialogového okna, která se běžně používá ke shromažďování informací od uživatele nebo průvodce uživatelem prostřednictvím řady úkolů. Každý krok konverzace se implementuje jako asynchronní funkce, která přijímá parametr kontextu vodopádového kroku (step). V každém kroku robot vyzve uživatele k zadání vstupu (nebo může zahájit podřízené dialogové okno, ale to je často výzva), čeká na odpověď a pak předá výsledek dalšímu kroku. Výsledek první funkce se předá jako argument do další funkce atd.

Následující diagram znázorňuje posloupnost vodopádových kroků a operací zásobníku, které probíhají. Podrobnosti o použití zásobníku dialogových oken najdete níže v části použití dialogových oken .

Znázornění mapování zpráv na vodopádové kroky

V rámci vodopádových kroků je kontext vodopádového dialogového okna uložen v kontextu vodopádového kroku. Kontext kroku je podobný kontextu dialogového okna a poskytuje přístup k aktuálnímu kontextu a stavu otáčení. Kontextový objekt vodopádového kroku slouží k interakci s dialogovou sadou v rámci vodopádového kroku.

Návratovou hodnotu z dialogového okna můžete zpracovat buď v rámci vodopádového kroku v dialogovém okně, nebo z obslužné rutiny zapnutí robota, i když obecně potřebujete zkontrolovat stav dialogového okna a výsledek z logiky otáčení robota. V rámci vodopádového kroku dialogové okno poskytuje návratovou hodnotu ve vlastnosti výsledku vodopádového kroku.

Vlastnosti kontextu vodopádového kroku

Kontext vodopádového kroku obsahuje následující vlastnosti:

  • Možnosti: obsahuje vstupní informace pro dialogové okno.
  • Hodnoty: obsahuje informace, které můžete přidat do kontextu, a přenese se do dalších kroků.
  • Výsledek: obsahuje výsledek z předchozího kroku.

Další metoda (NextAsync v jazyce C#, další v JavaScriptu a Pythonu) navíc pokračuje k dalšímu kroku vodopádového dialogového okna ve stejném kroku a v případě potřeby umožní robotovi přeskočit určitý krok.

Pobídky

Výzvy v knihovně dialogových oken poskytují snadný způsob, jak uživatele požádat o informace a vyhodnotit jejich odpověď. Například u výzvy k zadání čísla zadáte otázku nebo informace, které požadujete, a výzva automaticky zkontroluje, jestli obdržel platnou odpověď na číslo. Pokud ano, konverzace může pokračovat; pokud ne, přepíše uživatele na platnou odpověď.

Na pozadí jsou výzvy dvoustupňové dialogové okno. Nejprve se zobrazí výzva k zadání vstupu; druhá, vrátí platnou hodnotu nebo začíná od začátku s překryvným kódem.

Výzvy obsahují možnosti výzvy , které se zobrazí při zavolání výzvy, což je místo, kde můžete zadat text, se kterým se má výzva zobrazovat, a možnost volby pro odpověď na výzvu. Obecně platí, že vlastnosti výzvy a výzvy k opakování jsou aktivity, i když existuje určitá varianta způsobu zpracování v různých programovacích jazycích.

Kromě toho můžete při vytváření výzvy přidat vlastní ověření. Řekněme například, že chceme získat velikost strany pomocí výzvy k zadání čísla, ale tato velikost strany musí být větší než 2 a menší než 12. Výzva nejprve zkontroluje, jestli obdržel platné číslo, a pak spustí vlastní ověření, pokud je k dispozici. Pokud se vlastní ověření nezdaří, uživatele přepíše jako výše.

Po dokončení výzvy explicitně vrátí výslednou hodnotu, která byla požádána. Když se tato hodnota vrátí, můžeme si být jistí, že předala integrované ověření výzvy i jakékoli další vlastní ověření, které mohlo být zadáno.

Příklady použití různých výzev se podívejte, jak pomocí knihovny dialogových oken shromáždit uživatelský vstup.

Typy výzvy

Na pozadí jsou výzvy dvoustupňové dialogové okno. Nejprve se zobrazí výzva k zadání vstupu; za druhé vrátí platnou hodnotu nebo se restartuje shora pomocí překryvné hodnoty. Knihovna dialogových oken nabízí různé základní výzvy, které se používají ke shromažďování jiného typu odpovědi. Základní výzvy můžou interpretovat vstup přirozeného jazyka, například "deset" nebo "desítka" pro číslo nebo "zítra" nebo "pátek v 10 hodinách" pro datum a čas.

Výzva Description Návraty
Výzva k příloze Žádá o jednu nebo více příloh, jako je dokument nebo obrázek. Kolekce objektů příloh .
Výzva k volbě Žádá o výběr ze sady možností. Nalezený objekt výběru.
Potvrzení výzvy Požádá o potvrzení. Logická hodnota
Výzva k datu a času Požádá o datum a čas. Kolekce objektů rozlišení data a času .
Výzva k zadání čísla Požádá o číslo. Číselná hodnota.
Výzva k zadání textu Žádá o obecné textové zadání. Řetězec.

Pokud chcete uživatele vyzvat k zadání vstupu, definujte výzvu pomocí jedné z předdefinovaných tříd, jako je například výzva k zadání textu, a přidejte ji do sady dialogových oken. Výzvy obsahují pevné ID, které musí být jedinečné v rámci sady dialogových oken. Pro každou výzvu můžete mít vlastní validátor a u některých výzev můžete zadat výchozí národní prostředí.

Výzva k národnímu prostředí

Národní prostředí slouží k určení chování specifického jazyka podle volby, potvrzení, data a času a výzvy k číselám . U jakéhokoli zadaného vstupu od uživatele, pokud kanál zadal vlastnost národního prostředí ve zprávě uživatele, použije se. V opačném případě, pokud je výchozí národní prostředí výzvy nastaveno tak, že ji zadáte při volání konstruktoru výzvy nebo ho nastavíte později, použije se. Pokud není k dispozici žádná z těchto národních prostředí, použije se angličtina ("en-us") jako národní prostředí.

Národní prostředí je kód ISO 639 se dvěma, třemi nebo čtyřmi znaky, který představuje jazyk nebo jazykovou řadu.

Možnosti výzvy

Druhý parametr metody výzvy kontextu kroku přebírá objekt možností výzvy , který má následující vlastnosti.

Vlastnost Popis
Výzva Počáteční aktivita pro odeslání uživatele, aby požádala o svůj vstup.
Výzva k opakování Aktivita pro odeslání uživatele, pokud se první vstup neověřil.
Choices Seznam voleb pro uživatele, ze kterých si má vybrat, pro použití s výzvou k výběru.
Ověřování Další parametry, které se mají použít s vlastním validátorem
Styl Definuje způsob zobrazení voleb výzvy k výběru nebo potvrzení výzvy uživateli.

Vždy byste měli zadat počáteční aktivitu výzvy, která se má uživateli odeslat, a po ověření vstupu uživatele by se měla zobrazit výzva k opakování instancí.

Pokud vstup uživatele není platný, odešle se uživateli výzva k opakování; pokud nebylo zadáno žádné opakování, použije se počáteční výzva. Pokud se ale aktivita odešle zpět uživateli z validátoru, nebude odeslána žádná výzva k opakování.

Ověření výzvy

Před vrácením hodnoty do dalšího kroku vodopádu můžete ověřit odpověď výzvy. Funkce validátoru má parametr kontextu validátoru výzvy a vrátí logickou hodnotu označující, jestli vstup předává ověření. Kontext validátoru výzvy obsahuje následující vlastnosti:

Vlastnost Popis
Kontext Aktuální kontext otáčení robota.
Rozpoznaný Výsledek rozpoznávání výzvy, který obsahuje informace o vstupu uživatele, jak ho zpracoval rozpoznávatel.
Možnosti Obsahuje možnosti výzvy , které byly k dispozici ve volání pro spuštění výzvy.

Výsledek rozpoznávání výzvy má následující vlastnosti:

Vlastnost Popis
Úspěšný Určuje, jestli byl rozpoznán schopen analyzovat vstup.
Hodnota Vrácená hodnota od rozpoznávatele. V případě potřeby může ověřovací kód tuto hodnotu upravit.

Použití dialogů

Dialogy se dají považovat za programový zásobník, který nazýváme zásobník dialogových oken, a obslužnou rutinu otáčení jako obslužnou rutinu, která ji směruje a slouží jako náhradní, pokud je zásobník prázdný. Nejdůležitější položka v tomto zásobníku se považuje za aktivní dialogové okno a kontext dialogového okna směruje všechny vstupy do aktivního dialogového okna.

Když se otevře dialogové okno, vloží se do zásobníku a teď je aktivní dialogové okno. Zůstane aktivní dialogové okno, dokud se neskončí, odebere se metodou dialogového okna nahrazení nebo se do zásobníku nasdílí jiné dialogové okno (buď obslužnou rutinou turn, nebo aktivním dialogem samotným) a stane se aktivním dialogem. Po skončení nového dialogového okna se rozbalí zásobník a dalším dialogem se znovu změní na aktivní dialogové okno. To umožňuje opakování dialogového okna nebo větvení konverzace, které jsou popsány níže.

Můžete začít nebo pokračovat v kořenovém dialogovém okně pomocí metody rozšíření dialogového okna spustit . Z kódu robota volání metody rozšíření pro spuštění dialogového okna buď pokračuje v existujícím dialogovém okně, nebo spustí novou instanci dialogového okna, pokud je zásobník aktuálně prázdný. Ovládací prvek a uživatelský vstup přejde do aktivního dialogového okna v zásobníku.

Metoda spuštění vyžaduje přístup k stavu dialogového okna pomocí přístupového objektu vlastnosti stavu. Příslušenství se vytvoří a použije stejným způsobem jako jiné přístupové objekty stavu, ale vytvoří se jako vlastní vlastnost založená na stavu konverzace. Podrobnosti o správě stavu najdete v tématu správy stavu a použití stavu dialogového okna se zobrazuje v postupu postupné konverzace .

V dialogovém okně máte přístup k kontextu dialogového okna a můžete ho použít ke spuštění dalších dialogových oken, ukončení aktuálního dialogového okna a provádění dalších operací.

Spuštění dialogového okna

V dialogovém okně vodopádu předejte ID dialogového okna, které chcete spustit do kontextu vodopádového dialogového okna, a to buď pomocí počátečního dialogového okna, výzvy nebo nahrazení metody dialogového okna .

  • Metody výzvy a počátečního dialogového okna nasdílí novou instanci odkazovaného dialogového okna do horní části zásobníku.
  • Metoda dialogového okna nahradit zobrazí aktuální dialog mimo zásobník a nasdílí dialogové okno nahrazení do zásobníku. Nahrazené dialogové okno se zruší a všechny informace obsažené v instanci jsou odstraněny.

Pomocí parametru možností předejte informace nové instanci dialogového okna. K možnostem předaným do nového dialogového okna můžete přistupovat prostřednictvím vlastnosti možností kontextu kroku v libovolném kroku dialogového okna. Další informace najdete v tématu vytvoření pokročilého toku konverzace pomocí větví a smyček.

Chcete-li pokračovat v dialogovém okně

V dialogovém okně vodopádu použijte vlastnost hodnot kontextu kroku k zachování stavu mezi otáčením. Libovolná hodnota přidaná do této kolekce v předchozím kroku je k dispozici v následných otočeních. Další informace najdete v tématu vytvoření pokročilého toku konverzace pomocí větví a smyček.

Ukončení dialogového okna

V rámci vodopádového dialogového okna použijte metodu koncového dialogového okna k ukončení dialogového okna tak, že ho vysunete ze zásobníku. Metoda koncového dialogového okna může vrátit volitelný výsledek nadřazeného kontextu (například dialogové okno, které ho nazvalo, nebo obslužnou rutinu otáčení robota). Nejčastěji se to volá z dialogového okna, aby se ukončila aktuální instance samotné.

Metodu koncového dialogového okna můžete volat odkudkoliv, kde máte kontext dialogového okna, ale zobrazí se robotovi, kterému byl volána z aktuálního aktivního dialogového okna.

Tip

Osvědčeným postupem je explicitně volat metodu koncového dialogového okna na konci dialogového okna.

Vymazání všech dialogových oken

Pokud chcete zobrazit všechna dialogová okna mimo zásobník, můžete zásobník dialogového okna vymazat zavoláním kontextu dialogového okna zrušit všechny metody dialogových oken .

Opakování dialogového okna

Dialogové okno můžete nahradit samotným, vytvořením smyčky pomocí metody nahrazení dialogového okna . To je skvělý způsob, jak zvládnout složité interakce a jednu techniku pro správu nabídek.

Poznámka

Pokud potřebujete zachovat vnitřní stav aktuálního dialogového okna, budete muset předat informace do nové instance dialogového okna v volání metody dialogového okna nahradit a pak odpovídajícím způsobem inicializovat dialogové okno.

Větvení konverzace

Kontext dialogového okna udržuje zásobník dialogů a pro každé dialogové okno v zásobníku sleduje, který krok je další. Metoda počátečního dialogového okna vytvoří podřízené dialogové okno a nasdílí ho do horní části zásobníku a jeho metoda koncového dialogového okna se zobrazí v horní části zásobníku. Koncové dialogové okno se obvykle volá z dialogového okna, které končí.

Dialogové okno může spustit nové dialogové okno ve stejné sadě dialogového okna voláním metody počátečního dialogového okna kontextu dialogového okna a zadáním ID nového dialogového okna, které pak vytvoří nové dialogové okno aktuálně aktivní dialogové okno. Původní dialogové okno je stále ve zásobníku, ale volání metody dialogového okna pokračovat v kontextu dialogového okna se odesílají pouze do dialogového okna, které je v horní části zásobníku, aktivní dialogové okno. Když se v zásobníku objeví dialogové okno, kontext dialogového okna se obnoví dalším krokem vodopádu v zásobníku, kde opustil původní dialogové okno.

Proto můžete vytvořit větev v toku konverzace tak, že do jednoho dialogového okna zahrnete krok, který může podmíněně zvolit dialogové okno, které se spustí ze sady dostupných dialogů.

Další informace