GILT FÜR: SDK v4
Ein Aktivitätshandler ist eine ereignisbasierte Methode zum Organisieren der Gesprächslogik für Ihren Bot.
Jeder andere Typ oder Untertyp von Aktivität stellt einen anderen Typ von Unterhaltungsereignis dar.
Im Verborgenen ruft der Turn-Handler des Bots die einzelnen Aktivitätshandler für die jeweilige Art von empfangener Aktivität auf.
Wenn der Bot beispielsweise eine Nachrichtenaktivität empfängt, erkennt der Turn-Handler diese eingehende Aktivität und sendet sie an den Aktivitätshandler für die Nachrichtenaktivität. Bei der Erstellung Ihres Bots wird die Botlogik zur Verarbeitung und Beantwortung von Nachrichten in diesem on message activity Handler platziert. Analog dazu muss Ihre Logik zur Verarbeitung von Mitgliedern, die der Konversation hinzugefügt werden, im Handler bei hinzugefügten Mitgliedern platziert werden, der aufgerufen wird, wenn der Konversation ein Mitglied hinzugefügt wird.
Weitere Möglichkeiten zum Organisieren Ihrer Bot-Logik finden Sie im Abschnitt Bot-Logik in der Funktionsweise von Bots.
Hinweis
Um Agents mit Ihrer Wahl von KI-Diensten, Orchestrierung und Wissen zu erstellen, sollten Sie das Microsoft 365 Agents SDK verwenden. Das Agents SDK unterstützt C#, JavaScript oder Python. Weitere Informationen zum Agents SDK finden Sie unter aka.ms/agents. Wenn Sie nach einer SaaS-basierten Agent-Plattform suchen, ziehen Sie Microsoft Copilot Studio in Betracht. Wenn Sie über einen vorhandenen Bot verfügen, der mit dem Bot Framework SDK erstellt wurde, können Sie Ihren Bot auf das Agents SDK aktualisieren. Sie können die wichtigsten Änderungen und Updates im Bot Framework SDK zu Agents SDK-Migrationsleitfaden überprüfen. Supporttickets für das Bot Framework SDK werden ab dem 31. Dezember 2025 nicht mehr bearbeitet.
Um Ihre Logik für diese Handler zu implementieren, überschreiben Sie diese Methoden in Ihrem Bot, wie z. B. im folgenden Beispiel für einen Aktivitätshandler. Da für diese Handler keine Basisimplementierung vorhanden ist, können Sie in Ihrer Überschreibung einfach die gewünschte Logik hinzufügen.
In bestimmten Situationen empfiehlt es sich, den Turn-Basishandler zu überschreiben (etwa beim Speichern des Zustands am Ende eines Turns). Rufen Sie in diesem Fall zunächst await base.OnTurnAsync(turnContext, cancellationToken); auf, um sicherzustellen, dass die Basisimplementierung von OnTurnAsync vor Ihrem zusätzlichen Code ausgeführt wird. Diese Basisimplementierung ist unter anderem dafür zuständig, die restlichen Aktivitätshandler (etwa OnMessageActivityAsync) aufzurufen.
Für das JavaScript-Element ActivityHandler werden ein Ereignisemitter und ein Listenermuster verwendet.
Nutzen Sie beispielsweise die onMessage-Methode, um einen Ereignislistener für Nachrichtenaktivitäten zu registrieren. Sie können mehr als einen Listener registrieren. Wenn der Bot eine Nachrichtenaktivität empfängt, sieht der Aktivitätshandler diese eingehende Aktivität und sendet sie an jeden der onMessage-Aktivitätslistener in der Reihenfolge, in der sie registriert wurden.
Bei der Boterstellung muss Ihre Botlogik für die Behandlung von bzw. die Reaktion auf Nachrichten in den onMessage-Listenern platziert werden. Analog dazu muss Ihre Logik für die Behandlung von Mitgliedern, die der Konversation hinzugefügt werden, in Ihren onMembersAdded-Listenern platziert werden. Diese werden aufgerufen, wenn der Konversation ein Mitglied hinzugefügt wird.
Um diese Listener hinzuzufügen, registrieren Sie sie in Ihrem Bot (wie unten im Abschnitt Bot-Logik beschrieben). Fügen Sie für jeden Listener Ihre Bot-Logik ein, und rufen Sie am Ende dann next() auf. Durch das Aufrufen von next() stellen Sie sicher, dass der nächste Listener ausgeführt wird.
Stellen Sie sicher, dass der Zustand gespeichert wird, bevor der Zug endet. Hierzu können Sie die Methode run des Aktivitätshandlers überschreiben und den Zustand nach Abschluss der Methode run des übergeordneten Elements speichern.
Es gibt keine Situationen, in denen Sie den Turn-Basishandler überschreiben müssten. Seien Sie daher vorsichtig, wenn Sie es versuchen.
Es ist ein spezieller Handler mit dem Namen onDialog vorhanden. Der Handler onDialog wird am Ende ausgeführt, nachdem die restlichen Handler ausgeführt wurden. Er ist nicht an einen bestimmten Aktivitätstyp gebunden. Denken Sie genau wie bei allen anderen oben genannten Handlern daran, next() aufzurufen, um sicherzustellen, dass der restliche Prozess abgeschlossen wird.
Um Ihre Logik für diese Handler zu implementieren, überschreiben Sie diese Methoden in Ihrem Bot, wie z. B. im folgenden Beispiel für einen Aktivitätshandler. Es gibt keine Basisimplementierung für jeden dieser Handler, also fügen Sie die gewünschte Logik in Ihrer Überschreibung hinzu.
In bestimmten Situationen empfiehlt es sich, den Turn-Basishandler zu überschreiben (etwa beim Speichern des Zustands am Ende eines Turns). Rufen Sie in diesem Fall zunächst super.onTurn(turnContext); auf, um sicherzustellen, dass die Basisimplementierung von onTurn vor Ihrem zusätzlichen Code ausgeführt wird. Diese Basisimplementierung ist unter anderem dafür zuständig, die restlichen Aktivitätshandler (etwa onMessageActivity) aufzurufen.
Bei der Erstellung Ihres Bots wird die Logik, die Nachrichten behandelt und darauf reagiert, in diesen Handler (on_message_activity) integriert. Analog dazu muss Ihre Logik für die Behandlung von Mitgliedern, die der Konversation hinzugefügt werden, im Handler on_members_added platziert werden, der aufgerufen wird, wenn der Konversation ein Mitglied hinzugefügt wird.
Wenn der Bot beispielsweise eine Nachrichtenaktivität empfängt, erkennt der Turn-Handler diese eingehende Aktivität und sendet sie an den Aktivitätshandler on_message_activity.
Um Ihre Logik für diese Handler zu implementieren, überschreiben Sie diese Methoden in Ihrem Bot, wie z. B. im folgenden Beispiel für einen Aktivitätshandler. Da für diese Handler keine Basisimplementierung vorhanden ist, können Sie in Ihrer Überschreibung einfach die gewünschte Logik hinzufügen.
In bestimmten Situationen empfiehlt es sich, den Turn-Basishandler zu überschreiben (etwa beim Speichern des Zustands am Ende eines Turns). Rufen Sie in diesem Fall zunächst await super().on_turn(turnContext); auf, um sicherzustellen, dass die Basisimplementierung von on_turn vor Ihrem zusätzlichen Code ausgeführt wird. Diese Basisimplementierung ist unter anderem dafür zuständig, die restlichen Aktivitätshandler (etwa on_message_activity) aufzurufen.
Umgang mit Aktivitäten
Die Botlogik verarbeitet eingehende Aktivitäten aus einem oder mehreren Kanälen und generiert als Reaktion ausgehende Aktivitäten.
Die Hauptlogik des Bots wird im Botcode definiert. Um einen Bot als Aktivitätshandler zu implementieren, leiten Sie die Bot-Klasse von ActivityHandler ab, der die IBot-Schnittstelle implementiert.
ActivityHandler definiert verschiedene Handler für verschiedene Arten von Aktivitäten, beispielsweise OnMessageActivityAsync und OnMembersAddedAsync. Diese Methoden sind zwar geschützt, können aber dank der Ableitung von ActivityHandler überschrieben werden.
In ActivityHandler sind folgende Handler definiert:
| Ereignis |
Bearbeiter |
Beschreibung |
| Beliebigen Aktivitätstyp empfangen |
OnTurnAsync |
Ruft einen der anderen Handler auf (abhängig von der Art der empfangenen Aktivität). |
| Nachrichtenaktivität empfangen |
OnMessageActivityAsync |
Überschreiben Sie diesen Handler, um eine Aktivität vom Typ message zu behandeln. |
| Konversationsaktualisierungsaktivität empfangen |
OnConversationUpdateActivityAsync |
Ruft bei einer Aktivität vom Typ conversationUpdate einen Handler auf, wenn andere Mitglieder als der Bot der Konversation beitreten oder sie verlassen. |
| Mitglieder, die keine Bots sind, sind der Konversation beigetreten. |
OnMembersAddedAsync |
Überschreiben Sie diesen Handler, um Mitglieder zu behandeln, die einer Konversation beitreten. |
| Mitglieder ohne Bot-Funktion haben die Konversation verlassen |
OnMembersRemovedAsync |
Überschreiben Sie diesen Handler, um Mitglieder zu behandeln, die eine Konversation verlassen. |
| Ereignisaktivität empfangen |
OnEventActivityAsync |
Ruft bei einer Aktivität vom Typ event einen spezifischen Handler für den Ereignistyp auf. |
| Tokenantwortereignis-Aktivität empfangen |
OnTokenResponseEventAsync |
Überschreiben Sie diesen Handler, um Tokenantwortereignisse zu behandeln. |
| Tokenantwortereignis-fremde Aktivität empfangen |
OnEventAsync |
Überschreiben Sie diesen Handler, um andere Arten von Ereignissen zu behandeln. |
| messageReaction-Aktivität empfangen |
OnMessageReactionActivityAsync |
Ruft bei einer messageReaction-Aktivität einen Handler auf, wenn mindestens eine Reaktion zu einer Nachricht hinzugefügt oder daraus entfernt wurde. |
| Nachrichtenantworten zu einer Nachricht hinzugefügt |
OnReactionsAddedAsync |
Überschreiben Sie dies, um der Nachricht hinzugefügte Antworten zu verarbeiten. |
| Nachrichtenantworten aus einer Nachricht entfernt |
OnReactionsRemovedAsync |
Überschreiben Sie dies, um aus der Nachricht entfernte Antworten zu verarbeiten. |
| Aktualisierungsaktivität der Installation erhalten |
OnInstallationUpdateActivityAsync |
Ruft in einer installationUpdate-Aktivität einen Handler auf, abhängig davon, ob der Bot installiert oder deinstalliert wurde. |
| Bot installiert. |
OnInstallationUpdateAddAsync |
Überschreiben Sie dies, um Logik hinzuzufügen, wenn der Bot in einer Organisationseinheit installiert wird. |
| Bot deinstalliert |
OnInstallationUpdateRemoveAsync |
Überschreiben Sie dies, um Logik hinzuzufügen, wenn der Bot in einer Organisationseinheit deinstalliert wird. |
| Anderen Aktivitätstyp empfangen |
OnUnrecognizedActivityTypeAsync |
Überschreiben Sie dies, um Aktivitätstypen zu behandeln, die andernfalls nicht behandelt würden. |
Diese verschiedenen Handler verfügen über einen Turn-Kontext (turnContext), der Informationen zur eingehenden Aktivität (der eingehenden HTTP-Anforderung) bereitstellt. Aufgrund der verschiedenen möglichen Arten von Aktivitäten gibt jeder Handler in seinem Turn-Kontextparameter eine stark typisierte Aktivität an. OnMessageActivityAsync wird in den meisten Fällen behandelt und ist generell am gängigsten.
Wie in früheren 4.x-Versionen dieses Frameworks besteht auch die Möglichkeit, die öffentliche Methode OnTurnAsync zu implementieren. Die Basisimplementierung dieser Methode behandelt aktuell die Fehlerüberprüfung und ruft anschließend abhängig von der Art der eingehenden Aktivität die einzelnen spezifischen Handler auf (beispielsweise die beiden, die in diesem Beispiel definiert wurden). In den meisten Fällen können Sie diese Methode ignorieren und die einzelnen Handler verwenden. Falls Sie jedoch eine benutzerdefinierte Implementierung von OnTurnAsync benötigen, ist sie weiterhin eine Option.
Wichtig
Wenn Sie die Methode OnTurnAsync überschreiben, müssen Sie base.OnTurnAsync aufrufen, um die Basisimplementierung zum Aufrufen aller anderen Handler vom Typ On<activity>Async zu erhalten, oder diese Handler selbst aufrufen. Andernfalls werden diese Handler nicht aufgerufen, und der Code wird nicht ausgeführt.
Die Hauptlogik des Bots wird im Botcode definiert. Um einen Bot als Aktivitätshandler zu implementieren, erweitern Sie ActivityHandler. Mit ActivityHandler werden verschiedene Ereignisse für verschiedene Arten von Aktivitäten definiert. Sie können das Verhalten des Bots ändern, indem Sie Ereignislistener registrieren (beispielsweise für onMessage und onConversationUpdate).
Verwenden Sie diese Methoden, um Listener für jeden Ereignistyp zu registrieren:
| Ereignis |
Registrierungsmethode |
Beschreibung |
| Beliebigen Aktivitätstyp empfangen |
onTurn |
Registriert einen Listener, der benachrichtigt wird, wenn eine Aktivität empfangen wird. |
| Nachrichtenaktivität empfangen |
onMessage |
Registriert einen Listener für den Empfang einer message-Aktivität. |
| Konversationsaktualisierungsaktivität empfangen |
onConversationUpdate |
Registriert einen Listener für den Empfang einer conversationUpdate-Aktivität. |
| Mitglieder sind der Konversation beigetreten. |
onMembersAdded |
Registriert einen Listener für den Fall, dass Mitglieder der Konversation beitreten, einschließlich des Bots. |
| Mitglieder haben die Konversation verlassen. |
onMembersRemoved |
Registriert einen Listener für den Fall, dass Mitglieder die Konversation verlassen, einschließlich des Bots. |
| messageReaction-Aktivität empfangen |
onMessageReaction |
Registriert einen Listener für den Empfang einer messageReaction-Aktivität. |
| Nachrichtenantworten zu einer Nachricht hinzugefügt |
onReactionsAdded |
Registriert einen Listener für den Fall, dass einer Nachricht Reaktionen hinzugefügt werden. |
| Nachrichtenantworten aus einer Nachricht entfernt |
onReactionsRemoved |
Registriert einen Listener für den Fall, dass Reaktionen aus einer Nachricht entfernt werden. |
| Ereignisaktivität empfangen |
onEvent |
Registriert einen Listener für den Empfang einer event-Aktivität. |
| Tokenantwortereignis-Aktivität empfangen |
onTokenResponseEvent |
Registriert einen Listener für den Empfang eines tokens/response-Ereignisses. |
| Aktualisierungsaktivität der Installation erhalten |
onInstallationUpdate |
Registriert einen Listener für den Empfang einer installationUpdate-Aktivität. |
| Bot installiert. |
onInstallationUpdateAdd |
Registriert einen Listener für den Zeitpunkt der Installation des Bots in einer Organisationseinheit. |
| Bot deinstalliert |
onInstallationUpdateRemove |
Registriert einen Listener, wenn der Bot innerhalb einer Organisationseinheit deinstalliert wird. |
| Anderen Aktivitätstyp empfangen |
onUnrecognizedActivityType |
Registriert einen Listener für den Fall, dass für den spezifischen Aktivitätstyp kein Handler definiert ist. |
| Aktivitätshandler wurden abgeschlossen |
onDialog |
Wird aufgerufen, nachdem alle anwendbaren Handler abgeschlossen wurden. |
Rufen Sie die Fortsetzungsfunktion next über die einzelnen Handler auf, um die Fortsetzung der Verarbeitung zu ermöglichen. Wird next nicht aufgerufen, wird die Verarbeitung der Aktivität beendet.
Die Hauptlogik des Bots wird im Botcode definiert. Um einen Bot als Aktivitätshandler zu implementieren, leiten Sie die Bot-Klasse von ActivityHandler ab, der die Bot-Schnittstelle implementiert.
ActivityHandler definiert verschiedene Handler für verschiedene Arten von Aktivitäten, beispielsweise onMessageActivity und onMembersAdded. Diese Methoden sind zwar geschützt, können aber dank der Ableitung von ActivityHandler überschrieben werden.
In ActivityHandler sind folgende Handler definiert:
| Ereignis |
Bearbeiter |
Beschreibung |
| Beliebigen Aktivitätstyp empfangen |
onTurn |
Ruft einen der anderen Handler auf (abhängig von der Art der empfangenen Aktivität). |
| Nachrichtenaktivität empfangen |
onMessageActivity |
Überschreiben Sie diesen Handler, um eine Aktivität vom Typ message zu behandeln. |
| Konversationsaktualisierungsaktivität empfangen |
onConversationUpdateActivity |
Ruft bei einer Aktivität vom Typ conversationUpdate einen Handler auf, wenn andere Mitglieder als der Bot der Konversation beitreten oder sie verlassen. |
| Mitglieder, die keine Bots sind, sind der Konversation beigetreten. |
onMembersAdded |
Überschreiben Sie diesen Handler, um Mitglieder zu behandeln, die einer Konversation beitreten. |
| Mitglieder ohne Bot-Funktion haben die Konversation verlassen |
onMembersRemoved |
Überschreiben Sie diesen Handler, um Mitglieder zu behandeln, die eine Konversation verlassen. |
| Ereignisaktivität empfangen |
onEventActivity |
Ruft bei einer Aktivität vom Typ event einen spezifischen Handler für den Ereignistyp auf. |
| Tokenantwortereignis-Aktivität empfangen |
onTokenResponseEvent |
Überschreiben Sie diesen Handler, um Tokenantwortereignisse zu behandeln. |
| Tokenantwortereignis-fremde Aktivität empfangen |
onEvent |
Überschreiben Sie diesen Handler, um andere Arten von Ereignissen zu behandeln. |
| messageReaction-Aktivität empfangen |
onMessageReactionActivity |
Ruft bei einer messageReaction-Aktivität einen Handler auf, wenn mindestens eine Reaktion zu einer Nachricht hinzugefügt oder daraus entfernt wurde. |
| Nachrichtenantworten zu einer Nachricht hinzugefügt |
onReactionsAdded |
Überschreiben Sie dies, um der Nachricht hinzugefügte Antworten zu verarbeiten. |
| Nachrichtenantworten aus einer Nachricht entfernt |
onReactionsRemoved |
Überschreiben Sie dies, um aus der Nachricht entfernte Antworten zu verarbeiten. |
| Aktualisierungsaktivität der Installation erhalten |
onInstallationUpdate |
Ruft in einer installationUpdate-Aktivität einen Handler auf, abhängig davon, ob der Bot installiert oder deinstalliert wurde. |
| Bot installiert. |
onInstallationUpdateAdd |
Überschreiben Sie dies, um Logik hinzuzufügen, wenn der Bot in einer Organisationseinheit installiert wird. |
| Bot deinstalliert |
onInstallationUpdateRemove |
Überschreiben Sie dies, um Logik hinzuzufügen, wenn der Bot in einer Organisationseinheit deinstalliert wird. |
| Anderen Aktivitätstyp empfangen |
onUnrecognizedActivityType |
Überschreiben Sie dies, um Aktivitätstypen zu behandeln, die andernfalls nicht behandelt würden. |
Diese verschiedenen Handler verfügen über einen Turn-Kontext (turnContext), der Informationen zur eingehenden Aktivität (der eingehenden HTTP-Anforderung) bereitstellt. Aufgrund der verschiedenen möglichen Arten von Aktivitäten gibt jeder Handler in seinem Turn-Kontextparameter eine stark typisierte Aktivität an. onMessageActivity wird in den meisten Fällen behandelt und ist generell am gängigsten.
Es gibt auch die Möglichkeit, die öffentliche Methode onTurn zu implementieren. Die Basisimplementierung dieser Methode behandelt aktuell die Fehlerüberprüfung und ruft anschließend abhängig von der Art der eingehenden Aktivität die einzelnen spezifischen Handler auf (beispielsweise die beiden, die in diesem Beispiel definiert wurden). In den meisten Fällen können Sie diese Methode ignorieren und die einzelnen Handler verwenden. Falls Sie jedoch eine benutzerdefinierte Implementierung von onTurn benötigen, ist sie weiterhin eine Option.
Wichtig
Wenn Sie die Methode onTurn überschreiben, müssen Sie super.onTurn aufrufen, um die Basisimplementierung zum Aufrufen aller anderen Handler vom Typ on<activity> zu erhalten, oder diese Handler selbst aufrufen. Andernfalls werden diese Handler nicht aufgerufen, und der Code wird nicht ausgeführt.
Die Hauptlogik des Bots wird im Botcode definiert. Um einen Bot als Aktivitätshandler zu implementieren, leiten Sie ihre Botklasse von ActivityHandler ab, der wiederum von der abstrakten Bot-Klasse abgeleitet wird.
ActivityHandler definiert verschiedene Handler für verschiedene Arten von Aktivitäten, beispielsweise on_message_activity und on_members_added. Diese Methoden sind zwar geschützt, können aber dank der Ableitung von ActivityHandler überschrieben werden.
In ActivityHandler sind folgende Handler definiert:
| Ereignis |
Bearbeiter |
Beschreibung |
| Beliebigen Aktivitätstyp empfangen |
on_turn |
Ruft einen der anderen Handler auf (abhängig von der Art der empfangenen Aktivität). |
| Nachrichtenaktivität empfangen |
on_message_activity |
Überschreiben Sie diesen Handler, um eine Aktivität vom Typ message zu behandeln. |
| Konversationsaktualisierungsaktivität empfangen |
on_conversation_update_activity |
Ruft bei einer Aktivität vom Typ conversationUpdate einen Handler auf, wenn andere Mitglieder als der Bot der Konversation beitreten oder sie verlassen. |
| Mitglieder, die keine Bots sind, sind der Konversation beigetreten. |
on_members_added_activity |
Überschreiben Sie diesen Handler, um Mitglieder zu behandeln, die einer Konversation beitreten. |
| Mitglieder ohne Bot-Funktion haben die Konversation verlassen |
on_members_removed_activity |
Überschreiben Sie diesen Handler, um Mitglieder zu behandeln, die eine Konversation verlassen. |
| Ereignisaktivität empfangen |
on_event_activity |
Ruft bei einer Aktivität vom Typ event einen spezifischen Handler für den Ereignistyp auf. |
| Tokenantwortereignis-Aktivität empfangen |
on_token_response_event |
Überschreiben Sie diesen Handler, um Tokenantwortereignisse zu behandeln. |
| Tokenantwortereignis-fremde Aktivität empfangen |
on_event_activity |
Überschreiben Sie diesen Handler, um andere Arten von Ereignissen zu behandeln. |
| messageReaction-Aktivität empfangen |
on_message_reaction_activity |
Ruft bei einer messageReaction-Aktivität einen Handler auf, wenn mindestens eine Reaktion zu einer Nachricht hinzugefügt oder daraus entfernt wurde. |
| Nachrichtenantworten zu einer Nachricht hinzugefügt |
on_reactions_added |
Überschreiben Sie dies, um der Nachricht hinzugefügte Antworten zu verarbeiten. |
| Nachrichtenantworten aus einer Nachricht entfernt |
on_reactions_removed |
Überschreiben Sie dies, um aus der Nachricht entfernte Antworten zu verarbeiten. |
| Aktualisierungsaktivität der Installation erhalten |
on_installation_update |
Ruft in einer installationUpdate-Aktivität einen Handler auf, abhängig davon, ob der Bot installiert oder deinstalliert wurde. |
| Bot installiert. |
on_installation_update_add |
Überschreiben Sie dies, um Logik hinzuzufügen, wenn der Bot in einer Organisationseinheit installiert wird. |
| Bot deinstalliert |
on_installation_update_remove |
Überschreiben Sie dies, um Logik hinzuzufügen, wenn der Bot in einer Organisationseinheit deinstalliert wird. |
| Anderen Aktivitätstyp empfangen |
on_unrecognized_activity_type |
Überschreiben Sie dies, um Aktivitätstypen zu behandeln, die andernfalls nicht behandelt würden. |
Diese verschiedenen Handler verfügen über einen Turn-Kontext (turn_context), der Informationen zur eingehenden Aktivität (der eingehenden HTTP-Anforderung) bereitstellt. Aufgrund der verschiedenen möglichen Arten von Aktivitäten gibt jeder Handler in seinem Turn-Kontextparameter eine stark typisierte Aktivität an. on_message_activity wird in den meisten Fällen behandelt und ist generell am gängigsten.
Wie in früheren 4.x-Versionen dieses Frameworks besteht auch die Möglichkeit, die öffentliche Methode on_turn zu implementieren. Die Basisimplementierung dieser Methode behandelt aktuell die Fehlerüberprüfung und ruft anschließend abhängig von der Art der eingehenden Aktivität die einzelnen spezifischen Handler auf (beispielsweise die beiden, die in diesem Beispiel definiert wurden). In den meisten Fällen können Sie diese Methode ignorieren und die einzelnen Handler verwenden. Falls Sie jedoch eine benutzerdefinierte Implementierung von on_turn benötigen, ist sie weiterhin eine Option.
Wichtig
Wenn Sie die Methode on_turn überschreiben, müssen Sie super().on_turn aufrufen, um die Basisimplementierung zum Aufrufen aller anderen Handler vom Typ on_<activity> zu erhalten, oder diese Handler selbst aufrufen. Andernfalls werden diese Handler nicht aufgerufen, und der Code wird nicht ausgeführt.
Beispielaktivitätshandler
So können Sie z. B. auf hinzugefügte Mitglieder einwirken, um Benutzer in einer Unterhaltung willkommen zu heißen und auf Nachrichten einwirken, um die von ihnen an den Bot gesendeten Nachrichten zurückzusenden.
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);
}
}
}
}
const { ActivityHandler, MessageFactory } = require('botbuilder');
class EchoBot extends ActivityHandler {
constructor() {
super();
// See https://aka.ms/about-bot-activity-message to learn more about the message and other activity types.
this.onMessage(async (context, next) => {
const replyText = `Echo: ${ context.activity.text }`;
await context.sendActivity(MessageFactory.text(replyText, replyText));
// By calling next() you ensure that the next BotHandler is run.
await next();
});
this.onMembersAdded(async (context, next) => {
const membersAdded = context.activity.membersAdded ?? [];
const welcomeText = 'Hello and welcome!';
for (let cnt = 0; cnt < membersAdded.length; ++cnt) {
if (membersAdded[cnt].id !== context.activity.recipient.id) {
await context.sendActivity(MessageFactory.text(welcomeText, welcomeText));
}
}
// By calling next() you ensure that the next BotHandler is run.
await next();
});
public class EchoBot extends ActivityHandler {
@Override
protected CompletableFuture<Void> onMessageActivity(TurnContext turnContext) {
return turnContext.sendActivity(
MessageFactory.text("Echo: " + turnContext.getActivity().getText())
).thenApply(sendResult -> null);
}
@Override
protected CompletableFuture<Void> onMembersAdded(
List<ChannelAccount> membersAdded,
TurnContext turnContext
) {
String welcomeText = "Hello and welcome!";
return membersAdded.stream()
.filter(
member -> !StringUtils
.equals(member.getId(), turnContext.getActivity().getRecipient().getId())
).map(channel -> turnContext.sendActivity(MessageFactory.text(welcomeText, welcomeText, null)))
.collect(CompletableFutures.toFutureList()).thenApply(resourceResponses -> null);
}
}
class EchoBot(ActivityHandler):
async def on_members_added_activity(
self, members_added: [ChannelAccount], turn_context: TurnContext
):
for member in members_added:
if member.id != turn_context.activity.recipient.id:
await turn_context.send_activity("Hello and welcome!")
async def on_message_activity(self, turn_context: TurnContext):
return await turn_context.send_activity(
MessageFactory.text(f"Echo: {turn_context.activity.text}")
)
Nächste Schritte
- Der Microsoft-Teams-Kanal führt einige Teams-spezifische Aktivitäten ein, die Ihr Bot unterstützen muss, um ordnungsgemäß mit Teams zu arbeiten. Informationen zu den wichtigsten Konzepten der Entwicklung von Bots für Microsoft Teams finden Sie unter Funktionsweise von Microsoft Teams-Bots.
- Ein Aktivitätshandler ist eine gute Möglichkeit, einen Bot zu entwerfen, der nicht den Unterhaltungszustand zwischen Turns nachverfolgen muss. Die Dialogbibliothek bietet Möglichkeiten zur Verwaltung einer zeitintensiven Unterhaltung mit dem Benutzer.