Grundlegendes zu Botkonzepten
Die Interaktionen eines Bots können Text, Sprache, Bilder oder Videos verwenden. Es verarbeitet die Eingaben des Benutzers, um seine Anforderung zu verstehen, und wertet die Eingabe aus, um relevante Aufgaben auszuführen. Ein Bot kann Informationen anfordern oder den Zugriff auf Dienste ermöglichen und dem Benutzer antworten.
Botbereiche
Bots in Microsoft Teams können Teil einer 1:1-Unterhaltung, eines Gruppenchats oder eines Kanals in einem Team sein. Jeder Bereich bietet für Ihren Unterhaltungs-Bot besondere Chancen und Herausforderungen.
In einem Kanal | In einem Gruppenchat | In einem 1:1-Chat. |
---|---|---|
Massive Reichweite | Weniger Mitglieder | Traditionelle Art und Weise |
Präzise individuelle Interaktionen | @mention zum Bot | F&A-Bots |
@mention zum Bot | Ähnlich wie Kanal | Bots, die Witze erzählen und Notizen machen |
In einem Kanal
Kanäle enthalten Threadunterhaltungen zwischen mehreren Personen sogar bis zu 2000. Dadurch erhält Ihr Bot potenziell eine enorme Reichweite, die einzelnen Interaktionen müssen aber präzise sein. Herkömmliche Multi-Turn-Interaktionen funktionieren nicht. Stattdessen müssen Sie interaktive Karten oder Dialoge (in TeamsJS v1.x als Aufgabenmodule bezeichnet) verwenden oder die Unterhaltung in eine 1:1-Unterhaltung verschieben, um viele Informationen zu sammeln. Ihr Bot hat nur Zugriff auf Nachrichten, bei denen es sich um handelt @mentioned
. Mithilfe von Microsoft Graph und Berechtigungen auf Organisationsebene können Sie zusätzliche Nachrichten aus der Unterhaltung abrufen.
Bots funktionieren in einem Kanal in den folgenden Fällen besser:
- Benachrichtigungen, wenn Sie eine interaktive Karte für die Benutzer bereitstellen, die weitere Informationen aufnimmt.
- Feedbackszenarien wie Abstimmungen und Umfragen.
- Ein einzelner Anforderungs- oder Antwortzyklus löst Interaktionen auf, und die Ergebnisse sind für mehrere Mitglieder der Unterhaltung nützlich.
- Soziale/Spaß-Bots, bei denen Sie tolle Katzenbilder erhalten, zufällig einen Gewinner auswählen, usw.
In einem Gruppenchat
Gruppenchats sind Unterhaltungen ohne Threading zwischen drei oder mehr Personen. Sie weisen tendenziell weniger Mitglieder auf als ein Kanal und sind kurzlebiger. Ähnlich wie bei einem Kanal hat Ihr Bot nur Zugriff auf Nachrichten, bei denen er sich direkt befindet @mentioned
.
Bots, die in einem Kanal besser funktionieren, funktionieren auch in einem Gruppenchat besser.
In einem 1:1-Chat.
Ein 1:1-Chat ist ein herkömmliches Interaktionsverfahren eines Unterhaltungs-Bots mit einem Benutzer. Einige Beispiele für 1:1-Unterhaltungs-Bots sind:
- F&A-Bots
- Bots, die Workflows in anderen Systemen initiieren.
- Bots, die Witze erzählen.
- Bots, die Notizen erstellen. Überlegen Sie vor dem Erstellen von 1:1-Chatbots, ob eine konversationsbasierte Schnittstelle die beste Möglichkeit ist, Ihre Funktionalität darzustellen.
Aktivitätshandler und Botlogik
Um eine Bot-App zu erstellen, die Ihren Anforderungen entspricht, ist es wichtig, den Microsoft Teams-Aktivitätshandler und die Botlogik zu verstehen. Diese beiden Schlüsselkomponenten arbeiten zusammen, um die Konversationslogik zu organisieren.
Teams-Aktivitätshandler: Teams-Aktivitätshandler erweitern die Funktionalität von Standardbots, indem sie Unterstützung für Teams-spezifische Ereignisse und Interaktionen hinzufügen. Diese Ereignisse können die Kanalerstellung, das Hinzufügen von Teammitgliedern und andere Aktionen umfassen, die nur für die Teams-Umgebung gelten. Durch die Verwendung von Teams-Aktivitätshandlern können Bots eine besser integrierte und nahtlose Benutzererfahrung innerhalb der Teams-Plattform bereitstellen.
Botlogik: Das Botobjekt, das die Konversationslogik des Bots enthält, ist dafür verantwortlich, Entscheidungen basierend auf Benutzereingaben zu treffen. Es macht einen Turn-Handler verfügbar, bei dem es sich um die Methode handelt, die eingehende Aktivitäten vom Botadapter akzeptiert. Die Botlogik stellt sicher, dass jede Wendung der Konversation angemessen behandelt wird, was zur gesamten Kohärenz und Effektivität des Bots beiträgt.
Diese beiden Komponenten arbeiten zusammen, um eine ansprechende Konversationserfahrung zu schaffen. Der Aktivitätshandler verarbeitet, was der Benutzer sagt, während die Botlogik die beste Antwort ermittelt. Zusammen ermöglichen sie Folgendes:
- Grundlegendes zum Kontext der Unterhaltung
- Personalisierung von Interaktionen
- Effizientes Abrufen von Informationen
- Aufrechterhaltung eines adaptiven Konversationsflusses
Wenn Sie den Aktivitätshandler und die Botlogik verstehen, können Sie intelligente, benutzerfreundliche Konversations-KI und herkömmliche Botlösungen entwerfen und implementieren.
Teams-Aktivitätshandler
Der Aktivitätshandler ist der Kern der Funktionalität eines Bots, der Benutzerinteraktionen verwaltet und verarbeitet. Sie basiert auf dem Aktivitätshandler des Microsoft Bot Framework und leitet alle Teams-Aktivitäten weiter, bevor sie nicht teamsspezifische Aktivitäten verarbeitet. Es fungiert als Vermittler zwischen der Eingabe des Benutzers und der Antwort des Bots:
- Empfängt eingehende Nachrichten.
- Ruft Schlüsseldaten aus der Benutzereingabe ab.
- Identifiziert die Benutzerabsicht mithilfe der Verarbeitung natürlicher Sprache (Natural Language Processing, NLP).
- Verwaltet den Konversationskontext und -zustand.
- Generiert Antworten basierend auf Benutzereingaben und Absichten.
Der Aktivitätshandler verbessert die Benutzerfreundlichkeit, Effizienz, Genauigkeit, Skalierbarkeit und Flexibilität.
Wenn ein Teams-Bot eine Aktivität erhält, wird sie über die Aktivitätshandler weitergeleitet. Alle Aktivitäten durchlaufen einen Basishandler namens Turn-Handler, der dann den entsprechenden Aktivitätshandler aufruft. Der Teams-Bot wird von der TeamsActivityHandler
-Klasse abgeleitet, die aus der Klasse von ActivityHandler
Bot Framework stammt.
Hinweis
Wenn die Verarbeitung einer Botaktivität mehr als 15 Sekunden dauert, sendet Teams eine Wiederholungsanforderung an den Botendpunkt, sodass möglicherweise doppelte Anforderungen angezeigt werden.
Bots werden mithilfe von Bot Framework erstellt. Wenn ein Bot eine Nachricht erhält, wird der Turn-Handler benachrichtigt und an den OnMessageActivityAsync
Handler gesendet. Dies funktioniert in Teams genauso. Wenn der Bot ein Konversationsupdate erhält, sendet der Turn-Handler es an OnConversationUpdateActivityAsync
. Der Teams-Aktivitätshandler sucht zuerst nach Teams-spezifischen Ereignissen. Wenn keine vorhanden sind, werden sie an den Aktivitätshandler von Bot Framework übergeben.
In der Teams-Aktivitätshandlerklasse gibt es zwei primäre Teams-Aktivitätshandler:
-
OnConversationUpdateActivityAsync
leitet alle Konversationsaktualisierungsaktivitäten weiter. -
OnInvokeActivityAsync
leitet alle Teams-Aufrufaktivitäten weiter.
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.
Um Ihre Logik für Teams-spezifische Aktivitätshandler einzurichten, müssen Sie die Methoden in Ihrem Bot überschreiben, wie im Abschnitt Botlogik gezeigt. Es gibt keine Standardimplementierung für diese Handler, also fügen Sie einfach die gewünschte Logik in Ihrer Außerkraftsetzung hinzu.
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
}
Beispiel für bot-Aktivitätshandler
Der folgende Code enthält ein Beispiel für eine Botaktivität für einen Kanalteambereich:
protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
{
var mention = new Mention
{
Mentioned = turnContext.Activity.From,
// EncodeName: Converts the name to a valid XML name.
Text = $"<at>{XmlConvert.EncodeName(turnContext.Activity.From.Name)}</at>",
};
// MessageFactory.Text(): Specifies the type of text data in a message attachment.
var replyActivity = MessageFactory.Text($"Hello {mention.Text}.");
replyActivity.Entities = new List<Entity> { mention };
// Sends a message activity to the sender of the incoming activity.
await turnContext.SendActivityAsync(replyActivity, cancellationToken);
}
Der folgende Code enthält ein Beispiel für Bot-Aktivitäten für einen 1:1-Chat:
// Handle message activity
protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
{
// Remove recipient mention text from Text property.
// Use with caution because this function is altering the text on the Activity.
turnContext.Activity.RemoveRecipientMention();
var text = turnContext.Activity.Text.Trim().ToLower();
// Sends a message activity to the sender of the incoming activity.
await turnContext.SendActivityAsync(MessageFactory.Text($"Your message is {text}."), cancellationToken);
}
Botlogik
Botlogik umfasst die grundlegenden Regeln und Entscheidungsframeworks, die die Aktionen und Interaktionen eines Bots diktieren. Es wird beschrieben, wie der Bot Benutzereingaben interpretiert, Antworten formuliert und an Unterhaltungen teilnimmt.
In Teams verarbeitet die Botlogik eingehende Aktivitäten von einem oder mehreren Ihrer Botkanäle 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 oder SDK-Methode | 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 oder SDK-Methode | 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 oder SDK-Methode | 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.
Empfehlungen
Ein umfangreicher Dialog zwischen Ihrem Bot und dem Benutzer ist ein langsamer und übermäßig komplexer Weg, um eine Aufgabe zu erledigen. Ein Bot, der übermäßige Befehle unterstützt, insbesondere eine breite Palette von Befehlen, wird von Benutzern nicht erfolgreich oder positiv angesehen.
Vermeiden von Multi-Turn-Erfahrungen im Chat Für einen umfangreichen Dialog muss der Entwickler den Zustand beibehalten. Um diesen Zustand zu beenden, muss ein Benutzer entweder ein Timeout ausführen oder Abbrechen auswählen. Auch der Prozess ist mühsam. Sehen Sie sich beispielsweise das folgende Unterhaltungsszenario an:
BENUTZER: Plane eine Besprechung mit Marie.
BOT: Ich habe 200 Ergebnisse gefunden, einschließlich eines Vor- und Nachnamens.
BENUTZER: Plane eine Besprechung mit Marie Krause.
BOT: OK, Wann möchten Sie sich mit Marie Krause treffen?
BENUTZER: um 13:00 Uhr.
BOT: An welchem Tag?
Unterstützung von sechs oder weniger häufigen Befehlen Da es nur sechs sichtbare Befehle im aktuellen Botmenü gibt, ist es unwahrscheinlich, dass weitere Befehle in irgendeiner Häufigkeit verwendet werden. Bots, die detailliert auf einen bestimmten Bereich eingehen, anstatt zu versuchen, ein allgemeiner Assistent zu sein, werden besser funktionieren und besser abschneiden.
Optimieren der Größe der Wissensdatenbank für eine schnellere Interaktion Einer der Nachteile von Bots besteht darin, dass es schwierig ist, eine große Abruf-Wissensdatenbank mit antworten ohne Rangfolge aufrechtzuerhalten. Bots sind am besten für kurze, schnelle Interaktionen geeignet, nicht für das Durchsuchen langer Listen auf der Suche nach einer Antwort.
Hinweis
Die Teams-Plattform unterstützt nur TLS-Version 1.2 (Transport Layer Security). Stellen Sie sicher, dass Sie Ihre Botumgebung entsprechend konfigurieren.
Erkunden anderer Botfeatures
Zusätzlich zu herkömmlichen Botfeatures können Sie auch erweiterte Features erkunden, die in einer Teams-Bot-App verfügbar sind:
- Änderungen an der Teams-Bot-API zum Abrufen von Team- oder Chatmitgliedern.
- Bots für Anrufe und Onlinebesprechungen.
- Aktivieren Sie SSO für Ihre App.
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 |