Utforma och kontrollera konversationsflödet

GÄLLER FÖR: SDK v4

I ett traditionellt program består användargränssnittet (UI) av en serie skärmar, och en enda app eller webbplats kan använda en eller flera skärmar efter behov för att utbyta information med användaren. De flesta program börjar med en huvudskärm där användarna först landar, och den skärmen ger navigering som leder till andra skärmar för olika funktioner som att starta en ny beställning, bläddra bland produkter eller söka hjälp.

Precis som appar och webbplatser har robotar ett användargränssnitt, men det består av meddelanden snarare än skärmar. Meddelanden kan innehålla knappar, text och andra element eller vara helt talbaserade.

Även om ett traditionellt program eller en webbplats kan begära flera typer av information på en skärm samtidigt, samlar en robot in samma mängd information med hjälp av flera meddelanden. På så sätt är processen att samla in information från användaren en aktiv upplevelse. en där användaren har en aktiv konversation med roboten.

En väldesignad robot kommer att ha ett konversationsflöde som känns naturligt. Roboten ska kunna hantera kärnkonversationen sömlöst och kunna hantera avbrott eller växla ämnen på ett smidigt sätt.

Processuellt konversationsflöde

Konversationer med en robot kan fokusera på den uppgift som en robot försöker uppnå, vilket kallas ett procedurflöde. Roboten ber användaren att samla in all information som behövs innan uppgiften bearbetas.

I ett processuellt konversationsflöde definierar du ordningen på frågorna och roboten ställer frågorna i den ordning du definierade. Du kan ordna frågorna i logiska grupper för att hålla koden cMicrosoft Entralized samtidigt som du fokuserar på att vägleda konversationen. Du kan till exempel utforma en modul så att den innehåller logiken som hjälper användaren att söka efter produkter och en separat modul som innehåller logiken som hjälper användaren att skapa en ny beställning.

Du kan strukturera dessa moduler så att de flödar på vilket sätt du vill, allt från kostnadsfritt formulär till sekventiellt. Bot Framework SDK innehåller ett dialogbibliotek som gör att du kan skapa alla konversationsflöden som roboten behöver. Biblioteket innehåller vattenfallsdialogrutor för att skapa en sekvens med steg och uppmaningar för att ställa frågor till användarna. Mer information finns i Dialogrutans bibliotek.

Diagram comparing application GUI flow against bot conversation flow.

I ett traditionellt program börjar allt med huvudskärmen . Huvudskärmen anropar den nya ordningsskärmen. Den nya ordningsskärmen förblir i kontroll tills den antingen stänger eller anropar andra skärmar, till exempel produktsökningsskärmen. Om den nya orderskärmen stängs returneras användaren till huvudskärmen.

I en robot som använder dialogrutor börjar allt med rotdialogrutan. Rotdialogrutan anropar dialogrutan ny ordning. Då tar den nya ordningsdialogrutan kontroll över konversationen och förblir i kontroll tills den antingen stänger eller anropar en annan dialogruta, till exempel dialogrutan produktsökning. Om den nya orderdialogrutan stängs återgår kontrollen över konversationen tillbaka till rotdialogrutan.

Ett exempel på hur du implementerar ett konversationsflöde med hjälp av dialogbiblioteken finns i Implementera sekventiellt konversationsflöde.

Hantera avbrott

Det kan vara frestande att anta att användarna kommer att utföra procedurmässiga uppgifter en i taget på ett snyggt och ordnat sätt. I ett processuellt konversationsflöde med hjälp av dialogrutor startar användaren till exempel i rotdialogrutan och anropar den nya orderdialogrutan. I den nya orderdialogrutan anropar de dialogrutan produktsökning. När de sedan väljer något av resultaten i dialogrutan produktsökning anropar de den nya orderdialogrutan. När beställningen har slutförts kommer de tillbaka till rotdialogrutan.

Även om det skulle vara bra om användarna alltid reste en sådan linjär, logisk sökväg, uppstår den sällan. Personer kommunicerar inte alltid i sekventiell ordning. De tenderar att ofta ändra sig. Ta följande som exempel:

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

Även om din robot kan vara procedurinriktad kan användaren bestämma sig för att göra något helt annat eller ställa en fråga som kanske inte är relaterad till det aktuella ämnet. I exemplet ovan ställer användaren en fråga i stället för att ge det ja/nej-svar som roboten förväntar sig. Hur ska roboten svara?

  • Insistera på att användaren svarar på frågan först.
  • Ignorera allt som användaren hade gjort tidigare, återställ hela dialogstacken och börja från början genom att försöka besvara användarens fråga.
  • Försök att besvara användarens fråga och återgå sedan till den ja/nej-frågan och försök att återuppta därifrån.

Det finns inget rätt svar på den här frågan, eftersom den bästa lösningen beror på detaljerna i ditt scenario och hur användaren rimligen förväntar sig att roboten ska svara. Se hur du hanterar användaravbrott för en robot som är utformad för att hantera vissa typer av avbrott.

Förfalla en konversation

Ibland är det bra att starta om en konversation från början. Om en användare till exempel inte svarar efter en viss tidsperiod. Olika metoder för att avsluta en konversation är:

  • Spåra den senaste gången ett meddelande togs emot från en användare och avmarkera tillståndet om tiden är större än en förkonfigurerad längd när nästa meddelande tas emot från användaren.
  • Använd en lagringslagerfunktion, till exempel Cosmos DB:s time-to-live-funktion , för att rensa tillståndet efter en förkonfigurerad tidsperiod.

Mer information finns i Så här upphör en konversation.

Nästa steg

Att hantera användarens navigering i dialogrutor och utforma ett konversationsflöde på ett sätt som gör det möjligt för användarna att uppnå sina mål (även på ett icke-linjärt sätt) är en grundläggande utmaning för robotdesign. Designrobotens navigeringsartikel granskar några vanliga fallgropar med dåligt utformad navigering och diskuterar strategier för att undvika dessa fällor.