Freigeben über


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:

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

Nächster Schritt

Weitere Informationen: