Activiteitshandlers en dialoogvensters implementeren

Voltooid

De logica voor het verwerken van de activiteit kan op meerdere manieren worden geïmplementeerd. De Bot Framework SDK biedt klassen waarmee u bots kunt bouwen die gesprekken beheren met behulp van:

  • Activiteitshandlers: Gebeurtenismethoden die u kunt overschrijven om verschillende soorten activiteiten af te handelen.
  • Dialoogvensters: Complexere patronen voor het verwerken van stateful gesprekken met meerdere paden.

Activiteitshandlers

Voor eenvoudige bots met korte, staatloze interacties kunt u activiteitshandlers gebruiken om een gebeurtenisgestuurd gespreksmodel te implementeren waarin de gebeurtenissen worden geactiveerd door activiteiten zoals gebruikers die deelnemen aan het gesprek of een bericht dat wordt ontvangen. Wanneer een activiteit plaatsvindt in een kanaal, roept de Bot Framework-service de functie Procesactiviteit van de botadapter aan, waarbij de details van de activiteit worden doorgegeven. De adapter maakt een turncontext voor de activiteit en geeft deze door aan de turn-handler van de bot, die de afzonderlijke gebeurtenisspecifieke activiteitshandler aanroept.

A bot uses activity handlers to handle turns in a conversation

De ActivityHandler-basisklasse bevat gebeurtenismethoden voor de vele soorten algemene activiteiten, waaronder:

  • Bericht ontvangen
  • Leden zijn lid geworden van het gesprek
  • Leden hebben het gesprek verlaten
  • Berichtreactie ontvangen
  • Bot geïnstalleerd
  • Andere...

U kunt alle activiteitshandlers waarvoor u aangepaste logica wilt implementeren overschrijven.

Context draaien

Een activiteit vindt plaats binnen de context van een draai, die één tweerichtingsuitwisseling tussen de gebruiker en de bot vertegenwoordigt. Activiteitenhandlermethoden bevatten een parameter voor de turncontext, die u kunt gebruiken voor toegang tot relevante informatie. De activiteitshandler voor een ontvangen bericht bevat bijvoorbeeld de tekst van het bericht.

Meer informatie

Zie de Bot Framework SDK-documentatie voor meer informatie over activiteitshandlers.

Dialoogvensters

Voor complexere gespreksstromen waarin u de status tussen beurten moet opslaan om een gesprek met meerdere paden mogelijk te maken, kunt u dialoogvensters implementeren. De Bot Framework SDK-dialoogvensterbibliotheek bevat meerdere dialoogvensterklassen die u kunt combineren om de vereiste gespreksstroom voor uw bot te implementeren.

Er zijn twee algemene patronen voor het gebruik van dialoogvensters voor het opstellen van een botgesprek:

Dialoogvensters voor onderdelen

Een onderdeeldialoogvenster is een dialoogvenster dat andere dialoogvensters kan bevatten die zijn gedefinieerd in de dialoogvensterset. Vaak is het eerste dialoogvenster in het onderdeeldialoogvenster een watervaldialoogvenster , waarmee een opeenvolgende reeks stappen wordt gedefinieerd om het gesprek te begeleiden. Het is gebruikelijk dat elke stap een promptdialoogvenster is, zodat de gespreksstroom bestaat uit het verzamelen van invoergegevens van de gebruiker. Elke stap moet worden voltooid voordat de uitvoer wordt doorgegeven aan de volgende stap

Een bot voor het bestellen van pizza's kan bijvoorbeeld worden gedefinieerd als een watervaldialoogvenster waarin de gebruiker wordt gevraagd om een pizzagrootte te selecteren, vervolgens toppings en uiteindelijk om betaling wordt gevraagd.

A component dialog contains a waterfall dialog for ordering a pizza

Adaptieve dialogen

Een adaptief dialoogvenster is een ander type containerdialoogvenster waarin de stroom flexibeler is, waardoor onderbrekingen, annuleringen en contextswitches op elk moment in het gesprek mogelijk zijn. In deze gespreksstijl start de bot een hoofddialoogvenster , dat een stroom acties bevat (waaronder vertakkingen en lussen) en triggers die kunnen worden gestart door acties of door een recognizer. De recognizer analyseert invoer in natuurlijke taal (meestal met behulp van de Language Understanding-service) en detecteert intenties, die kunnen worden toegewezen aan triggers die de stroom van het gesprek wijzigen, vaak door nieuwe onderliggende dialoogvensters te starten, die hun eigen acties, triggers en recognizers bevatten.

De bot voor het bestellen van pizza's kan bijvoorbeeld beginnen met een hoofddialoogvenster dat de gebruiker verwelkomt. Wanneer de gebruiker een bericht invoert dat aangeeft dat hij een pizza wil bestellen, detecteert de recognizer deze intentie en gebruikt een trigger om een ander dialoogvenster te starten met de stroom acties die nodig zijn om informatie over de pizzaorder te verzamelen. Op elk moment tijdens het dialoogvenster pizzaorder kan de gebruiker een bericht invoeren dat aangeeft dat hij of zij iets anders wil doen (bijvoorbeeld de bestelling annuleren) en de recognizer voor het dialoogvenster pizzabestelling (of het bovenliggende dialoogvenster) kan worden gebruikt om een geschikte wijziging in de gespreksstroom te activeren.

An adaptive dialog for ordering a pizza

Notitie

Het gebruik van dialoogvensters biedt meer flexibiliteit dan mogelijk is met een bot op basis van activiteitshandlers, maar kan complexer zijn om te programmeren. Hoewel u de Bot Framework SDK kunt gebruiken om dialoogvensters in code te implementeren, kunt u overwegen om bot Framework Composer te gebruiken om bots te bouwen met complexe dialoogvensters, waarbij u profiteert van de visuele ontwerpinterface.