Ereignisgesteuerte Unterhaltungen mit einem Aktivitätshandler
Artikel
GILT FÜR: SDK v4
Ein Aktivitätshandler ist eine ereignisgesteuerte Methode zum Organisieren der Unterhaltungslogik 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 Boterstellung muss Ihre Botlogik für die Behandlung von bzw. die Reaktion auf Nachrichten in diesem Handler für die Nachrichtenaktivität platziert werden. Analog dazu muss Ihre Logik für die Behandlung von Mitgliedern, die der Konversation hinzugefügt werden, im Handler auf Mitglieder hinzugefügt 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
Die JavaScript-, C#- und Python-SDKs für Bot Framework werden weiterhin unterstützt, das Java-SDK wird jedoch eingestellt und der langfristige Support endet im November 2023.
Bestehende Bots, die mit dem Java SDK erstellt wurden, werden weiterhin funktionieren.
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 alle onMessage-Aktivitätslistener in der Reihenfolge ihrer Registrierung.
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.
Vor dem Ende des Turns muss der Zustand gespeichert werden. 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 Boterstellung muss Ihre Botlogik für die Behandlung von bzw. die Reaktion auf Nachrichten in diesem Handler (on_message_activity) platziert werden. 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
Handler
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 der Konversation Mitglieder hinzugefügt oder Mitglieder aus der Konversation entfernt werden (abgesehen vom Bot).
Bot-fremde Mitglieder sind der Konversation beigetreten
OnMembersAddedAsync
Überschreiben Sie diesen Handler, um Mitglieder zu behandeln, die einer Konversation beitreten.
Bot-fremde Mitglieder 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 Antwort zu einer Nachricht hinzugefügt bzw. 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, der darauf basiert, 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 diesen Handler, 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 für den Empfang einer -Aktivität.
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 jeweiligen Aktivitätstyp keine Aktivität 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
Handler
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 der Konversation Mitglieder hinzugefügt oder Mitglieder aus der Konversation entfernt werden (abgesehen vom Bot).
Bot-fremde Mitglieder sind der Konversation beigetreten
onMembersAdded
Überschreiben Sie diesen Handler, um Mitglieder zu behandeln, die einer Konversation beitreten.
Bot-fremde Mitglieder 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 Antwort zu einer Nachricht hinzugefügt bzw. 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, der darauf basiert, 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 diesen Handler, 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
Handler
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 der Konversation Mitglieder hinzugefügt oder Mitglieder aus der Konversation entfernt werden (abgesehen vom Bot).
Bot-fremde Mitglieder sind der Konversation beigetreten
on_members_added_activity
Überschreiben Sie diesen Handler, um Mitglieder zu behandeln, die einer Konversation beitreten.
Bot-fremde Mitglieder 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 Antwort zu einer Nachricht hinzugefügt bzw. 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, der darauf basiert, 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 diesen Handler, 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);
}
}
}
}
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();
});
}
}
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.