Bot-Aktivitätenhandler

Dieses Dokument baut auf dem Artikel über die Wie Bots funktionieren in der Core Bot Framework-Dokumentation auf. Der Hauptunterschied zwischen Bots, die für Microsoft Teams entwickelt wurden, und dem Core Bot Framework liegt in den Funktionen, die in Teams bereitgestellt werden.

Ein Aktivitätshandler wird verwendet, um die Konversationslogik für Ihren Bot zu organisieren. Aktivitäten werden auf zwei Arten behandelt: mit Teams-Aktivitätenhandlern und Botlogik. Der Teams-Aktivitätshandler fügt Unterstützung für Teams-spezifische Ereignisse und Interaktionen hinzu. Das Botobjekt enthält die Unterhaltungslogik für einen Turn und macht einen Turnhandler verfügbar. Dies ist die Methode, die eingehende Aktivitäten vom Botadapter akzeptieren kann.

Teams Aktivitäten Handler

Der Teams-Aktivitätenhandler wird vom Aktivitätenhandler des Microsoft Bot Frameworks abgeleitet. Er leitet alle Teams-Aktivitäten weiter, bevor er die Behandlung von nicht Teams-spezifischen Aktivitäten zulässt.

Wenn ein Bot für Teams eine Aktivität empfängt, wird sie an die Aktivitätshandler weitergeleitet. Alle Aktivitäten werden über einen Basishandler weitergeleitet, der als Turnhandler bezeichnet wird. Der Turnhandler ruft den erforderlichen Aktivitätenhandler auf, der für die Verarbeitung der empfangenen Aktivitätsart zuständig ist. Der Teams-Bot wird von der Klasse TeamsActivityHandler abgeleitet, die von der Klasse ActivityHandler des Bot Frameworks abgeleitet wird.

Hinweis

Wenn die Verarbeitung der Botaktivität länger als 15 Sekunden dauert, sendet Teams eine Wiederholungsanforderung an den Botendpunkt. Daher werden doppelte Anforderungen in Ihrem Bot angezeigt.

Bots werden mit dem Bot Framework erstellt. Wenn die Bots eine Nachrichtenaktivität erhalten, erhält der Turnhandler eine Benachrichtigung über diese eingehende Aktivität. Der Turnhandler sendet dann die eingehende Aktivität an den OnMessageActivityAsync-Aktivitätenhandler. In Teams bleibt diese Funktionalität unverändert. Wenn der Bot eine Unterhaltungsaktualisierungsaktivität empfängt, empfängt der Turnhandler eine Benachrichtigung über diese eingehende Aktivität und sendet die eingehende Aktivität an OnConversationUpdateActivityAsync. Der Teams-Aktivitätenhandler sucht zunächst nach Teams-spezifischen Ereignissen. Wenn keine Ereignisse gefunden werden, werden sie an den Aktivitätenhandler des Bot Frameworks übergeben.

In der Teams-Aktivitätenhandlerklasse gibt es die zwei primären Teams-Aktivitätenhandler OnConversationUpdateActivityAsync und OnInvokeActivityAsync. OnConversationUpdateActivityAsync leitet alle Unterhaltungsaktualisierungsaktivitäten, und OnInvokeActivityAsync leitet alle Teams-Aufrufaktivitäten.

Um Ihre Logik für Teams-spezifische Aktivitätenhandler zu implementieren, müssen Sie die Methoden in Ihrem Bot überschreiben, wie im Abschnitt Botlogik gezeigt. Es gibt keine Basisimplementierung für diese Handler. Fügen Sie daher die Logik hinzu, die Sie in Ihrer Außerkraftsetzung verwenden möchten.

Die Codeausschnitte für Teams-Aktivitätenhandler:

OnTeamsChannelCreatedAsync


protected override Task OnTeamsChannelCreatedAsync(ChannelInfo channelInfo, TeamInfo teamInfo, ITurnContext<IConversationUpdateActivity> turnContext, CancellationToken cancellationToken)
        {
            // Code logic here
        }

OnTeamsChannelDeletedAsync


protected override Task OnTeamsChannelDeletedAsync(ChannelInfo channelInfo, TeamInfo teamInfo, ITurnContext<IConversationUpdateActivity> turnContext, CancellationToken cancellationToken)
        {
            // Code logic here
        }

OnTeamsChannelRenamedAsync


protected override Task OnTeamsChannelRenamedAsync(ChannelInfo channelInfo, TeamInfo teamInfo, ITurnContext<IConversationUpdateActivity> turnContext, CancellationToken cancellationToken)
  {
   // Code logic here
  }

OnTeamsTeamRenamedAsync


protected override Task OnTeamsTeamRenamedAsync(TeamInfo teamInfo, ITurnContext<IConversationUpdateActivity> turnContext, CancellationToken cancellationToken)
  {
   // Code logic here
  }

OnTeamsMembersAddedAsync


protected override Task OnTeamsMembersAddedAsync(IList<TeamsChannelAccount> teamsMembersAdded, TeamInfo teamInfo, ITurnContext<IConversationUpdateActivity> turnContext, CancellationToken cancellationToken)
  {
   // Code logic here
  }

OnTeamsMembersRemovedAsync


protected override Task OnTeamsMembersRemovedAsync(IList<TeamsChannelAccount> teamsMembersRemoved, TeamInfo teamInfo, ITurnContext<IConversationUpdateActivity> turnContext, CancellationToken cancellationToken);
  {
   // Code logic here
  }

OnTeamsMessageEditAsync

protected override async Task OnTeamsMessageEditAsync(ITurnContext<IMessageUpdateActivity> turnContext, CancellationToken cancellationToken)
  { 
   // Code logic here 
  } 

OnTeamsMessageUndeleteAsync

protected override async Task OnTeamsMessageUndeleteAsync(ITurnContext<IMessageUpdateActivity> turnContext, CancellationToken cancellationToken)
  { 
   // Code logic here 
  } 

OnTeamsMessageSoftDeleteAsync

 protected override async Task OnTeamsMessageSoftDeleteAsync(ITurnContext<IMessageDeleteActivity> turnContext, CancellationToken cancellationToken)
  { 
   // Code logic here 
  } 

Botlogik

Die Botlogik verarbeitet eingehende Aktivitäten aus einem oder mehreren Bot-Kanälen und generiert als Reaktion ausgehende Aktivitäten. Dies gilt weiterhin für Bots, die von der Teams-Aktivitätshandlerklasse abgeleitet werden, die zuerst nach Teams-Aktivitäten sucht. Nach der Überprüfung auf Teams-Aktivitäten übergibt sie alle anderen Aktivitäten an den Aktivitätenhandler des Bot Frameworks.

Core Bot Framework-Handler

Hinweis

  • Mit Ausnahme hinzugefügter und entfernter Teammitgliederaktivitäten funktionieren alle in diesem Abschnitt beschriebenen Aktivitätenhandler weiterhin wie bei einem Nicht-Teams-Bot.
  • Die onInstallationUpdateActivityAsync()-Methode wird verwendet, um Teams Locale abzurufen, während der Bot zu Teams hinzugefügt wird.

Aktivitätenhandler unterscheiden sich im Kontext eines Teams, in dem ein neues Mitglied dem Team anstelle eines Nachrichtenthreads hinzugefügt wird.

Die Liste der in ActivityHandler definierten Handler enthält die folgenden Ereignisse:

Ereignis Handler Beschreibung
Jeder empfangene Aktivitätstyp OnTurnAsync Diese Methode ruft einen der anderen Handler auf, basierend auf dem Typ der empfangenen Aktivität.
Nachrichtenaktivität empfangen OnMessageActivityAsync Sie können diese Methode überschreiben, um eine Message Aktivität zu behandeln.
Nachrichtenaktualisierungsaktivität empfangen OnMessageUpdateActivityAsync Sie können diese Methode überschreiben, um eine Nachrichtenaktualisierungsaktivität zu verarbeiten.
Aktivität zum Löschen einer Nachricht empfangen OnMessageDeleteActivityAsync Sie können diese Methode überschreiben, um eine Aktivität zum Löschen von Nachrichten zu behandeln.
Unterhaltungsaktualisierungsaktivität empfangen OnConversationUpdateActivityAsync Diese Methode ruft einen Handler auf, wenn andere Mitglieder als der Bot der Unterhaltung bei einer ConversationUpdate-Aktivität beigetreten sind oder diese verlassen haben.
Nicht-Bot-Mitglieder sind der Unterhaltung beigetreten OnMembersAddedAsync Diese Methode kann überschrieben werden, um Mitglieder zu behandeln, die an einer Unterhaltung teilnehmen.
Nicht-Bot-Mitglieder haben die Unterhaltung verlassen OnMembersRemovedAsync Diese Methode kann überschrieben werden, um Mitglieder zu behandeln, die eine Unterhaltung verlassen.
Ereignisaktivität empfangen OnEventActivityAsync Diese Methode ruft bei einer Event-Aktivität einen für den Ereignistyp spezifischen Handler auf.
Token-Antwort-Ereignisaktivität empfangen OnTokenResponseEventAsync Diese Methode kann überschrieben werden, um Tokenantwortereignisse zu behandeln.
Ereignisaktivität ohne Tokenantwort empfangen OnEventAsync Diese Methode kann überschrieben werden, um andere Arten von Ereignissen zu behandeln.
Anderer Aktivitätstyp empfangen OnUnrecognizedActivityTypeAsync Diese Methode kann überschrieben werden, um jeden Aktivitätstyp zu behandeln, andernfalls unbehandelt.

Teams-spezifische Aktivitätenhandler

Erweitert TeamsActivityHandler die Liste der Handler im Abschnitt bot Framework-Kernhandler, um die folgenden Ereignisse einzuschließen:

Ereignis Handler Beschreibung
channelCreated OnTeamsChannelCreatedAsync Diese Methode kann überschrieben werden, um einen Teams-Kanal zu behandeln, der erstellt wird. Weitere Informationen finden Sie unter Kanal erstellt in Unterhaltungsupdateereignissen.
ChannelDeleted OnTeamsChannelDeletedAsync Diese Methode kann überschrieben werden, um einen Teams-Kanal zu behandeln, der gelöscht wird. Weitere Informationen finden Sie unter Kanal gelöscht in Unterhaltungsupdateereignissen.
channelRenamed OnTeamsChannelRenamedAsync Diese Methode kann überschrieben werden, um einen Teams-Kanal zu behandeln, der umbenannt wird. Weitere Informationen finden Sie unter Umbenennung des Kanals unter Unterhaltungsupdateereignisse.
teamRenamed OnTeamsTeamRenamedAsync return Task.CompletedTask; Diese Methode kann überschrieben werden, um ein Team in Teams zu behandeln, das umbenannt wird. Weitere Informationen finden Sie unter Teambenennung in Unterhaltungsupdateereignissen.
MembersAdded OnTeamsMembersAddedAsync Diese Methode ruft im ActivityHandler die Methode OnMembersAddedAsync auf. Die Methode kann überschrieben werden, um Mitglieder zu behandeln, die einem Team beitreten. Weitere Informationen finden Sie unter Teammitglieder, die in Unterhaltungsupdateereignissenhinzugefügt wurden.
MembersRemoved OnTeamsMembersRemovedAsync Diese Methode ruft im ActivityHandler die Methode OnMembersRemovedAsync auf. Die Methode kann überschrieben werden, um Mitglieder zu behandeln, die ein Team verlassen. Weitere Informationen finden Sie unter Entfernte Teammitglieder in Unterhaltungsupdateereignissen.
messageEdit OnTeamsMessageEditAsync Sie können diese Methode überschreiben, um ein Teams-Nachrichtenbearbeitungsereignis zu behandeln.
messageUndelete OnTeamsMessageUndeleteAsync Sie können diese Methode überschreiben, um ein Ereignis zum Rückgängigmachen von Teams-Nachrichten zu behandeln.
messageSoftDelete OnTeamsMessageSoftDeleteAsync Sie können diese Methode außer Kraft setzen, um ein Ereignis für vorläufiges Löschen von Teams-Nachrichten zu behandeln.

Aufrufaktivitäten in Teams

Die Liste der Teams-Aktivitätshandler, die OnInvokeActivityAsync vom Teams-Aktivitätshandler aufgerufen werden, enthält die folgenden Aufruftypen:

Aufruftypen Handler Beschreibung
CardAction.Invoke OnTeamsCardActionInvokeAsync Wenn der Connector eine Karte Aktionsaufrufaktivität empfängt, wird diese Methode aufgerufen.
fileConsent/invoke OnTeamsFileConsentAcceptAsync Wenn ein Benutzer eine Dateigenehmigung Karte akzeptiert, wird diese Methode aufgerufen.
fileConsent/invoke OnTeamsFileConsentAsync Wenn der Connector eine Dateigenehmigung Karte Aktivität empfängt, wird diese Methode aufgerufen.
fileConsent/invoke OnTeamsFileConsentDeclineAsync Wenn ein Benutzer eine Dateigenehmigung Karte ablehnt, wird diese Methode aufgerufen.
actionableMessage/executeAction OnTeamsO365ConnectorCardActionAsync Wenn der Connector einen Connector Karte für Microsoft 365-Gruppen Aktionsaktivität empfängt, wird diese Methode aufgerufen.
signin/verifyState OnTeamsSigninVerifyStateAsync Wenn der Connector eine signIn Aktivität zum Überprüfen des Zustands empfängt, wird diese Methode aufgerufen.
task/fetch OnTeamsTaskModuleFetchAsync Sie können diese Methode in einer abgeleiteten Klasse überschreiben, um Logik bereitzustellen, wenn ein Dialog (in TeamsJS v1.x als Aufgabenmodul bezeichnet) abgerufen wird.
task/submit OnTeamsTaskModuleSubmitAsync Sie können diese Methode in einer abgeleiteten Klasse überschreiben, um Logik bereitzustellen, wenn ein Dialog übermittelt wird.

Die in diesem Abschnitt aufgeführten Aufrufaktivitäten gelten für Konversationsbots in Teams. Das Bot Framework SDK unterstützt speziell für Nachrichtenerweiterungen auch Aufrufaktivitäten. Weitere Informationen finden Sie unter Nachrichtenerweiterungen.


Nachdem Sie sich nun mit Botaktivitätshandlern vertraut gemacht haben, lassen Sie uns sehen, wie sich Bots je nach Konversation und den empfangenen oder gesendeten Nachrichten unterschiedlich verhalten.

Codebeispiel

Beispielname Beschreibung .NET Node.js Python
Teams-Unterhaltungsbot In dieser Beispiel-App wird gezeigt, wie verschiedene Botunterhaltungsereignisse verwendet werden, die in Bot Framework v4 verfügbar sind. View View Anzeigen
Bot-Beispiele Eine Reihe von Bot Framework v4-Beispielen. View View Anzeigen

Nächster Schritt

Siehe auch