Sdílet prostřednictvím


Konverzace řízené událostmi za použití obsluhy aktivit

PLATÍ PRO: SDK v4

Obslužná rutina pro aktivity je způsob uspořádání konverzační logiky robota řízený událostmi. Každý jiný typ nebo podtyp aktivity představuje jiný typ konverzační události. Interně volá obslužná rutina otáčení robota obslužnou rutinu jednotlivých aktivit pro jakýkoli typ přijaté aktivity.

Pokud například robot obdrží aktivitu zprávy, obslužná rutina pro zpracování otočení zjistí tuto příchozí aktivitu a předá ji obslužné rutině aktivity zprávy . Při sestavování robota bude logika robota pro zpracování a odpovídání na zprávy zpracovávána v této obslužné rutině zpráv. Logika pro zpracování členů přidaných do konverzace bude v obslužné rutině při přidání členů, která se volá při každém přidání člena do konverzace.

Další způsoby uspořádání logiky robota najdete v části logiky robota v tom, jak roboti fungují.

Poznámka:

Pokud chcete vytvářet agenty s výběrem služeb AI, orchestrace a znalostí, zvažte použití sady Microsoft 365 Agents SDK. Sada Agents SDK podporuje C#, JavaScript nebo Python. Další informace o sadě Agents SDK najdete v aka.ms/agents. Pokud hledáte platformu agenta založenou na SaaS, zvažte Microsoft Copilot Studio. Pokud máte existujícího robota sestaveného pomocí sady SDK služby Bot Framework, můžete robota aktualizovat na sadu SDK agentů. Můžete si projít základní změny a aktualizace v pokynech pro migraci z Bot Framework SDK na Agents SDK. Podpůrné tikety pro sadu SDK služby Bot Framework nebudou od 31. prosince 2025 nadále zpracovávány.

Pokud chcete implementovat logiku pro tyto obslužné rutiny, přepíšete tyto metody v botovi, například v obslužné rutině ukázkové aktivity níže. Pro každý z těchto obslužných programů není žádná základní implementace, takže stačí do svého přepsání přidat logiku, kterou chcete použít.

Existují určité situace, kdy budete chtít přepsat obslužnou rutinu základního turnu, například uložit stav na konci turnu. Při tom nezapomeňte nejprve zavolat await base.OnTurnAsync(turnContext, cancellationToken); , aby se před dalším kódem spustila základní implementace OnTurnAsync . Tato základní implementace je mimo jiné zodpovědná za volání ostatních obslužných rutin aktivit, jako je OnMessageActivityAsync.

Zpracování aktivit

Logika robota zpracovává příchozí aktivity z jednoho nebo více kanálů a generuje odchozí aktivity v reakci.

Hlavní logika robota je definovaná v kódu robota. Chcete-li implementovat robota jako obslužnou rutinu aktivity, odvoďte třídu svého robota z ActivityHandler, které implementuje rozhraní IBot. ActivityHandler definuje různé obslužné rutiny pro různé typy aktivit, například OnMessageActivityAsync, a OnMembersAddedAsync. Tyto metody jsou chráněné, ale lze je přepsat, protože pocházíme z ActivityHandler.

Obslužné rutiny definované v ActivityHandler :

Událost Zpracovatel Popis
Všechny přijaté typy aktivit OnTurnAsync Zavolá jednoho z dalších zpracovatelů podle typu přijaté aktivity.
Aktivita zprávy přijata OnMessageActivityAsync Tuto možnost přepište, aby se zpracovávala message aktivita.
Přijatá aktivita aktualizace konverzace OnConversationUpdateActivityAsync Při aktivitě conversationUpdate volá obslužnou rutinu, pokud se někdo jiný než robot připojil nebo opustil konverzaci.
Členové, kteří nejsou roboti, se připojili ke konverzaci OnMembersAddedAsync Přepište tuto funkci, abyste mohli spravovat připojování členů ke konverzaci.
Členové, kteří nejsou roboti, opustili konverzaci. OnMembersRemovedAsync Přepište to tak, aby bylo možné řešit odchod členů z konverzace.
Aktivita události přijata OnEventActivityAsync Při aktivitě event volá obslužnou rutinu specifickou pro typ události.
Přijata aktivita události odpovědi na token OnTokenResponseEventAsync Přepište toto nastavení pro zpracování událostí odezvy tokenů.
Aktivita události přijatá bez tokenu odpovědi OnEventAsync Chcete-li zpracovávat jiné typy událostí, přepište tento kód.
Přijatá aktivita reakce k zprávě OnMessageReactionActivityAsync Při aktivitě messageReaction volá obslužnou rutinu, pokud byla přidána nebo odebrána jedna nebo více reakcí ze zprávy.
Reakce přidané k zprávě OnReactionsAddedAsync Přepište toto, aby zpracovávalo reakce přidané do zprávy.
Reakce na zprávu odstraněny OnReactionsRemovedAsync Přepište toto nastavení, aby dokázalo zpracovat reakce odstraněné ze zprávy.
Přijatá aktivita aktualizace instalace OnInstallationUpdateActivityAsync Při aktivitě installationUpdate volá obslužnou rutinu podle toho, zda byl bot nainstalován nebo odinstalován.
Nainstalovaný robot OnInstallationUpdateAddAsync Tuto možnost přepište, pokud chcete přidat logiku, když je robot nainstalovaný v organizační jednotce.
Bot odinstalován OnInstallationUpdateRemoveAsync Tuto možnost přepište, pokud chcete přidat logiku, když je robot odinstalován v rámci organizační jednotky.
Byl přijat jiný typ aktivity. OnUnrecognizedActivityTypeAsync Přepište tuto funkci tak, aby zpracovávala jakýkoli typ aktivity, který jinak není ošetřen.

Tyto různé obslužné rutiny mají turnContext, který poskytuje informace o příchozí aktivitě, jež odpovídá příchozímu požadavku HTTP. Aktivity mohou být různých typů, takže každá obslužná rutina poskytuje aktivitu silně typovanou v kontextovém parametru. Ve většině případů OnMessageActivityAsync bude vždy zpracovávána a nejčastěji se jedná o nejběžnější.

Stejně jako v předchozích verzích 4.x této architektury existuje také možnost implementovat veřejnou metodu OnTurnAsync. Základní implementace této metody v současné době zpracovává kontrolu chyb a potom volá všechny konkrétní obslužné rutiny (podobně jako ty dva, které definujeme v této ukázce) v závislosti na typu příchozí aktivity. Ve většině případů můžete tuto metodu ponechat samostatně a používat jednotlivé obslužné rutiny, ale pokud vaše situace vyžaduje vlastní implementaci OnTurnAsync, je to stále možnost.

Důležité

Pokud přepíšete metodu OnTurnAsync, budete muset zavolat base.OnTurnAsync, abyste získali základní implementaci pro volání všech ostatních On<activity>Async obslužných rutin, nebo tyto obslužné rutiny volat samostatně. Jinak se tyto obslužné rutiny nevolají a tento kód se nespustí.

Obslužný zpracovatel ukázkové aktivity

Například můžete použít zpracování události při přidání členů pro vítání uživatelů do konverzace a použít zpracování události při zprávách k opakování zpráv, které posílají botovi.

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);
            }
        }
    }
}

Další kroky

  • Kanál Microsoft Teams představuje některé aktivity specifické pro Teams, které robot bude muset podporovat, aby správně fungoval s Teams. Vysvětlení klíčových konceptů vývoje robotů pro Microsoft Teams najdete v tématu Jak fungují roboti Microsoft Teams.
  • Obslužná rutina aktivity je dobrým způsobem, jak navrhnout bota, který nemusí sledovat konverzační stav mezi jednotlivými kroky. Knihovna dialogových oken poskytuje způsoby správy dlouhotrvající konverzace s uživatelem.