Dela via


Färdighetsöversikt

GÄLLER FÖR: SDK v4

Du kan utöka en robot med hjälp av en kunskapsrobot . En färdighet kan användas av olika andra robotar, vilket underlättar återanvändning, och på så sätt kan du skapa en användarinriktad robot och utöka den genom att använda dina egna eller tredje parts kunskaper.

  • En färdighet är en robot som kan utföra en uppsättning uppgifter för en annan robot – en robot kan vara både en färdighet och en användarinriktad robot.
  • En kunskapskonsument är en robot som kan anropa en eller flera färdigheter. En användarinriktad kunskapskonsument kallas även för en rotrobot.
  • Ett färdighetsmanifest är en JSON-fil som beskriver de åtgärder som färdigheten kan utföra, dess indata- och utdataparametrar och kunskapens slutpunkter.
    • Utvecklare som inte har åtkomst till kompetensens källkod kan använda informationen i manifestet för att utforma sin kompetenskonsument.
    • Schemat för färdighetsmanifestet är en JSON-fil som beskriver schemat för färdighetsmanifestet.
    • Se hur du implementerar en färdighet och hur du skriver ett färdighetsmanifest för exempel på färdighetsmanifest.

Med andra ord interagerar användaren direkt med rotroboten och rotroboten delegerar en del av sin konversationslogik till en färdighet.

Funktionen kompetens är utformad så att:

  • Kunskaper och konsumenter kommunicerar via HTTP med hjälp av Bot Framework-protokollet.
  • En kunskapskonsument kan använda flera färdigheter.
  • En kunskapskonsument kan använda en färdighet oavsett vilket språk som används för att implementera färdigheten. En C#-robot kan till exempel använda en färdighet som implementerats med JavaScript.
  • En färdighet kan också vara en kunskapskonsument och kalla andra färdigheter.
  • Färdigheter stöder användarautentisering; Användarautentisering är dock lokal för kunskapen och kan inte överföras till en annan robot.
  • Kunskaper kan fungera med både Bot Framework-adaptern och anpassade kort.

Det här diagrammet visar några av de möjliga permutationerna.

Illustration av permutationer mellan kunskapskonsumenter och färdigheter.

Konceptuell arkitektur

En kunskaps- och kunskapskonsument är separata robotar och du publicerar dem oberoende av varandra.

  • En kunskapskonsument kräver ytterligare logik för att hantera en färdighet, till exempel när du ska anropa eller avbryta färdigheten och så vidare. Förutom de vanliga robot- och adapterobjekten innehåller konsumenten några kunskapsrelaterade objekt som används för att utbyta aktiviteter med kunskapen. 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.)
  • En färdighet kräver ytterligare logik för att skicka en endOfConversation aktivitet när den är klar, så att kunskapskonsumenten vet när de ska sluta vidarebefordra aktiviteter till färdigheten.

Det här diagrammet beskriver flödet av aktiviteter från användaren till rotroboten till en färdighet och tillbaka igen.

Bild av hur aktiviteter flödar från användaren till kunskapen och tillbaka igen.

  1. Rotrobotens adapter tar emot aktiviteter från användaren och vidarebefordrar dem till rotrobotens aktivitetshanterare. (Aktiviteter från användaren tas emot på rotrobotens meddelandeslutpunkt.)
  2. Rotroboten använder en HTTP-kunskapsklient för att skicka en aktivitet till kunskapen. Klienten hämtar information om konsumentfärdighetskonversation från en kunskapsdefinition och en fabrik för kunskapskonversation. Detta inkluderar den tjänst-URL som färdigheten använder för att svara på aktiviteten.
  3. Färdighetens adapter tar emot aktiviteter från kunskapskonsumenten och vidarebefordrar dem till färdighetens aktivitetshanterare. (Aktiviteter från konsumenten tas emot på kunskapsrobotens meddelandeslutpunkt.)
  4. När färdigheten svarar tar rotrobotens kunskapshanterare emot aktiviteten. Den hämtar konversationsinformationen för rotanvändare från kunskapskonversationens ID-fabrik. Sedan vidarebefordras aktiviteten till rotrobotens adapter. (Aktiviteter från färdigheten tas emot vid rotrobotens slutpunkt för värdfärdighet.)
  5. Rotrobotens kort genererar internt ett proaktivt meddelande för att återuppta konversationen med användaren.
  6. Rotrobotens adapter skickar meddelanden från kunskapen till användaren.

De här objekten hjälper dig att hantera färdigheter och dirigera kunskapstrafik:

  • En Bot Framework-färdighet beskriver routningsinformation för en färdighet och kan läsas från kunskapskonsumentens konfigurationsfil.
  • En HTTP-kunskapsklient skickar aktiviteter till en färdighet.
  • En kunskapshanterare tar emot aktiviteter från en färdighet.
  • Kunskapskonversationens ID-fabrik översätts mellan referensen för användarrotskonversation och referensen för rotfärdighetskonversation.
  • Bot Connector-tjänsten tillhandahåller både kanal- och robot-till-robot-autentisering. Med hjälp av ett konfigurationsobjekt för autentisering kan du lägga till anspråksverifiering till en kunskaps- eller kunskapskonsument för att begränsa vilka program eller användare som har åtkomst.

Både kunskapsklienten och kunskapshanterarobjekten använder konversations-ID-fabriken för att översätta mellan konversationen som rotroboten använder för att interagera med användaren och konversationen som rotroboten använder för att interagera med kunskapen.

Färdighetsmanifest

Ett färdighetsmanifest är en JSON-fil som beskriver de åtgärder som färdigheten kan utföra, dess indata- och utdataparametrar, färdighetens slutpunkter och sändningsmodeller för färdigheten.

Information om schemat för färdighetsmanifestet finns i hur du skriver ett färdighetsmanifest.

Robot-till-robot-kommunikation

Det är viktigt att förstå vissa aspekter av den här designen, oberoende av vilken robot du utformar.

Färdighetsåtgärder

Vissa kunskaper kan utföra flera uppgifter eller åtgärder. Till exempel kan en att göra-färdighet tillåta att skapa, uppdatera, visa och ta bort aktiviteter som kan nås som diskreta konversationer.

Konversationsreferenser

Användarrotskonversationen skiljer sig från rotfärdighetskonversationen.

Konversations-ID-fabriken hjälper till att hantera trafik mellan en kunskapskonsument och en färdighet. Fabriken översätts mellan ID:t för konversationen som roten har med användaren och den som den har med kunskapen. Med andra ord genererar det ett konversations-ID för användning mellan roten och färdigheten och återställer det ursprungliga användarrotskonversations-ID:t från konversations-ID:t för rotfärdighet.

Koordinering mellan servrar

Rot- och kunskapsrobotarna kommunicerar via HTTP. Så instansen av rotroboten som tar emot en aktivitet från en färdighet kanske inte är samma instans som skickade den initierande aktiviteten. Med andra ord kan olika servrar hantera dessa två begäranden.

  • Spara alltid tillstånd i kunskapskonsumenten innan du vidarebefordrar en aktivitet till en färdighet. Detta säkerställer att den instans som tar emot trafik från en färdighet kan fortsätta där den tidigare instansen slutade innan den kallade färdigheten.
  • När kunskapshanteraren tar emot en aktivitet från en färdighet översätts den till en form som är lämplig för kunskapskonsumenten och vidarebefordrar den till konsumentens kort.

Kunskapskonsument och kompetenstillstånd

Kunskapskonsumenten och skickligheten hanterar sitt eget tillstånd separat. Konsumenten skapar dock det konversations-ID som används för att kommunicera med kunskapen. Detta kan påverka konversationstillståndet i kunskapen.

Viktigt!

Som tidigare nämnts kan en annan instans av konsumenten få kunskapssvaret när kunskapskonsumenten delegerar en användaraktivitet till en färdighet. Konsumenten bör alltid spara konversationstillståndet omedelbart innan en aktivitet vidarebefordras till en färdighet.

Robot-till-robot-autentisering

Du behöver inget app-ID och lösenord för att testa en kunskaps- och kunskapskonsument lokalt i Bot Framework-emulatorn. En Azure-prenumeration krävs fortfarande för att distribuera dina kunskaper till Azure.

Autentisering på tjänstnivå hanteras av Bot Connector-tjänsten. Ramverket använder ägartoken och robotprogram-ID:t för att verifiera identiteten för varje robot. (Bot Framework använder ett autentiseringskonfigurationsobjekt för att verifiera autentiseringshuvudet för inkommande begäranden.)

Viktigt!

Detta kräver att alla distribuerade robotar (kunskapskonsumenten och alla färdigheter som den förbrukar) har giltiga autentiseringsuppgifter för programmet.

Anspråksverifiering

Du måste lägga till en anspråksverifiering i autentiseringskonfigurationen. Anspråken utvärderas efter autentiseringshuvudet. Generera ett fel eller ett undantag i valideringskoden för att avvisa begäran.

Kommentar

Roboten utför anspråksverifiering om den har ett app-ID och lösenord. Annars utförs inte anspråksvalidering.

Det finns olika orsaker till att du kan avvisa en annars autentiserad begäran:

  • När kunskapskonsumenten endast ska acceptera trafik från färdigheter som den kan ha initierat en konversation med.
  • När en färdighet ingår i en betald tjänst och användare som inte finns i databasen inte ska ha åtkomst.
  • När du vill begränsa åtkomsten till kunskapen till specifika kunskapskonsumenter.

Viktigt!

Om du inte anger någon anspråksverifierare genererar roboten ett fel eller ett undantag när du tar emot en aktivitet från en annan robot, oavsett om din robot är en färdighet eller en kunskapskonsument.

Felsökning av kunskapskonversationer

Eftersom trafiken mellan kompetens och kunskapskonsumenter autentiseras finns det extra steg när du felsöker sådana robotar.

Annars kan du felsöka en kunskapskonsument eller färdighet ungefär som du felsöker andra robotar. Mer information finns i Felsöka en robot och felsöka med Bot Framework-emulatorn.

Ytterligare information

Från användarens perspektiv interagerar de med rotroboten. Från kunskapens perspektiv är kunskapskonsumenten den kanal som den kommunicerar med användaren över.