Megosztás a következőn keresztül:


Eseményvezérelt beszélgetések tevékenységkezelővel

A KÖVETKEZŐKRE VONATKOZIK: SDK v4

A tevékenységkezelő eseményvezérelt módszer a robot beszélgetési logikájának rendszerezésére. A tevékenység minden különböző típusa vagy altípusa más típusú beszélgetési eseményt jelöl. A borítók alatt a robot turn handlerje meghívja az egyes tevékenységkezelőt bármilyen típusú tevékenységhez, amelyet kapott.

Ha például a robot üzenettevékenységet kap, a turn handler látni fogja a bejövő tevékenységet, és elküldi azt az üzenettevékenység-kezelőnek . A robot létrehozásakor az üzenetek kezelésére és megválaszolására szolgáló robotlogika ebben az üzenettevékenység-kezelőben jelenik meg. Hasonlóképpen, a beszélgetéshez hozzáadott tagok kezelésének logikája a tagok által hozzáadott kezelőben jelenik meg, amelyet a rendszer akkor hív meg, amikor hozzáad egy tagot a beszélgetéshez.

A robotlogika rendszerezésének egyéb módjaiért tekintse meg a robotlogika szakaszt a robotok működéséről.

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.

Ezeknek a kezelőknek a logikájának implementálásához felül kell bírálnia ezeket a módszereket a robotban, például az alábbi mintatevékenység-kezelő szakaszban. Mindegyik kezelő esetében nincs alap implementáció, ezért egyszerűen adja hozzá a felülbíráláshoz használni kívánt logikát.

Vannak olyan helyzetek, amikor felül szeretné bírálni az alapfordulat kezelőt, például az állapot mentését egy forduló végén. Ha így tesz, mindenképpen először hívja await base.OnTurnAsync(turnContext, cancellationToken); meg, hogy a további kód előtt fut-e az alap implementáció OnTurnAsync . Ez az alap implementáció többek között a többi tevékenységkezelő, például OnMessageActivityAsynca .

Tevékenységkezelés

A robotlogika egy vagy több csatornáról dolgozza fel a bejövő tevékenységeket, és válaszként kimenő tevékenységeket hoz létre.

A fő robotlogika a robotkódban van definiálva. A robot tevékenységkezelőként való implementálásához származtathatja a robotosztályt ActivityHandler, amely megvalósítja a IBot felületet. ActivityHandlerkülönböző kezelőket határoz meg a különböző típusú tevékenységekhez, például OnMessageActivityAsynca .OnMembersAddedAsync Ezek a metódusok védettek, de felül is bírálhatók, mivel a következőből ActivityHandlerszármazunk: .

A definiált ActivityHandler kezelők a következők:

Esemény Kezelő Leírás
Minden fogadott tevékenységtípus OnTurnAsync Meghívja a többi kezelő egyikét a fogadott tevékenység típusa alapján.
Üzenettevékenység érkezett OnMessageActivityAsync Ezt felülbírálhatja egy message tevékenység kezeléséhez.
Beszélgetésfrissítési tevékenység érkezett OnConversationUpdateActivityAsync Egy conversationUpdate tevékenység során meghív egy kezelőt, ha a robottól eltérő tagok csatlakoztak vagy kiléptek a beszélgetésből.
Nem robot tagok csatlakoztak a beszélgetéshez OnMembersAddedAsync Ezt felülbírálhatja a beszélgetésbe bekapcsolódó tagok kezeléséhez.
Nem robottagok hagyták el a beszélgetést OnMembersRemovedAsync Felülbírálja ezt a beállítást a beszélgetésből kilépő tagok kezeléséhez.
Eseménytevékenység érkezett OnEventActivityAsync Egy event tevékenységen az eseménytípusra jellemző kezelőt hív meg.
Jogkivonat-válasz eseménytevékenység érkezett OnTokenResponseEventAsync Felülbírálja ezt a jogkivonat-válaszesemények kezeléséhez.
Nem jogkivonat-válasz eseménytevékenység érkezett OnEventAsync Felülbírálhatja ezt más típusú események kezelésére.
Üzenetreakció-tevékenység érkezett OnMessageReactionActivityAsync Egy messageReaction tevékenységen meghív egy kezelőt, ha egy vagy több reakciót adtak hozzá vagy távolítottak el egy üzenetből.
Üzenethez hozzáadott üzenetválaszok OnReactionsAddedAsync Felülbírálja ezt az üzenethez hozzáadott reakciók kezeléséhez.
Üzenetből eltávolított üzenetválaszok OnReactionsRemovedAsync Felülbírálhatja ezt az üzenetből eltávolított reakciók kezeléséhez.
Telepítésfrissítési tevékenység érkezett OnInstallationUpdateActivityAsync Egy installationUpdate tevékenységen egy kezelőt hív meg attól függően, hogy a robot telepítve vagy eltávolítva lett-e.
Robot telepítve OnInstallationUpdateAddAsync Felülbírálhatja ezt a logikát, ha a robot egy szervezeti egységen belül van telepítve.
Robot eltávolítása OnInstallationUpdateRemoveAsync Ezt felülbírálva logikát adhat hozzá, ha a robotot eltávolítják egy szervezeti egységen belül.
Egyéb fogadott tevékenységtípus OnUnrecognizedActivityTypeAsync A művelet felülbírálása az egyébként kezeletlen tevékenységtípusok kezeléséhez.

Ezek a különböző kezelők olyan információkkal rendelkeznek turnContext a bejövő tevékenységről, amely megfelel a bejövő HTTP-kérésnek. A tevékenységek különböző típusúak lehetnek, ezért minden kezelő erős típusú tevékenységet biztosít a környezet paraméterében; a legtöbb esetben OnMessageActivityAsync mindig kezelik, és általában a leggyakoribb.

A keretrendszer korábbi 4.x verzióihoz hasonlóan lehetőség van a nyilvános metódus OnTurnAsyncimplementálására is. A metódus alap implementációja jelenleg a hibaellenőrzést kezeli, majd meghívja az egyes kezelőket (például a mintában definiált kettőt) a bejövő tevékenység típusától függően. A legtöbb esetben egyedül hagyhatja ezt a metódust, és használhatja az egyes kezelőket, de ha a helyzethez egyéni implementációra OnTurnAsyncvan szükség, ez továbbra is lehetőség.

Fontos

Ha felülbírálja a OnTurnAsync metódust, az alap implementáció lekéréséhez meg kell hívnia base.OnTurnAsync az összes többi On<activity>Async kezelőt, vagy magát a kezelőket. Ellenkező esetben ezek a kezelők nem lesznek meghívva, és a kód nem lesz futtatva.

Mintatevékenység-kezelő

Kezelheti például azokat a tagokat, akik meghívják a felhasználókat egy beszélgetésbe, és az üzeneteket a robotnak küldött üzenetek visszacsatolásához kezeli.

public class EchoBot : ActivityHandler
{
    protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
    {
        var replyText = $"Echo: {turnContext.Activity.Text}";
        await turnContext.SendActivityAsync(MessageFactory.Text(replyText, replyText), cancellationToken);
    }

    protected override async Task OnMembersAddedAsync(IList<ChannelAccount> membersAdded, ITurnContext<IConversationUpdateActivity> turnContext, CancellationToken cancellationToken)
    {
        var welcomeText = "Hello and welcome!";
        foreach (var member in membersAdded)
        {
            if (member.Id != turnContext.Activity.Recipient.Id)
            {
                await turnContext.SendActivityAsync(MessageFactory.Text(welcomeText, welcomeText), cancellationToken);
            }
        }
    }
}

Következő lépések

  • A Microsoft Teams-csatorna olyan Teams-specifikus tevékenységeket vezet be, amelyeket a robotnak támogatnia kell a Teams megfelelő működéséhez. 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.
  • A tevékenységkezelővel olyan robotot tervezhet, amely nem követi a beszélgetési állapotot a kanyarok között. A párbeszédpanel-kódtár lehetővé teszi a felhasználóval folytatott hosszú ideig futó beszélgetések kezelését.