Delen via


Dialoogbibliotheek

VAN TOEPASSING OP: SDK v4

Dialogen zijn een centraal concept in de SDK, waarmee u een langdurig gesprek met de gebruiker kunt beheren. Een dialoogvenster voert een taak uit die een deel van of een volledige gespreksthread kan vertegenwoordigen. Het kan slechts één beurt of meerdere beurten omvatten, en kan een korte of lange periode beslaan.

In dit artikel worden de kernklassen en functies van de dialoogvensterbibliotheek beschreven.

  • U moet bekend zijn met hoe bots werken (inclusief wat een beurt is) en statusbeheer.
  • Elk dialoogvenster vertegenwoordigt een gesprekstaak die kan worden uitgevoerd tot voltooiing en verzamelde informatie kan retourneren.
  • Elk dialoogvenster vertegenwoordigt een basiseenheid van de controlestroom: het kan beginnen, doorgaan en eindigen; onderbreken en hervatten; of worden geannuleerd.
  • Dialoogvensters zijn vergelijkbaar met een methode of functie in een programmeertaal. U kunt argumenten of parameters doorgeven wanneer u een dialoogvenster start en het dialoogvenster kan later een retourwaarde produceren wanneer deze eindigt.

Tip

Als u geen ervaring hebt met het ontwikkelen van bots met bot framework of een nieuwe gesprekservaring maakt, begint u met de Bot Framework Composer-. Voor bestaande SDK-first-bots die niet in Composer zijn gemaakt, kunt u overwegen om uw bot beschikbaar te maken als een vaardigheid en Composer te gebruiken voor toekomstige botontwikkeling.

Dialoogstatus

Dialoogvensters kunnen een gesprek met meerdere beurten implementeren, en daarom zijn ze afhankelijk van bewaarde status om beurten. Zonder de status in dialoogvensters zou uw bot niet weten waar deze zich in het gesprek bevond of welke informatie deze al had verzameld.

Om de plaats van een dialoog in het gesprek te behouden, moet de status van het dialoog uit het geheugen worden opgehaald en daarin worden opgeslagen bij elke beurt. Dit wordt afgehandeld via een eigenschapsaccessor voor de dialoogstatus die is gedefinieerd binnen de gespreksstatus van de bot. Deze dialoogvensterstatus beheert informatie voor alle actieve dialoogvensters en subdialogen van actieve dialoogvensters. Hierdoor kan de bot oppakken waar deze het laatst was gebleven en verschillende gespreksmodellen verwerken.

Tijdens uitvoeringstijd bevat de eigenschap dialoogstatus informatie over waar de dialoog zich in het logische proces bevindt, inclusief alle intern verzamelde gegevens in de vorm van een dialoogexemplaar object. Nogmaals, dit moet in de bot worden ingelezen en bij elke beurt naar het geheugen worden weggeschreven.

Dialooginfrastructuur

Naast verschillende typen dialogen zijn de volgende klassen betrokken bij het ontwerpen en beheersen van gesprekken. Hoewel u deze klassen meestal niet rechtstreeks hoeft te gebruiken, is het handig om op de hoogte te zijn van deze klassen en het doel ervan bij het ontwerpen van dialoogvensters voor een bot.

Klas Beschrijving
dialoogvenster Hiermee definieert u een verzameling dialogen die naar elkaar kunnen verwijzen en samen kunnen werken.
dialoogcontext Bevat informatie over alle actieve dialoogvensters.
dialoogvenster Bevat informatie over één actief dialoogvenster.
Dialoogbeurtresultaat Bevat statusinformatie uit een actief of recent actief dialoogvenster. Als het actieve dialoogvenster is beëindigd, bevat dit de retourwaarde.

Dialoogvenstertypen

De dialoogvensterbibliotheek biedt een aantal typen dialoogvensters om de gesprekken van uw bot gemakkelijker te beheren. Sommige van deze typen worden verderop in dit artikel uitgebreider beschreven.

Type Beschrijving
tweespraak De basisklasse voor alle dialoogvensters.
containerdialoogvenster De basisklasse voor alle containerdialoogvensters, zoals onderdeel- en adaptieve dialoogvensters. Het onderhoudt een interne dialoogvensterset en stelt u in staat om een verzameling dialoogvensters als een eenheid te behandelen.
dialoogvenster onderdeel Een algemeen type containerdialoogvenster waarin een set dialoogvensters wordt ingekapseld, waardoor de set als geheel opnieuw kan worden gebruikt. Wanneer een dialoogvenster voor een onderdeel wordt gestart, begint het met een aangewezen dialoogvenster in de verzameling. Wanneer het binnenste proces is voltooid, wordt het onderdeeldialoogvenster beëindigd.
watervaldialoog Definieert een reeks stappen, zodat uw bot een gebruiker door een lineair proces kan leiden. Deze zijn meestal ontworpen om binnen de context van een dialoogvenster van een onderdeel te functioneren.
promptdialoogvensters Vraag de gebruiker om invoer en retourneer het resultaat. Een prompt wordt herhaald totdat deze geldige invoer krijgt of wordt geannuleerd. Ze zijn ontworpen om te werken met watervalgesprekken.
adaptief dialoogvenster Een type containerdialoogvenster dat door Composer wordt gebruikt om natuurlijkere gespreksstromen te bieden. Niet bedoeld om rechtstreeks in een SDK-georiënteerde bot te worden gebruikt.
actiedialogen Een type dialoogvenster dat ondersteuning biedt voor de implementatie van acties in Composer. Niet bedoeld om rechtstreeks in een SDK-georiënteerde bot te worden gebruikt.
invoerdialoogvensters Een type dialoogvenster dat ondersteuning biedt voor de implementatie van invoeracties in Composer. Niet bedoeld om rechtstreeks in een SDK-eerste bot te worden gebruikt.
vaardigheid dialoogvenster Automatiseert het beheer van een of meer vaardigheidsbots van een vaardigheidsgebruiker. Composer ondersteunt vaardigheden rechtstreeks als acties.
QnA Maker dialoog Automatiseert de toegang tot een QnA Maker-knowledge base. Dit dialoogvenster is ontworpen om ook te werken als een actie binnen Composer.

Belangrijk

Adaptieve dialoogvensters zijn voor het eerst toegevoegd in versie 4.9 van de C#SDK. Adaptieve dialoogvensters ondersteunen de Bot Framework Composer- en zijn niet bedoeld om rechtstreeks in een SDK-eerste bot te worden gebruikt.

Dialoogpatronen

Er zijn twee hoofdpatronen voor het starten en beheren van dialoogvensters vanuit een bot.

  1. We raden u aan Bot Framework Composer te gebruiken om gespreksdialoogvensters te ontwerpen, om te profiteren van natuurlijkere, vrije gespreksmogelijkheden. Zie de Inleiding tot Bot Framework Composervoor meer informatie. Dergelijke bots kunnen nog steeds worden uitgebreid met code waar nodig.
  2. Ontwikkel uw bot in een van de SDK-talen en gebruik de run-uitbreidingsmethode van het -hoofddialoogvenster. Zie over onderdeel- en watervaldialoogvensters en hoe u sequentiële gespreksstroom implementeertvoor meer informatie over het gebruik van de uitvoeringsmethode met een onderdeeldialoogvenster.

De dialoogstapel

Een dialoogvenstercontext bevat informatie over alle actieve dialoogvensters en bevat een dialoogvensterstack, die fungeert als een aanroepstack voor alle actieve dialoogvensters. Elk containerdialoogvenster bevat een binnenste set dialoogvensters die het beheert en daarom introduceert elk actief containerdialoogvenster een interne dialoogvenstercontext en dialoogvensterstack als onderdeel van de status.

Hoewel u geen directe toegang hebt tot de stack, kan het begrijpen dat deze bestaat en het begrijpen van de functie ervan u helpen begrijpen hoe verschillende aspecten van de dialoogbibliotheek werken.

Containerdialoogvensters

Een containerdialoogvenster kan deel uitmaken van een grotere dialoogvensterset. Elke container heeft een interne dialoogvensterset die ook wordt beheerd.

  • Elke dialoogset creëert een scope voor het oplossen van dialoog-id's.

  • De SDK implementeert momenteel twee typen containerdialoogvensters: onderdeeldialoogvensters en adaptieve dialoogvensters.

    De conceptuele structuur van de twee is heel anders. Een Composer-bot kan echter gebruikmaken van beide.

Dialoog-ID's

Wanneer u een dialoogvenster aan een dialoogvensterset toevoegt, wijst u het een unieke id in die set toe. Dialogen binnen een set verwijzen naar elkaar via hun ID's.

Wanneer het ene dialoogvenster verwijst naar een ander dialoogvenster tijdens runtime, wordt dit door de id van het dialoogvenster uitgevoerd. De dialoogcontext probeert de ID te achterhalen op basis van de andere dialogen in de directe dialoogset. Als er geen overeenkomst is, wordt gezocht naar een overeenkomst in de bijbehorende of externe dialoogset, en zo verder. Als er geen overeenkomst wordt gevonden, wordt er een uitzondering of fout gegenereerd.

Dialoogvensters voor onderdelen

Onderdeeldialoogvensters maken gebruik van een reeksmodel voor gesprekken en elk dialoogvenster in de container is verantwoordelijk voor het aanroepen van andere dialoogvensters in de container. Wanneer de interne dialoogvensterstack van het onderdeel leeg is, eindigt het onderdeel.

Overweeg het gebruik van component- en watervaldialogen als uw bot een relatief eenvoudige besturingsstroom heeft waarvoor geen meer dynamische gespreksstroom nodig is.

Over component- en watervaldialoogvensters beschrijft component-, waterval- en promptdialoogvensters in meer detail.

Andere dialoogvensters

De QnA Maker en skilldialogs kunnen worden gebruikt als zelfstandige dialoogvensters of als onderdeel van een verzameling dialoogvensters in een container.

QnA Maker dialoog

Notitie

Azure AI QnA Maker wordt op 31 maart 2025 buiten gebruik gesteld. Vanaf 1 oktober 2022 kunt u geen nieuwe QnA Maker-resources of kennisbanken maken. Een nieuwere versie van de vraag- en antwoordmogelijkheid is nu beschikbaar als onderdeel van Azure AI Language.

Aangepaste vraagantwoorden, een functie van Azure AI Language, is de bijgewerkte versie van de QnA Maker-service. Zie Natuurlijke taalbegripvoor meer informatie over vraag- en antwoordondersteuning in de Bot Framework SDK.

Het QnA Maker-dialoogvenster opent een QnA Maker-knowledge base en ondersteunt de vervolgprompt en actieve leerfuncties van QnA Maker.

  • Met vervolgprompts, ook wel prompts met meerdere keren genoemd, kan een Knowledge Base de gebruiker meer informatie vragen voordat deze de vraag beantwoordt.
  • Met actieve leersuggesties kan de Knowledge Base in de loop van de tijd worden verbeterd. Het dialoogvenster QnA Maker ondersteunt expliciete feedback voor de actieve leerfunctie.

Zie voor meer informatie:

Vaardigheidendialoog

Een vaardigheidsdialoogvenster opent en beheert een of meer vaardigheden. Het vaardigheidsdialoog plaatst activiteiten van de bovenliggende bot in de vaardigheidsbot en retourneert de vaardigheidsreacties aan de gebruiker.

Zie voor meer informatie:

Volgende stappen