Delen via


Gebruikersonderbrekingen afhandelen

VAN TOEPASSING OP: SDK v4

Onderbrekingen verwerken is een belangrijk onderdeel van een robuuste bot. Gebruikers volgen niet altijd uw gedefinieerde gespreksstroom, stap voor stap. Ze kunnen proberen een vraag in het midden van het proces te stellen of deze te annuleren in plaats van het te voltooien. In dit artikel worden enkele veelvoorkomende manieren beschreven om onderbrekingen van gebruikers in uw bot af te handelen.

Notitie

Als u agents wilt bouwen met uw keuze uit AI-services, indeling en kennis, kunt u overwegen om de Microsoft 365 Agents SDK te gebruiken. De Agents SDK biedt ondersteuning voor C#, JavaScript of Python. Meer informatie over de Agents SDK vindt u op aka.ms/agents. Als u op zoek bent naar een SaaS-agentplatform, kunt u Microsoft Copilot Studio overwegen. Als u een bestaande bot hebt gebouwd met de Bot Framework SDK, kunt u uw bot bijwerken naar de Agents SDK. U kunt de belangrijkste wijzigingen en updates bekijken bij Bot Framework SDK naar Agents SDK migratiegids. Ondersteuningstickets voor de Bot Framework SDK worden vanaf 31 december 2025 niet meer onderhouden.

Vereisten

Het kernbotvoorbeeld maakt gebruik van Language Understanding (LUIS) om gebruikersintenties te identificeren; Het identificeren van gebruikersintentie is echter niet de focus van dit artikel. Voor informatie over het identificeren van gebruikersintenties, zie Natuurlijke taalverwerking en Natuurlijke taalverwerking toevoegen aan uw bot.

Notitie

Language Understanding (LUIS) wordt op 1 oktober 2025 buiten gebruik gesteld. Vanaf 1 april 2023 kunt u geen nieuwe LUIS-resources maken. Er is nu een nieuwere versie van taalkennis beschikbaar als onderdeel van Azure AI Language.

Conversational Language Understanding (CLU), een functie van Azure AI Language, is de bijgewerkte versie van LUIS. Zie Natuurlijke taalkennis voor meer informatie over ondersteuning voor taalkennis in de Bot Framework SDK.

Over dit voorbeeld

Het voorbeeld dat in dit artikel wordt gebruikt, modelleert een vluchtboekingsbot die dialoogvensters gebruikt om vluchtinformatie van de gebruiker op te halen. Tijdens het gesprek met de bot kan de gebruiker op elk gewenst moment hulp verlenen of opdrachten annuleren om een onderbreking te veroorzaken. Er zijn twee soorten onderbrekingen afgehandeld:

  • Turnniveau: Vermijd verwerking op het tourniveau, maar laat de dialoog op de stack staan met de verstrekte informatie. Ga in de volgende beurt verder vanaf waar het gesprek was gebleven.
  • Dialoogvensterniveau: De verwerking volledig annuleren, zodat de bot opnieuw kan worden gestart.

De onderbrekingslogica definiëren en implementeren

Definieer en implementeer eerst de help en annuleer onderbrekingen.

Als u dialoogvensters wilt gebruiken, installeert u het NuGet-pakket Microsoft.Bot.Builder.Dialogs .

Dialoogvensters\CancelAndHelpDialog.cs

Implementeer de CancelAndHelpDialog klasse om onderbrekingen van gebruikers af te handelen. De geannuleerde dialoogvensters BookingDialog en DateResolverDialog zijn afgeleid van deze klasse.

Waarschuwing

Het lijkt erop dat het voorbeeld dat u zoekt, is verplaatst. Wees gerust dat we aan het oplossen hiervan werken.

In de CancelAndHelpDialog klasse roept de OnContinueDialogAsync methode de InterruptAsync methode aan om te controleren of de gebruiker de normale stroom heeft onderbroken. Als de stroom wordt onderbroken, worden basisklassemethoden aangeroepen; anders wordt de retourwaarde van de InterruptAsync geretourneerd.

Waarschuwing

Het lijkt erop dat het voorbeeld dat u zoekt, is verplaatst. Wees gerust dat we aan het oplossen hiervan werken.

Als de gebruiker 'help' typt, verzendt de InterruptAsync methode een bericht en roept DialogTurnResult (DialogTurnStatus.Waiting) deze vervolgens aan om aan te geven dat het dialoogvenster bovenaan wacht op een antwoord van de gebruiker. Op deze manier wordt de gespreksstroom alleen onderbroken voor een beurt en gaat de volgende beurt verder vanaf waar het gesprek is gebleven.

Als de gebruiker 'annuleren' typt, roept CancelAllDialogsAsync de interne dialoogcontext aan, waardoor de dialoogstapel wordt gewist en de dialoog afsluit met een geannuleerde status en zonder resultaatwaarde. Op de MainDialog (later weergegeven) ziet u dat het boekingsdialoogvenster is beëindigd en null is geretourneerd, vergelijkbaar met wanneer de gebruiker ervoor kiest om de reservering niet te bevestigen.

Waarschuwing

Het lijkt erop dat het voorbeeld dat u zoekt, is verplaatst. Wees gerust dat we aan het oplossen hiervan werken.

Controleren op onderbrekingen per beurt

Zodra de interruptafhandelingsklasse is geïmplementeerd, controleert u wat er gebeurt wanneer deze bot een nieuw bericht van de gebruiker ontvangt.

Dialogen\MainDialog.cs

Wanneer de nieuwe berichtactiviteit binnenkomt, wordt de MainDialogbot uitgevoerd. De MainDialog vraagt de gebruiker waarmee het kan helpen. Vervolgens wordt de BookingDialogMainDialog.ActStepAsync methode gestart, met een aanroep naar BeginDialogAsync zoals hieronder wordt weergegeven.

Waarschuwing

Het lijkt erop dat het voorbeeld dat u zoekt, is verplaatst. Wees gerust dat we aan het oplossen hiervan werken.

Vervolgens wordt in de FinalStepAsync methode van de MainDialog klas het boekingsdialoogvenster beëindigd en wordt de reservering beschouwd als voltooid of geannuleerd.

Waarschuwing

Het lijkt erop dat het voorbeeld dat u zoekt, is verplaatst. Wees gerust dat we aan het oplossen hiervan werken.

De code wordt BookingDialog hier niet weergegeven, omdat deze niet rechtstreeks is gerelateerd aan de verwerking van onderbrekingen. Het wordt gebruikt om gebruikers te vragen om reserveringsgegevens. U vindt die code in Dialogs\BookingDialogs.cs.

Onverwachte fouten afhandelen

De foutafhandelaar van de adapter behandelt eventuele uitzonderingen die niet in de bot zijn opgevangen.

AdapterWithErrorHandler.cs

In het voorbeeld ontvangt de handler van OnTurnError de adapter eventuele uitzonderingen die worden gegenereerd door de beurtlogica van uw bot. Als er een uitzondering optreedt, verwijdert de handler de gespreksstatus voor het huidige gesprek om te voorkomen dat de bot vastloopt in een foutlus die wordt veroorzaakt door een slechte status.

Waarschuwing

Het lijkt erop dat het voorbeeld dat u zoekt, is verplaatst. Wees gerust dat we aan het oplossen hiervan werken.

Services registreren

Startup.cs

Ten slotte, in Startup.cs, wordt de bot als een tijdelijk object gemaakt, en bij elke beurt wordt er een nieuw exemplaar van de bot aangemaakt.

Waarschuwing

Het lijkt erop dat het voorbeeld dat u zoekt, is verplaatst. Wees gerust dat we aan het oplossen hiervan werken.

Ter referentie: hier volgen de klassedefinities die worden gebruikt in de aanroep om de bovenstaande bot te maken.

Waarschuwing

Het lijkt erop dat het voorbeeld dat u zoekt, is verplaatst. Wees gerust dat we aan het oplossen hiervan werken.

Waarschuwing

Het lijkt erop dat het voorbeeld dat u zoekt, is verplaatst. Wees gerust dat we aan het oplossen hiervan werken.

Waarschuwing

Het lijkt erop dat het voorbeeld dat u zoekt, is verplaatst. Wees gerust dat we aan het oplossen hiervan werken.

De bot testen

  1. Als u dit nog niet hebt gedaan, installeert u de Bot Framework Emulator.
  2. Voer het voorbeeld lokaal uit op uw computer.
  3. Start de emulator, maak verbinding met uw bot en verzend berichten zoals hieronder wordt weergegeven.

Aanvullende informatie

  • Het voorbeeld 24.bot-authentication-msgraph in C#, JavaScript, Python of Java laat zien hoe u een afmeldingsaanvraag kunt verwerken. Er wordt een patroon gebruikt dat vergelijkbaar is met het patroon dat hier wordt weergegeven voor het afhandelen van onderbrekingen.

  • U moet een standaardantwoord verzenden in plaats van niets te doen en de gebruiker te laten weten wat er aan de hand is. Het standaardantwoord moet de gebruiker vertellen welke opdrachten de bot begrijpt, zodat de gebruiker weer op schema kan komen.

  • Op elk moment tijdens de beurt geeft de eigenschap 'heeft gereageerd' van de beurtcontext aan of de bot een bericht heeft verzonden naar de gebruiker. Voordat de beurt eindigt, moet uw bot een bericht naar de gebruiker verzenden, zelfs als dit een eenvoudige bevestiging van hun invoer is.