Share via


Over vaardigheidsgebruikers

VAN TOEPASSING OP: SDK v4

Een vaardigheidsconsumer is een bot die een of meer vaardigheden kan aanroepen. Met betrekking tot vaardigheden is een hoofdbot een gebruikersgerichte bot die ook een vaardigheidsconsumer is.

Vanuit het perspectief van de gebruiker is de hoofdbot de bot waarmee ze communiceren. Vanuit het perspectief van de vaardigheid is de vaardigheidsconsumer het kanaal waarover deze communiceert met de gebruiker. (Zie het overzicht van vaardigheden voor meer informatie.)

Als gebruiker van vaardigheden bevat een hoofdbot een aantal extra logica voor het beheren van verkeer tussen deze bot en een vaardigheid:

  • Configuratie-informatie voor elke vaardigheid die de hoofdmap gebruikt.
  • Een gespreks-id-factory waarmee de hoofdmap heen en weer kan schakelen tussen het gesprek dat het heeft met de gebruiker en de gespreksfactory die het met een vaardigheid heeft.
  • Een vaardigheidsclient die activiteiten kan verpakken en doorsturen naar een vaardigheidsbot.
  • Een vaardigheidshandler die aanvragen kan ontvangen en activiteiten van een vaardigheidsbot kan uitpakken.

Vaardigheden beheren

Het starten en laten uitvoeren van één vaardigheid tot voltooiing wordt beheerd met een paar toevoegingen aan de vaardigheidsconsumer. Complexere scenario's zijn mogelijk, met meerdere vaardigheden of gespreksthreads.

Een gebruiker van vaardigheden implementeert ten minste twee HTTP-eindpunten:

  • Een berichteneindpunt ontvangt activiteiten van de gebruiker of het kanaal. Dit is het gebruikelijke berichteindpunt dat alle bots implementeren.
  • Een hosteindpunt voor vaardigheden voor het ontvangen van activiteiten van een vaardigheid. Dit fungeert als een callback-URL, de service-URL waarnaar de vaardigheid reageert. (De gebruiker van de vaardigheid moet code koppelen die de HTTP-methodeaanvraag van de vaardigheid ontvangt met een vaardigheidshandler.)

Beschrijvingen van vaardigheden

Voeg voor elke vaardigheid een Bot Framework-vaardigheidsobject toe aan het configuratiebestand van de gebruiker van de vaardigheid. Elk item heeft een id, een app-id en een eindpunt voor de vaardigheid.

Eigenschappen Beschrijving
Id De id of sleutel van de vaardigheid, specifiek voor de consument van de vaardigheid.
App-id De appId toegewezen aan de botresource toen de vaardigheid is geregistreerd in Azure.
Eindpunt van vaardigheid Het berichteindpunt voor de vaardigheid. Dit is de URL die de consument gebruikt om met de vaardigheid te communiceren.

Vaardigheidsclient en vaardigheidshandler

De gebruiker van de vaardigheid gebruikt een vaardigheidsclient om activiteiten naar een vaardigheid te verzenden. De client:

  • Neemt een activiteit om naar de vaardigheid te verzenden, van een gebruiker of gegenereerd door de consument.
  • Hiermee stelt u de service-URL in voor de activiteit die naar de vaardigheid is verzonden naar het eindpunt van de host voor vaardigheden van de consument.
  • Vervangt de oorspronkelijke gespreksverwijzing door een voor het gesprek met consumentenvaardigheden.
  • Hiermee voegt u een bot-to-bot-verificatietoken toe.
  • Hiermee wordt de bijgewerkte activiteit naar de vaardigheid verzonden.

De gebruiker van de vaardigheid gebruikt een vaardigheidshandler om activiteiten van een vaardigheid te ontvangen. De handler:

  • Verwerkt de REST API-methoden van de kanaalservice.
  • Hiermee wordt verificatie en claimvalidatie afgedwongen.
  • Haalt de oorspronkelijke gespreksreferentie op.
  • Genereert een activiteit voor de adapter van de consument. Deze activiteit geeft aan dat de vaardigheid is voltooid of een activiteit is om door te sturen naar de gebruiker.

Een vaardigheid rechtstreeks beheren

U moet logica toevoegen aan uw vaardigheidsconsumer om actieve vaardigheden bij te houden. Het is aan de consument om te bepalen hoe het vaardigheden in het algemeen beheert, of het nu meerdere actieve vaardigheden parallel kan onderhouden of niet, enzovoort. Specifieke scenario's om rekening mee te houden zijn:

  • Het initiëren van een nieuw gesprek over consumentenvaardigheden. (Dit wordt gekoppeld aan een specifiek gesprek tussen consumenten en gebruikers.)
    • Als u parameters wilt doorgeven aan een vaardigheid, stelt u de waarde-eigenschap in de eerste activiteit in op de vaardigheid.
  • Een bestaand gesprek over consumentenvaardigheden voortzetten.
  • Een activiteit van de vaardigheid herkennen endOfConversation als het signaleren van een einde aan een gesprek met consumentenvaardigheden.
    • Als u een retourwaarde wilt ophalen uit een vaardigheid, controleert u de waarde-eigenschap van de activiteit.
    • Als u wilt controleren waarom de vaardigheid eindigt, controleert u de codeparameter van de activiteit. Dit kan erop duiden dat er een fout is opgetreden in de vaardigheid.
  • Een vaardigheid van de consument annuleren door een endOfConversation activiteit naar de vaardigheid te verzenden.

Ontdek hoe u een vaardigheidsconsumer implementeert voor een consument die een vaardigheid rechtstreeks beheert.

Een vaardigheid beheren met behulp van een vaardigheidsdialoogvenster

Als u de dialoogvensterbibliotheek gebruikt, kunt u een vaardigheidsdialoogvenster gebruiken om een vaardigheid te beheren. Terwijl het dialoogvenster vaardigheid het actieve dialoogvenster is, worden activiteiten doorgestuurd naar de bijbehorende vaardigheid.

  • Wanneer u het dialoogvenster vaardigheid maakt, gebruikt u de parameter voor dialoogvensteropties om alle informatie op te geven die het dialoogvenster nodig heeft om de vaardigheid te beheren, zoals de app-id van de consument en de callback-URL, de gespreks-id factory die moet worden gebruikt, de eigenschappen van de vaardigheid, enzovoort.
    • Als u meer dan één vaardigheid als dialoogvenster wilt beheren, moet u voor elke vaardigheid een afzonderlijk vaardigheidsdialoogvenster maken.
    • Vaak voegt u het vaardigheidsdialoogvenster toe aan een onderdeeldialoogvenster.
  • Als u het dialoogvenster vaardigheid wilt starten, gebruikt u de beginmethode van de dialoogvenstercontext en geeft u de id van het vaardigheidsdialoogvenster op. Gebruik de parameter Opties om de activiteit op te geven die de consument als eerste activiteit naar de vaardigheid verzendt.
  • U kunt het vaardigheidsdialoogvenster annuleren of onderbreken zoals in elk ander dialoogvenster. Zie hoe u onderbrekingen van gebruikers voor een voorbeeld kunt afhandelen.

Lees hoe u een dialoogvenster gebruikt om een vaardigheid te gebruiken voor een consument die een dialoogvenster gebruikt om een vaardigheid te beheren.

Een bezorgingsmodus van verwachte antwoorden gebruiken

Bots en vaardigheden maken gebruik van industriestandaard REST en JSON via HTTPS voor communicatie. De verwerkingsstroom voor normale activiteit wordt gestart wanneer de hoofdbot een bericht van een kanaal ontvangt op het eindpunt van het bericht. De hoofdbot verzendt vervolgens de activiteit naar de vaardigheid voor verwerking. Antwoorden van de vaardigheid worden teruggezet naar het hosteindpunt van de vaardigheidshost van de hoofdbot, niet naar het berichteindpunt. Ten slotte worden de antwoorden verder verwerkt of teruggezet naar het kanaal door de hoofdbot. Deze normale stroom kan worden gewijzigd door de leveringsmodus van de activiteit te wijzigen die naar de vaardigheid wordt verzonden. Als de leveringsmodus is ingesteld op 'ExpectReplies', wordt de vaardigheid niet teruggezet naar het hosteindpunt van de vaardigheid. In plaats daarvan worden alle antwoordactiviteiten geserialiseerd in de hoofdtekst van het antwoord. De hoofdbot herhaalt deze activiteiten en verwerkt ze op dezelfde manier als door het hosteindpunt van de vaardigheid.

Zie de bezorgingsmodus in de activiteitsspecificatie voor meer informatie.