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 Aktivität zum Aufrufen einer Kartenaktion empfängt, wird diese Methode aufgerufen. |
fileConsent/invoke | OnTeamsFileConsentAcceptAsync |
Wenn ein Benutzer eine Datei-Einwilligungskarte akzeptiert, wird diese Methode aufgerufen. |
fileConsent/invoke | OnTeamsFileConsentAsync |
Wenn der Connector eine Datei-Zustimmungskartenaktivität empfängt, wird diese Methode aufgerufen. |
fileConsent/invoke | OnTeamsFileConsentDeclineAsync |
Wenn ein Benutzer eine Datei-Einwilligungskarte ablehnt, wird diese Methode aufgerufen. |
actionableMessage/executeAction | OnTeamsO365ConnectorCardActionAsync |
Wenn der Connector eine Connectorkarte für die Aktion "Microsoft 365-Gruppen" 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 | View |