Share via


A Microsoft Bot Framework alapjai

A KÖVETKEZŐKRE VONATKOZIK: SDK v4

A robot olyan alkalmazás, amellyel a felhasználók beszélgetési módon, szöveggel, ábrákkal (például kártyákkal vagy képekkel) vagy beszéddel kommunikálnak. Az Azure AI Bot Service egy felhőalapú platform. Robotokat üzemeltet, és elérhetővé teszi azokat olyan csatornák számára, mint a Microsoft Teams, a Facebook vagy a Slack.

A Bot Framework Service, amely az Azure AI Bot Service egyik összetevője, információt küld a felhasználó robothoz csatlakoztatott alkalmazása és a robot között. Az egyes csatornák további információkat is tartalmazhatnak az általuk küldött tevékenységekben. A robotok létrehozása előtt fontos megérteni, hogy a robot hogyan használja a tevékenységobjektumokat a felhasználókkal való kommunikációhoz.

Ez az ábra két tevékenységtípust, beszélgetésfrissítést és üzenetet mutat be, amelyek akkor cserélhetők le, ha egy felhasználó egy echorobottal kommunikál.

tevékenységdiagram

A Bot Framework szolgáltatás beszélgetésfrissítést küld, amikor egy fél csatlakozik a beszélgetéshez. A Bot Framework Emulator használatával folytatott beszélgetés indításakor például két beszélgetésfrissítési tevékenység jelenhet meg (az egyik a beszélgetéshez csatlakozó felhasználó, a másik a robothoz való csatlakozáshoz). A beszélgetés frissítési tevékenységeinek megkülönböztetéséhez ellenőrizze, hogy ki szerepel a tevékenység hozzáadott tulajdonságában.

Az üzenettevékenység beszélgetési információkat hordoz a felek között. Egy echorobot-példában az üzenettevékenységek egyszerű szöveget hordoznak, és a csatorna megjeleníti ezt a szöveget. Másik lehetőségként előfordulhat, hogy az üzenet tevékenységében szerepel a kimondandó szöveg, a javasolt műveletek vagy a megjelenítendő kártyák.

Tipp.

A Bot Framework protokoll implementálása minden csatornán múlik, és az egyes csatornák működése kissé eltérő lehet. Egyes csatornák például először a beszélgetésfrissítési tevékenységeket, mások pedig az első üzenettevékenység elküldése után küldik el a beszélgetésfrissítési tevékenységeket. Egy csatorna a robotot és a felhasználót is belefoglalhatja egy beszélgetésfrissítési tevékenységbe, míg egy másik két beszélgetésfrissítési tevékenységet is küldhet.

Ebben a példában a robot létrehozott és küldött egy üzenettevékenységet a kapott bejövő üzenettevékenységre válaszul. A robotok azonban más módokon is válaszolhatnak a fogadott üzenettevékenységekre, és gyakran előfordul, hogy a robot válaszol egy beszélgetésfrissítési tevékenységre egy üzenettevékenység üdvözlő üzenettel való elküldésével. További információkért tekintse meg, hogyan üdvözölhet egy felhasználót.

A Bot Framework SDK

A Bot Framework SDK lehetővé teszi az Azure AI Bot Service-ben üzemeltethető robotok készítését. A szolgáltatás meghatároz egy REST API-t és egy tevékenységprotokollt a robot és a csatornák vagy a felhasználók interakciójának módjához. Az SDK erre a REST API-ra épül, és absztrakciót biztosít a szolgáltatásról, hogy a beszélgetési logikára összpontosíthasson. Bár nem kell ismernie a REST szolgáltatást az SDK használatához, néhány funkció megértése hasznos lehet.

A robotok olyan alkalmazások, amelyek beszélgetési felülettel rendelkeznek. Ezek egyszerű, ismétlődő feladatok, például vacsorafoglalás vagy profiladatok gyűjtésének automatizálására használhatók, amelyek már nem igényelnek közvetlen emberi beavatkozást. A felhasználók szöveg, interaktív kártyák és beszéd segítségével társaloghatnak a robotokkal. A robotokkal való interakció lehet egy gyors kérdés-felelet, vagy akár kifinomult társalgás is, amely intelligens módon biztosít hozzáférést a szolgáltatásokhoz.

Feljegyzés

Az SDK és a REST API által biztosított funkciók támogatása csatorna szerint változik. A robotot a Bot Framework Emulator használatával tesztelheti, de minden olyan csatornán tesztelnie kell a robot összes funkcióját, amelyben elérhetővé szeretné tenni a robotot.

Az interakciók magukban foglalják a tevékenységek cseréjét, amelyeket felváltva kezelnek.

Tevékenységek

A felhasználó (vagy csatorna) és a robot közötti minden interakció tevékenységként jelenik meg. A Bot Framework tevékenységséma határozza meg a felhasználók vagy csatornák és robotok között kicserélhető tevékenységeket. A tevékenységek emberi szöveget vagy beszédet, alkalmazásról alkalmazásra vonatkozó értesítéseket, más üzenetekre való reakciókat stb. jelölhetnek.

Fordul

A beszélgetések során az emberek gyakran egyenként beszélnek, és felváltva beszélnek. A robotok általában reagálnak a felhasználói bemenetekre. A Bot Framework SDK-ban a felhasználó által a robotnak küldött bejövő tevékenységből és a robot által a felhasználónak küldött minden tevékenységből áll, azonnali válaszként. Úgy is gondolhatja, hogy a robot egy adott tevékenységet kapó feldolgozással jár.

Előfordulhat például, hogy egy felhasználó megkér egy robotot, hogy végezzen el egy bizonyos feladatot. A robot válaszolhat egy kérdésre, hogy további információt kapjon a tevékenységről, amikor ez a forduló véget ér. A következő lépésben a robot egy új üzenetet kap a felhasználótól, amely a robot kérdésére adott választ tartalmazza, vagy a tárgy megváltoztatását vagy a feladat végrehajtására irányuló kezdeti kérés figyelmen kívül hagyását jelzi.

Robotalkalmazás felépítése

Az SDK egy robotosztályt határoz meg, amely kezeli a robotalkalmazás beszélgetési érvelését. A robotosztály:

  • Felismeri és értelmezi a felhasználó bemenetét.
  • A bemenettel kapcsolatos okok és a kapcsolódó feladatok végrehajtása.
  • A robot által végzett vagy végrehajtott műveletekkel kapcsolatos válaszokat generál.

Az SDK egy adapterosztályt is definiál, amely kezeli a csatornákkal való kapcsolatot. Az adapter:

  • Metódust biztosít a felhasználói csatornára irányuló kérések kezeléséhez és a kérések generálásához.
  • Tartalmaz egy köztesszoftver-folyamatot, amely magában foglalja a robot forduláskezelőjén kívüli feldolgozást is.
  • Meghívja a robot forduláskezelőjét, és elkapja a turn handlerben egyébként nem kezelt hibákat.

Emellett a robotoknak gyakran kell lekérni és tárolniuk az állapotot. Az állapotot tárolási, robotállapot- és tulajdonság-tartozékosztályok kezelik. Az SDK nem biztosít beépített tárolót, de absztrakciókat biztosít a tároláshoz és a tárolási réteg néhány implementációját. A kezelési állapot témaköre ezeket az állapot- és tárolási funkciókat ismerteti.

A robot kapcsolati és érvelési elemeket, valamint absztrakciót biztosít az állapothoz

Az SDK nem követeli meg, hogy egy adott alkalmazásréteget használjon a webes kérések küldéséhez és fogadásához. A Bot Framework sablonokkal és mintákkal rendelkezik a ASP.NET (C#), restify (JavaScript) és aiohttp (Python) számára. Azonban választhat, hogy egy másik alkalmazásréteget használ az alkalmazáshoz.

Amikor az SDK használatával hoz létre robotot, megadja a HTTP-forgalom fogadásához és az adapterhez való továbbításához szükséges kódot. A Bot Framework néhány sablont és mintát biztosít, amelyekkel saját robotokat fejleszthet.

Feljegyzés

A Bot Framework JavaScript, C# és Python SDK-k továbbra is támogatottak lesznek, a Java SDK-t azonban 2023 novemberében végső hosszú távú támogatással kivonják.

A Java SDK-val létrehozott meglévő robotok továbbra is működni fognak.

Új robotépítéshez fontolja meg a Power Virtual Agents használatát, és olvassa el a megfelelő csevegőrobot-megoldás kiválasztását.

További információ: A robotépítés jövője.

Robotlogika

A robotobjektum egy forduló beszélgetési érvelését vagy logikáját tartalmazza, és elérhetővé tesz egy turn handlert, amely a robotadapter bejövő tevékenységeinek fogadására alkalmas módszer.

Az SDK számos különböző paradigmát biztosít a robotlogika kezeléséhez.

  • A tevékenységkezelők egy eseményvezérelt modellt biztosítanak, amelyben a bejövő tevékenységtípusok és altípusok az események. Fontolja meg a felhasználóval korlátozott, rövid interakcióval rendelkező robotok tevékenységkezelőjének kezelését.
    • Használjon tevékenységkezelőt, és implementáljon kezelőket minden tevékenységtípushoz vagy altípushoz, amelyet a robot felismer és reagál.
    • Teams-tevékenységkezelővel olyan robotokat hozhat létre, amelyek csatlakozhatnak a Teams-csatornához. (A Teams-csatorna megköveteli, hogy a robot kezelje a csatornaspecifikus viselkedést.)
  • A párbeszédpaneltár állapotalapú modellt biztosít a felhasználóval folytatott hosszan futó beszélgetések kezeléséhez.
    • Használjon tevékenységkezelőt és egy összetevő párbeszédpanelt a nagyrészt szekvenciális beszélgetésekhez. További információt az összetevők és vízesések párbeszédpaneljeiről talál.
  • Implementálja saját robotosztályát, és adja meg saját logikáját az egyes fordulók kezeléséhez. Például megtudhatja, hogyan hozhat létre saját kéréseket a felhasználói bemenetek gyűjtéséhez.

A robotadapter

Az adapter rendelkezik egy folyamattevékenységi metódussal a turn elindításához.

  • Argumentumként a kérelem törzsét (a kérelem hasznos adatait, egy tevékenységre lefordítva) és a kérelem fejlécét veszi fel.
  • Ellenőrzi, hogy a hitelesítési fejléc érvényes-e.
  • Létrehoz egy környezeti objektumot a sorhoz. A környezeti objektum információkat tartalmaz a tevékenységről.
  • A környezetobjektumot a köztes szoftver folyamatán keresztül küldi el.
  • Ezután elküldi a környezetobjektumot a robotobjektum forgatókezelőjének.

Az adapter a következőket is tartalmazza:

  • A választevékenységek formázása és küldése. Ezek a válaszok általában a felhasználó számára küldött üzenetek, de olyan információkat is tartalmazhatnak, amelyeket közvetlenül a felhasználó csatornája használ fel.
  • A Bot Csatlakozás or REST API által biztosított egyéb metódusokat, például az üzenet frissítését és törlését jeleníti meg.
  • Fogások a hibák vagy kivételek egyébként nem fogott a turn.

A turn környezet

A turn context objektum információt nyújt a tevékenységről, például a feladóról és a fogadóról, a csatornáról és a tevékenység feldolgozásához szükséges egyéb adatokról. Emellett lehetővé teszi az információk hozzáadását a robot különböző rétegei között.

A turn context az SDK egyik legfontosabb absztrakciója. Nem csak az összes köztes szoftverösszetevőre és az alkalmazáslogikára viszi a bejövő tevékenységet, hanem azt a mechanizmust is biztosítja, amellyel a köztes szoftver összetevői és a robotlogika kimenő tevékenységeket küldhet.

Közbenső szoftver

A köztes szoftver hasonló minden más üzenetkezelési köztes szoftverhez, amely lineáris összetevőkből áll, amelyeket sorrendben hajtanak végre, így mindegyiknek lehetősége van a tevékenységen való működésre. A köztesszoftver-folyamat utolsó szakasza a turn handler visszahívása azon robotosztályon, amelyet az alkalmazás regisztrált az adapter folyamattevékenységi módszerével. A Middleware egy bekapcsolási módszert implementál, amelyet az adapter hív.

A turn handler argumentumként egy turn kontextust használ, általában a turn handler függvényen belül futó alkalmazáslogika dolgozza fel a bejövő tevékenység tartalmát, és válaszként létrehoz egy vagy több tevékenységet, és elküldi ezeket a kimenő tevékenységeket a turn kontextus küldési tevékenységfüggvényével . A turn kontextusban a küldési tevékenység meghívása a köztes szoftver összetevőinek meghívását eredményezi a kimenő tevékenységeken. A köztes szoftver összetevői a robot turn handler függvénye előtt és után futnak. A végrehajtás eredendően beágyazott, és mint ilyen, néha úgy is nevezik, mint egy hagyma.

A köztes szoftver témakör részletesebben ismerteti a köztes szoftvereket.

Robot állapota és tárolása

A többi webalkalmazáshoz hasonlóan a robotok is természetüknél fogva állapot nélküliek. A roboton belüli állapot ugyanazokat a paradigmákat követi, mint a modern webalkalmazások, a Bot Framework SDK pedig tárolási rétegeket és állapotkezelési absztrakciókat biztosít az állapotkezelés megkönnyítése érdekében.

A kezelési állapot témaköre ezeket az állapot- és tárolási funkciókat ismerteti.

Üzenetkezelési végpont és kiépítés

Az alkalmazásnak általában egy REST-végpontra lesz szüksége, amelyen üzeneteket fogadhat. Emellett erőforrásokat kell kiépítenie a robot számára a használni kívánt platformnak megfelelően.

Kövesse a Robot létrehozása rövid útmutatót egy egyszerű echorobot létrehozásához és teszteléséhez.

HTTP-részletek

A tevékenységek HTTP POST-kérésen keresztül érkeznek a robothoz a Bot Framework Service-ből. A robot 200 HTTP-állapotkóddal válaszol a bejövő POST-kérésre. A robottól a csatornára küldött tevékenységek külön HTTP POST-en lesznek elküldve a Bot Framework Service-nek. Ez viszont egy 200 HTTP-állapotkóddal van nyugtázva.

A protokoll nem határozza meg a POST-kérelmek és azok nyugtázásának sorrendjét. A gyakori HTTP-szolgáltatási keretrendszerekhez való igazodás érdekében azonban ezek a kérések általában beágyazottak, ami azt jelenti, hogy a kimenő HTTP-kérés a robottól származik a bejövő HTTP-kérés hatókörén belül. Ezt a mintát a korábbi diagram szemlélteti. Mivel két különálló HTTP-kapcsolat létezik, a biztonsági modellnek mindkettőt biztosítania kell.

Feljegyzés

A robotnak 15 másodperce van arra, hogy a hívást a legtöbb csatornán 200 állapottal nyugtázza. Ha a robot 15 másodpercen belül nem válaszol, HTTP GatewayTimeout-hiba (504) lép fel.

A tevékenységfeldolgozó verem

Vizsgáljuk meg az előző sorozatdiagramot, amely egy üzenettevékenység érkezésére összpontosít.

A tevékenységek robot általi feldolgozását szemléltető szekvenciadiagram.

A csatorna elküldi a felhasználó üzenetét az Azure AI Bot Service-nek, és a szolgáltatás továbbítja az üzenetet a robot üzenetkezelési végpontjára. A robot válaszát a rendszer a kör hatókörén belül küldi el a felhasználónak.

A fenti példában a robot egy másik üzenettevékenységgel válaszolt az üzenettevékenységre, amely ugyanazt a szöveges üzenetet tartalmazza. A feldolgozás a HTTP POST kéréssel kezdődik, és a tevékenységadatok JSON hasznos adatként vannak tárolva, és a webkiszolgálóra érkeznek. Gyakran ASP.NET projekteket használnak C#-robotokhoz, és a JavaScript-Node.js-robotokhoz egy népszerű keretrendszert, például az Expresst vagy a Restify-t használják.

Az SDK integrált összetevője, az adapter az SDK-futtatókörnyezet magja. A tevékenység JSON-ként van végrehajtva a HTTP POST törzsben. Ez a JSON deszerializálva van, hogy létrehozza azt a tevékenységobjektumot, amelyet aztán átad az adapternek a folyamattevékenység-metódusán keresztül. A tevékenység fogadásakor az adapter létrehoz egy fordulókörnyezetet, és meghívja a köztes szoftvert.

Ahogy fentebb említettük, a turn környezet biztosítja a robot számára a kimenő tevékenységek küldésének mechanizmusát, leggyakrabban egy bejövő tevékenységre válaszul. A turn környezet küldési, frissítési és törlési tevékenységválasz-metódusokat biztosít. Minden válaszmetódus aszinkron folyamaton fut.

Fontos

Az elsődleges robotot kezelő szál a környezeti objektum eltávolításával foglalkozik, amikor elkészült. Minden tevékenységhívásnál ügyeljen rá, await hogy az elsődleges szál várakozni fog a létrehozott tevékenységre, mielőtt befejezi a feldolgozást és a turn-környezet eltávolítását. Ellenkező esetben, ha egy válasz (beleértve a kezelőit is) jelentős időt vesz igénybe, és megpróbál cselekedni a környezeti objektumon, akkor előfordulhat, hogy a környezet megsemmisítése hiba történt.

Robotsablonok

Ki kell választania az alkalmazáshoz használt alkalmazásréteget; A Bot Framework azonban ASP.NET (C#), restify (JavaScript) és aiohttp (Python) sablonokkal és mintákkal rendelkezik. A dokumentáció meg van írva, feltéve, hogy ezen platformok egyikét használja, de az SDK-nak nincs szüksége rá. A sablonok elérésére és telepítésére vonatkozó útmutatásért tekintse meg a robot létrehozása rövid útmutatóját.

A robot egy webalkalmazás, és az SDK minden nyelvi verziójához sablonokat biztosítanak. Minden sablon alapértelmezett végpont-implementációt és adaptert biztosít. Minden sablon a következőket tartalmazza:

  • Az erőforrások kiépítése
  • Egy nyelvspecifikus HTTP-végpont implementációja, amely a bejövő tevékenységeket egy adapterhez irányítja.
  • Adapterobjektum
  • Robotobjektum

A különböző sablontípusok közötti fő különbség a robotobjektumban van. A sablonok a következők:

  • Üres robot
    • Tartalmaz egy tevékenységkezelőt, amely üdvözli a felhasználót a beszélgetésben egy "hello world" üzenet küldésével a beszélgetés első fordulóján.
  • Echo robot
    • Tevékenységkezelő használatával üdvözli a felhasználókat, és visszahangosítja a felhasználói bemenetet.
  • Alapvető robot
    • Az SDK számos funkcióját egyesíti, és bemutatja a robotok ajánlott eljárásait.
    • Tevékenységkezelő használatával üdvözli a felhasználókat.
    • A beszélgetés kezeléséhez összetevő-párbeszédpanelt és gyermekablakokat használ.
    • A párbeszédpanelek a Language Understanding (LUIS) és a QnA Maker funkcióit használják.

Feljegyzés

Az Azure AI QnA Maker 2025. március 31-én megszűnik. 2022. október 1-től nem hozhat létre új QnA Maker-erőforrásokat vagy tudásbázis. A kérdés- és válaszképesség újabb verziója már elérhető az Azure AI Language részeként.

Az Egyéni kérdések megválaszolása, az Azure AI Nyelv egyik funkciója a QnA Maker szolgáltatás frissített verziója. A Bot Framework SDK kérdés-válasz támogatásával kapcsolatos további információkért lásd a természetes nyelv megértését.

Feljegyzés

A Language Understanding (LUIS) 2025. október 1-jén megszűnik. 2023. április 1-től nem hozhat létre új LUIS-erőforrásokat. Az Azure AI Language részeként már elérhető a nyelvértés újabb verziója.

Az Azure AI Language egyik funkciója, a beszélgetési nyelv megértése (CLU) a LUIS frissített verziója. További információ a Bot Framework SDK nyelvfelismerési támogatásáról: Természetes nyelvfelismerés.

További információk

Roboterőforrások kezelése

Kezelnie kell a robot erőforrásait, például az alkalmazásazonosítóját és a jelszavát, valamint a csatlakoztatott szolgáltatások adatait. A robot üzembe helyezésekor biztonságos hozzáférésre lesz szüksége ezekhez az információkhoz. Az összetettség elkerülése érdekében a Bot Framework SDK-cikkek többsége nem írja le, hogyan kezelheti ezeket az információkat.

Csatornaadapterek

Az SDK-val csatornaadaptereket is használhat, amelyekben maga az adapter végzi el azokat a feladatokat, amelyeket a Bot Csatlakozás or szolgáltatás normál módon végez egy csatornán.

Az SDK néhány csatornás adaptert biztosít bizonyos nyelveken. További csatornaadapterek érhetők el a Botkit és a Közösségi adattárakon keresztül. További információkért tekintse meg a Bot Framework SDK-adattár csatornáinak és adaptereinek táblázatát.

A Bot Csatlakozás or REST API

A Bot Framework SDK a Bot Csatlakozás or REST API-ra épül. Ha szeretné megismerni az SDK-t támogató mögöttes HTTP-kéréseket, tekintse meg az Csatlakozás or-hitelesítést és a kapcsolódó cikkeket. A robot által küldött és kapott tevékenységek megfelelnek a Bot Framework tevékenységsémának.

Következő lépések

  • Az állapot robotokban betöltött szerepének megismeréséhez tekintse meg az állapot kezelésével kapcsolatos témakört.
  • A Microsoft Teams-robotok fejlesztésének főbb fogalmait a Microsoft Teams-robotok működése című témakörben tekintheti meg.