Dela via


Om kunskapskonsumenter

GÄLLER FÖR: SDK v4

En kunskapskonsument är en robot som kan anropa en eller flera färdigheter. När det gäller färdigheter är en rotrobot en användarinriktad robot som också är en kunskapskonsument.

Från användarens perspektiv är rotroboten den robot som de interagerar med. Från kunskapens perspektiv är kunskapskonsumenten den kanal som den kommunicerar med användaren över. (Mer information finns i kunskapsöversikten.)

Som kunskapskonsument innehåller en rotrobot ytterligare logik för att hantera trafik mellan den och en färdighet:

  • Konfigurationsinformation för varje färdighet som roten använder.
  • En konversations-ID-fabrik som gör att roten kan växla fram och tillbaka mellan konversationen den har med användaren och den som den har med en färdighet.
  • En kunskapsklient som kan paketera och vidarebefordra aktiviteter till en kunskapsrobot.
  • En kunskapshanterare som kan ta emot begäranden och packa upp aktiviteter från en kunskapsrobot.

Hantera färdigheter

Att starta och låta en enda färdighet köras till slutförande hanteras med några tillägg till kunskapskonsumenten. Mer komplexa scenarier är möjliga, med flera kunskaper eller konversationstrådar.

En kunskapskonsument implementerar minst två HTTP-slutpunkter:

  • En meddelandeslutpunkt tar emot aktiviteter från användaren eller kanalen. Det här är den vanliga meddelandeslutpunkten som alla robotar implementerar.
  • En kunskapsvärdslutpunkt för att ta emot aktiviteter från en färdighet. Detta fungerar som en motringnings-URL, tjänst-URL:en som färdigheten svarar på. (Kunskapskonsumenten måste koppla kod som tar emot HTTP-metodbegäran från färdigheten med en kunskapshanterare.)

Kunskapsbeskrivningar

För varje färdighet lägger du till ett Bot Framework-kunskapsobjekt i kunskapskonsumentens konfigurationsfil. Var och en har ett ID, ett app-ID och en slutpunkt för färdigheten.

Property Beskrivning
ID ID:t eller nyckeln för kompetensen, som är specifik för kunskapskonsumenten.
App-ID Den appId tilldelade robotresursen när kunskapen registrerades i Azure.
Kunskapsslutpunkt Meddelandeslutpunkten för färdigheten. Det här är den URL som konsumenten använder för att kommunicera med kunskapen.

Kunskapsklient och kunskapshanterare

Kunskapskonsumenten använder en kunskapsklient för att skicka aktiviteter till en färdighet. Klienten:

  • Tar en aktivitet för att skicka till färdigheten, antingen från en användare eller genereras av konsumenten.
  • Anger tjänst-URL:en för aktiviteten som skickas till kunskapen till konsumentens kunskapsvärdslutpunkt.
  • Ersätter den ursprungliga konversationsreferensen med en för konsumentfärdighetskonversationen.
  • Lägger till en bot-to-bot-autentiseringstoken.
  • Skickar den uppdaterade aktiviteten till färdigheten.

Kunskapskonsumenten använder en kompetenshanterare för att ta emot aktiviteter från en färdighet. Hanteraren:

  • Hanterar REST API-metoderna för kanaltjänsten.
  • Framtvingar verifiering av autentisering och anspråk.
  • Hämtar den ursprungliga konversationsreferensen.
  • Genererar en aktivitet för konsumentens kort. Den här aktiviteten kommer antingen att signalera att färdigheten har slutförts eller vara en aktivitet som ska vidarebefordras till användaren.

Hantera en färdighet direkt

Du måste lägga till logik till din kunskapskonsument för att spåra eventuella aktiva färdigheter. Det är upp till konsumenten hur det hanterar färdigheter i allmänhet, om det kan upprätthålla flera aktiva färdigheter parallellt eller inte, och så vidare. Specifika scenarier att överväga är:

  • Initiera en ny konsumentfärdighetskonversation. (Detta kommer att associeras med en specifik konsument-användarkonversation.)
    • Om du vill skicka parametrar till en färdighet anger du värdeegenskapen i den inledande aktiviteten till färdigheten.
  • Fortsätta en befintlig konsumentfärdighetskonversation.
  • Att känna igen en endOfConversation aktivitet från färdigheten som att signalera ett slut på en konsumentfärdig konversation.
    • Om du vill hämta ett returvärde från en färdighet kontrollerar du aktivitetens värdeegenskap .
    • Kontrollera varför färdigheten slutar genom att kontrollera aktivitetens kodparameter , vilket kan tyda på att färdigheten påträffade ett fel.
  • Avbryta en färdighet från konsumenten genom att skicka en endOfConversation aktivitet till färdigheten.

Se hur du implementerar en kunskapskonsument för en konsument som hanterar en kompetens direkt.

Hantera en färdighet med hjälp av en kunskapsdialogruta

Om du använder dialogrutebiblioteket kan du använda en kunskapsdialogruta för att hantera en färdighet. Även om kunskapsdialogrutan är den aktiva dialogrutan vidarebefordras aktiviteter till den associerade färdigheten.

  • När du skapar kunskapsdialogrutan använder du parametern dialogalternativ för att ange all information som dialogrutan behöver för att hantera kunskapen, till exempel konsumentens app-ID och motringnings-URL, konversations-ID-fabriken som ska användas, kompetensens egenskaper och så vidare.
    • Om du vill hantera mer än en färdighet som en dialogruta måste du skapa en separat kunskapsdialogruta för varje färdighet.
    • Ofta lägger du till kunskapsdialogrutan i en komponentdialogruta.
  • Om du vill starta kunskapsdialogrutan använder du dialogkontextens startmetod och anger kunskapsdialogrutans ID. Använd alternativparametern för att ange den aktivitet som konsumenten skickar som den första aktiviteten till färdigheten.
  • Du kan avbryta eller avbryta kunskapsdialogrutan på samma sätt som i andra dialogrutor. Se hur du hanterar användaravbrott för ett exempel.

Se hur du använder en dialogruta för att använda en färdighet för en konsument som använder en dialogruta för att hantera en färdighet.

Använda ett leveransläge för förväntade svar

Robotar och färdigheter använder branschstandard-REST och JSON via HTTPS för kommunikation. Normalt aktivitetsbearbetningsflöde startar när rotroboten tar emot ett inlägg från en kanal vid meddelandeslutpunkten. Rotroboten skickar sedan aktiviteten vidare till färdigheten för bearbetning. Svar från färdigheten skickas tillbaka till rotrobotens slutpunkt för kunskapsvärd, inte dess slutpunkt för meddelanden. Slutligen bearbetas svaren ytterligare eller publiceras tillbaka till kanalen av rotroboten. Det här normala flödet kan ändras genom att ändra leveransläget för aktiviteten som skickas till färdigheten. Om leveransläget är inställt på "ExpectReplies" kommer färdigheten inte att skicka tillbaka till kunskapsvärdslutpunkten. I stället serialiseras alla svarsaktiviteter i svarets brödtext. Rotroboten itererar sedan över dessa aktiviteter och bearbetar dem på liknande sätt som de skulle ha bearbetats av kunskapsvärdslutpunkten.

Mer information finns i Leveransläge i aktivitetsspecifikationen.