Sdílet prostřednictvím


Návrh a řízení toku konverzace

PLATÍ PRO: SDK v4

V tradiční aplikaci se uživatelské rozhraní skládá z řady obrazovek a jedna aplikace nebo web může podle potřeby používat jednu nebo více obrazovek k výměně informací s uživatelem. Většina aplikací začíná hlavní obrazovkou, kde se uživatelé na začátku dostanou, a tato obrazovka poskytuje navigaci, která vede k jiným obrazovkám pro různé funkce, jako je spuštění nové objednávky, procházení produktů nebo hledání nápovědy.

Podobně jako aplikace a weby mají roboti uživatelské rozhraní, ale jsou tvořené zprávami místo obrazovek. Zprávy můžou obsahovat tlačítka, text a další prvky nebo zcela založené na řečech.

I když tradiční aplikace nebo web mohou na obrazovce požadovat více informací najednou, robot shromáždí stejné množství informací pomocí více zpráv. Tímto způsobem je proces shromažďování informací od uživatele aktivním prostředím; uživatel má aktivní konverzaci s robotem.

Dobře navržený robot bude mít konverzační tok, který je přirozený. Robot by měl být schopný bezproblémově zvládnout základní konverzaci a být schopný zvládnout přerušení nebo řádné přepínání témat.

Tok procedurální konverzace

Konverzace s robotem se můžou zaměřit na úlohu, které se robot snaží dosáhnout, což se nazývá procedurální tok. Robot položí uživateli řadu otázek, aby před zpracováním úkolu shromáždil všechny potřebné informace.

V procedurálním toku konverzace definujete pořadí otázek a robot položí otázky v pořadí, ve kterém jste definovali. Otázky můžete uspořádat do logických skupin, abyste zachovali kód cMicrosoft Entralized a mohli se soustředit na vedení konverzace. Můžete například navrhnout jeden modul, který bude obsahovat logiku, která uživateli pomůže vyhledat produkty a samostatný modul obsahující logiku, která uživateli pomůže vytvořit novou objednávku.

Tyto moduly můžete strukturovat tak, aby proudily jakýmkoli způsobem, od volného tvaru až po sekvenční. Sada SDK služby Bot Framework poskytuje knihovnu dialogových oken, která umožňuje vytvořit jakýkoli konverzační tok, který robot potřebuje. Knihovna obsahuje vodopádové dialogy pro vytvoření posloupnosti kroků a výzvy k kladení otázek uživatelů. Další informace naleznete v tématu Dialogy knihovny.

Diagram comparing application GUI flow against bot conversation flow.

V tradiční aplikaci začíná všechno na hlavní obrazovce. Hlavní obrazovka vyvolá obrazovku nové objednávky . Obrazovka nové objednávky zůstane v ovládacím prvku, dokud se nezavře nebo nevolá další obrazovky, jako je obrazovka vyhledávání produktu. Pokud se obrazovka nové objednávky zavře, uživatel se vrátí na hlavní obrazovku.

V robotovi, který používá dialogy, vše začíná kořenovým dialogem. Kořenový dialog vyvolá dialogové okno nové objednávky. V tomto okamžiku dialogové okno nové objednávky převezme kontrolu nad konverzací a zůstane pod kontrolou, dokud se nezavře nebo nevolá další dialogové okno, například dialogové okno hledání produktu. Pokud se dialogové okno nového pořadí zavře, vrátí se ovládací prvek konverzace zpět do kořenového dialogového okna.

Příklad implementace konverzačního toku pomocí dialogových knihoven najdete v tématu Implementace sekvenčního toku konverzace.

Zpracování přerušení

Může být lákavé předpokládat, že uživatelé budou provádět procedurální úlohy jeden po druhém v přehledné a uspořádané cestě. Například v procedurálním toku konverzace pomocí dialogů uživatel začne v kořenovém dialogovém okně a vyvolá dialogové okno nového pořadí. V dialogovém okně nové objednávky volají dialogové okno vyhledávání produktů. Když pak vyberete jeden z výsledků uvedených v dialogovém okně vyhledávání produktů, vyvolá dialogové okno nové objednávky. Po dokončení objednávky se vrátí zpět do kořenového dialogového okna.

I když by bylo skvělé, kdyby uživatelé vždy cestovali tak lineární, logickou cestou, zřídka se vyskytuje. Lidé nekomunikují vždy v sekvenčním pořadí. Často mění názory. Představte si následující příklad:

Example of a user asking a question in response to a question from the bot.

I když může být robot procedurální, uživatel se může rozhodnout udělat něco úplně jiného nebo položit otázku, která nemusí souviset s aktuálním tématem. Ve výše uvedeném příkladu uživatel položí otázku, nikoli odpověď typu ano/ne, kterou robot očekává. Jak by robot měl reagovat?

  • Trvá na tom, aby uživatel odpověděl na první otázku.
  • Ignorujte vše, co uživatel provedl dříve, resetujte celý zásobník dialogového okna a začněte od začátku tím, že se pokusíte odpovědět na otázku uživatele.
  • Zkuste odpovědět na otázku uživatele a pak se vraťte na tuto otázku ano/ne a zkuste pokračovat z této otázky.

Neexistuje žádná správná odpověď na tuto otázku, protože nejlepší řešení bude záviset na specifikách vašeho scénáře a na tom, jak by uživatel rozumně očekával, že robot bude reagovat. Podívejte se, jak zpracovávat přerušení uživatelů robota, který je navržený tak, aby zpracovával některé typy přerušení.

Vypršení platnosti konverzace

Někdy je užitečné restartovat konverzaci od začátku. Pokud například uživatel po určité době nereaguje. Mezi různé metody ukončení konverzace patří:

  • Sledujte čas posledního přijetí zprávy od uživatele a vymažte stav, pokud je čas větší než předkonfigurovaná délka při přijetí další zprávy od uživatele.
  • Pomocí funkce vrstvy úložiště, jako je funkce Time to Live služby Cosmos DB, můžete vymazat stav po předkonfigurované době.

Další informace najdete v tématu Vypršení platnosti konverzace.

Další kroky

Správa navigace uživatele v dialogových oknech a návrh konverzačního toku způsobem, který uživatelům umožňuje dosáhnout svých cílů (i nelineárním způsobem) je základním úkolem návrhu robota. Článek o navigaci v návrhovém robotovi se zabývá některými běžnými úskalími špatně navržené navigace a popisuje strategie pro zabránění těmto pastem.