Gespreksstroom ontwerpen en beheren

VAN TOEPASSING OP: SDK v4

In een traditionele toepassing bestaat de gebruikersinterface (UI) uit een reeks schermen en kan één app of website naar behoefte een of meer schermen gebruiken om informatie met de gebruiker uit te wisselen. De meeste toepassingen beginnen met een hoofdscherm waar gebruikers in eerste instantie terechtkomen en dat scherm biedt navigatie die leidt naar andere schermen voor verschillende functies, zoals het starten van een nieuwe bestelling, browseproducten of het zoeken naar hulp.

Zoals apps en websites hebben bots een gebruikersinterface, maar bestaan uit berichten in plaats van schermen. Berichten kunnen knoppen, tekst en andere elementen bevatten of volledig op spraak zijn gebaseerd.

Hoewel een traditionele toepassing of website meerdere stukjes informatie tegelijk op een scherm kan aanvragen, verzamelt een bot dezelfde hoeveelheid informatie met behulp van meerdere berichten. Op deze manier is het verzamelen van informatie van de gebruiker een actieve ervaring; een waar de gebruiker een actief gesprek met de bot heeft.

Een goed ontworpen bot heeft een gespreksstroom die natuurlijk aanvoelt. De bot moet het kerngesprek naadloos kunnen afhandelen en onderbrekingen kunnen afhandelen of onderwerpen probleemloos kunnen overschakelen.

Procedurele gespreksstroom

Gesprekken met een bot kunnen zich richten op de taak die een bot probeert te bereiken, wat een procedurele stroom wordt genoemd. De bot stelt de gebruiker een reeks vragen om alle benodigde informatie te verzamelen voordat de taak wordt verwerkt.

In een procedurele gespreksstroom definieert u de volgorde van de vragen en stelt de bot de vragen in de door u gedefinieerde volgorde. U kunt de vragen ordenen in logische groepen om de code cMicrosoft Entralized te houden terwijl u gefocust blijft op het leiden van het gesprek. U kunt bijvoorbeeld één module ontwerpen die de logica bevat waarmee de gebruiker naar producten kan bladeren en een afzonderlijke module die de logica bevat waarmee de gebruiker een nieuwe bestelling kan maken.

U kunt deze modules structuren om op elke gewenste manier te stromen, variërend van vrije vorm tot sequentiële. De Bot Framework SDK biedt een dialoogvensterbibliotheek waarmee u elke gespreksstroom kunt maken die uw bot nodig heeft. De bibliotheek bevat watervaldialoogvensters voor het maken van een reeks stappen en vragen om gebruikers vragen te stellen. Zie de dialoogvensterbibliotheek voor meer informatie.

Diagram comparing application GUI flow against bot conversation flow.

In een traditionele toepassing begint alles met het hoofdscherm . Het hoofdscherm roept het nieuwe orderscherm aan. Het nieuwe orderscherm blijft in de controle totdat het scherm wordt gesloten of andere schermen aanroept, zoals het scherm voor het zoeken van producten. Als het nieuwe orderscherm wordt gesloten, wordt de gebruiker teruggezet naar het hoofdscherm.

In een bot die dialoogvensters gebruikt, begint alles met het hoofddialoogvenster. Het hoofddialoogvenster roept het dialoogvenster nieuwe volgorde aan. Op dat moment heeft het dialoogvenster nieuwe volgorde de controle over het gesprek en blijft het in de controle totdat het dialoogvenster wordt gesloten of een ander dialoogvenster wordt aangeroepen, zoals het dialoogvenster productzoekopdrachten. Als het dialoogvenster nieuwe volgorde wordt gesloten, wordt het besturingselement van het gesprek teruggezet naar het hoofddialoogvenster.

Zie Sequentiële gespreksstroom implementeren voor een voorbeeld van het implementeren van een gespreksstroom met behulp van de dialoogvensterbibliotheken.

Onderbrekingen afhandelen

Het kan verleidelijk zijn om ervan uit te gaan dat gebruikers procedurele taken één voor één op een nette en ordelijke manier uitvoeren. In een procedurele gespreksstroom met behulp van dialoogvensters start de gebruiker bijvoorbeeld in het hoofddialoogvenster en roept het dialoogvenster nieuwe volgorde aan. Vanuit het dialoogvenster nieuwe bestelling wordt het dialoogvenster productzoekopdrachten aangeroepen. Wanneer u vervolgens een van de resultaten selecteert die worden weergegeven in het dialoogvenster productzoekopdrachten, wordt het dialoogvenster nieuwe volgorde aangeroepen. Nadat de bestelling is voltooid, komen ze terug in het hoofddialoogvenster.

Hoewel het geweldig zou zijn als gebruikers altijd zo'n lineair, logisch pad hebben afgelegd, gebeurt dit zelden. Mensen niet altijd in opeenvolgende volgorde communiceren. Ze veranderen vaak van gedachten. Kijk een naar het volgende voorbeeld:

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

Hoewel uw bot procedureel gericht kan zijn, kan de gebruiker besluiten iets heel anders te doen of een vraag te stellen die mogelijk niet gerelateerd is aan het huidige onderwerp. In het bovenstaande voorbeeld stelt de gebruiker een vraag in plaats van het ja/nee-antwoord op te geven dat de bot verwacht. Hoe moet uw bot reageren?

  • Sta erop dat de gebruiker de vraag eerst beantwoordt.
  • Negeer alles wat de gebruiker eerder had gedaan, stel de hele dialoogvensterstack opnieuw in en begin vanaf het begin door te proberen de vraag van de gebruiker te beantwoorden.
  • Probeer de vraag van de gebruiker te beantwoorden en ga vervolgens terug naar die ja/nee-vraag en probeer van daaruit te hervatten.

Er is geen goed antwoord op deze vraag, omdat de beste oplossing afhankelijk is van de specifieke kenmerken van uw scenario en hoe de gebruiker redelijkerwijs zou verwachten dat de bot reageert. Lees hoe u onderbrekingen van gebruikers kunt afhandelen voor een bot die is ontworpen om bepaalde typen onderbrekingen af te handelen.

Een gesprek laten verlopen

Soms is het handig om een gesprek vanaf het begin opnieuw te starten. Als een gebruiker bijvoorbeeld na een bepaalde periode niet reageert. Verschillende methoden voor het beëindigen van een gesprek zijn:

  • Houd de laatste keer bij dat een bericht van een gebruiker is ontvangen en controleer of de tijd groter is dan een vooraf geconfigureerde lengte bij het ontvangen van het volgende bericht van de gebruiker.
  • Gebruik een functie voor opslaglagen, zoals de time-to-live-functie van Cosmos DB, om de status te wissen na een vooraf geconfigureerde tijdsduur.

Zie hoe u een gesprek verloopt voor meer informatie.

Volgende stappen

Het beheren van de navigatie van de gebruiker tussen dialoogvensters en het ontwerpen van een gespreksstroom op een manier waarmee gebruikers hun doelen kunnen bereiken (zelfs op niet-lineaire wijze) is een fundamentele uitdaging van botontwerp. In het artikel Over navigatie van ontwerpbots worden enkele veelvoorkomende valkuilen van slecht ontworpen navigatie besproken en worden strategieën besproken voor het vermijden van deze traps.