Grundlegendes zu Agent-Konzepten

Die Interaktionen eines Agenten können mithilfe von Text, Sprache, Bildern oder Videos erfolgen. Es verarbeitet die Eingaben des Benutzers, um seine Anforderung zu verstehen, und wertet die Eingaben aus, um relevante Aufgaben auszuführen. Ein Agent kann Informationen anfordern oder den Zugriff auf Dienste ermöglichen und dem Benutzer antworten.

Agent-Bereiche

Agents in Microsoft Teams können Teil einer Einzelunterhaltung, eines Gruppenchats oder eines Kanals in einem Team sein. Jeder Bereich bietet einzigartige Chancen und Herausforderungen für Ihren Gesprächsagenten.

In einem Kanal In einem Gruppenchat In einem 1:1-Chat.
Massive Reichweite Weniger Mitglieder Traditionelle Art und Weise
Präzise individuelle Interaktionen @mention An Agent Q&A-Agenten
@mention An Agent Ähnlich wie Kanal Agenten, die Witze erzählen und sich Notizen machen

In einem Kanal

Kanäle enthalten Threadunterhaltungen zwischen mehreren Personen, sogar bis zu 2000. Dies gibt Ihrem Agenten möglicherweise eine enorme Reichweite, aber einzelne Interaktionen müssen prägnant sein. Herkömmliche Interaktionen mit mehreren Umläufen funktionieren nicht. Stattdessen müssen Sie interaktive Karten oder Dialogfelder (in TeamsJS v1.x als Aufgabenmodule bezeichnet) verwenden oder die Unterhaltung in eine 1:1-Unterhaltung verschieben, um viele Informationen zu sammeln. Ihr Agent hat nur Zugriff auf Nachrichten, bei denen er @mentioned. Mithilfe von Microsoft Graph und Berechtigungen auf Organisationsebene können Sie zusätzliche Nachrichten aus der Unterhaltung abrufen.

Agents 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 oder lustige Agenten, bei denen Sie ein tolles Katzenbild erhalten, wählen zufällig einen Gewinner aus und so weiter.

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 in einem Kanal hat Ihr Agent nur dann Zugriff auf Nachrichten, wo er sich direkt befindet @mentioned .

Agents, die in einem Kanal besser funktionieren, funktionieren auch besser in einem Gruppenchat.

In einem 1:1-Chat.

Der 1:1-Chat ist eine herkömmliche Methode für einen Unterhaltungsagenten, mit einem Benutzer zu interagieren. Einige Beispiele für One-to-One-Unterhaltungsagenten sind:

  • Q&A-Agenten
  • Agents, die Workflows in anderen Systemen initiieren.
  • Agenten, die Witze erzählen.
  • Agents, die Notizen machen. Überlegen Sie vor dem Erstellen von 1:1-Agents, ob eine konversationsbasierte Schnittstelle die beste Möglichkeit ist, Ihre Funktionalität zu präsentieren.

Aktivitätshandler und Agentlogik

Um eine Agent-App zu erstellen, die Ihren Anforderungen entspricht, ist das Verständnis des Microsoft Teams-Aktivitätshandlers und der Agentlogik unerlässlich. Diese beiden Schlüsselkomponenten arbeiten zusammen, um die Unterhaltungslogik zu organisieren.

  • Teams-Aktivitätshandler: Verarbeitet Teams-spezifische Ereignisse und Interaktionen wie die Erstellung von Kanälen, das Hinzufügen von Teammitgliedern und andere Aktionen, die für die Teams-Umgebung einzigartig sind. Im Teams SDK v2 werden Handler direkt in einer App Instanz und nicht über Klassenvererbung registriert.

  • Agentenlogik: Das App Objekt enthält die Konversationslogik des Agenten und ist für Entscheidungen auf der Grundlage von Benutzereingaben verantwortlich. Eingehende Aktivitäten werden basierend auf dem Aktivitätstyp und dem optionalen Musterabgleich an den entsprechenden Handler weitergeleitet.

Teams-Aktivitätshandler

Der Aktivitätshandler ist der Kern der Funktionalität eines Agents und verwaltet und verarbeitet Benutzerinteraktionen. Im Teams SDK v2:

  • Sie instanziieren ein App Objekt und registrieren Handler dafür.
  • Handler erhalten ein typisiertes Kontextobjekt (IActivityContext in TypeScript, IContext<TActivity> in C#, ActivityContext[TActivity] in Python).
  • Antworten und proaktive Nachrichten werden über ctx.reply() oder ctx.send()gesendet.

Wenn ein Teams-Agent eine Aktivität empfängt, leitet das SDK sie über den registrierten Handler weiter. Teams-spezifische Ereignisse (Kanallebenszyklus, Mitgliederänderungen usw.) werden als eigenständige benannte Ereignisse angezeigt, sodass Sie sie nicht manuell überprüfen channelData.eventType müssen.

Hinweis

Wenn die Verarbeitung einer Agentaktivität länger als 15 Sekunden dauert, sendet Teams eine Wiederholungsanforderung an den Agentendpunkt, sodass möglicherweise doppelte Anforderungen angezeigt werden.

Codeausschnitte für Aktivitätshandler

Die folgenden Codeausschnitte zeigen Teams-Aktivitätshandler für Kanal- und Teamlebenszyklusereignisse.

Agents werden mithilfe des Microsoft.Teams.Apps Pakets erstellt. Sie instanziieren AN App - und Kettenhandlerregistrierungen mithilfe von Erweiterungsmethoden wie OnMessage(), OnChannelCreated()usw. Alle Handler erhalten ein IContext<TActivity> Objekt.

OnChannelCreated

using Microsoft.Teams.Apps;

WebApplicationBuilder builder = WebApplication.CreateSlimBuilder(args);
builder.Services.AddTeamsBotApplication();

WebApplication app = builder.Build();
TeamsBotApplication teams = app.UseTeamsBotApplication();

teams.OnChannelCreated(async (context, cancellationToken) =>
{
    var channel = context.Activity.ChannelData.Channel;
    var team    = context.Activity.ChannelData.Team;
    // Code logic here
});

OnChannelDeleted

teams.OnChannelDeleted(async (context, cancellationToken) =>
{
    // Code logic here
});

OnChannelRenamed

teams.OnChannelRenamed(async (context, cancellationToken) =>
{
    // Code logic here
});

OnTeamRenamed

teams.OnTeamRenamed(async (context, cancellationToken) =>
{
    // Code logic here
});

OnMembersAdded

teams.OnMembersAdded(async (context, cancellationToken) =>
{
  foreach (var member in context.Activity.MembersAdded)
  {
        // Code logic here
    }
});

OnMembersRemoved

teams.OnMembersRemoved(async (context, cancellationToken) =>
{
  foreach (var member in context.Activity.MembersRemoved)
  {
        // Code logic here
    }
});

OnMessageUpdate / OnMessageDelete

Nachrichtenbearbeitungen werden über OnMessageUpdatebehandelt. Vorläufige Löschungen werden über OnMessageDeletebehandelt.

teams.OnMessageUpdate(async (context, cancellationToken) =>
{
    // Code logic here
});

teams.OnMessageDelete(async (context, cancellationToken) =>
{
    // Code logic here
});

Beispiel für einen Agent-Aktivitätshandler

Der folgende Code enthält ein Beispiel für eine Agent-Aktivität:

using Microsoft.Teams.Apps;

WebApplicationBuilder builder = WebApplication.CreateSlimBuilder(args);
builder.Services.AddTeamsBotApplication();

WebApplication app = builder.Build();
TeamsBotApplication teams = app.UseTeamsBotApplication();

teams.OnMessage(async (context, cancellationToken) =>
{
    var senderName = context.Activity.From.Name;
    await context.SendAsync($"Hello <at>{senderName}</at>.", cancellationToken);
});

app.Run();

Agent-Logik

Die Agentenlogik enthält die grundlegenden Regeln und Entscheidungsrahmen, die die Handlungen und Interaktionen eines Agenten bestimmen. Sie beschreibt, wie der Agent Benutzereingaben interpretiert, Antworten formuliert und an Unterhaltungen teilnimmt.

Im Teams SDK v2 verarbeitet die Agent-Logik eingehende Aktivitäten aus einem oder mehreren Agent-Kanälen und generiert ausgehende Aktivitäten. Das gesamte Aktivitätsrouting wird von der App Instance übernommen – Sie registrieren die Handler, und das SDK verteilt Aktivitäten automatisch an sie.

Hauptaktivitätshandler

Die App Klasse macht Erweiterungsmethoden zum Registrieren von Handlern verfügbar. Die Methoden kehren für eine flüssige Verkettung zurück App .

Ereignis Erweiterungsmethode Beschreibung
Jeder empfangene Aktivitätstyp OnActivity(handler) Catch-all-Handler, der für jede Aktivität aufgerufen wird.
Nachrichtenaktivität empfangen OnMessage(handler) Verarbeiten eingehender Textnachrichten. Übergeben Sie eine Regex-Zeichenfolge als erstes Argument für den Musterabgleich.
Unterhaltungsupdate erhalten OnConversationUpdate(handler) Unformatierte Aktualisierungsaktivität der Unterhaltung.
Nicht-Agent-Mitglieder sind beigetreten OnMembersAdded(handler) Wird ausgelöst, wenn MembersAdded.Length > 0.
Nicht-Agent-Mitglieder sind übrig geblieben OnMembersRemoved(handler) Wird ausgelöst, wenn MembersRemoved.Length > 0.
Installation hinzugefügt OnInstall(handler) Agent wurde installiert.

Teams-spezifische Aktivitätshandler

Ereignis Erweiterungsmethode Beschreibung
Kanal erstellt OnChannelCreated(handler) Ein Teams-Kanal wurde erstellt.
Kanal gelöscht OnChannelDeleted(handler) Ein Teams-Kanal wurde gelöscht.
Kanal umbenannt OnChannelRenamed(handler) Ein Teams-Kanal wurde umbenannt.
Team umbenannt OnTeamRenamed(handler) Das Team wurde umbenannt.
Nachricht bearbeitet OnMessageUpdate(handler) Eine Nachricht wurde bearbeitet.
Nachricht vorläufig gelöscht OnMessageDelete(handler) Eine Nachricht wurde vorläufig gelöscht.

Aufrufaktivitäten in Teams

Invoke-Typ Erweiterungsmethode Beschreibung
CardAction.Invoke OnExecuteAction(handler) Eine Aktivität zum Aufrufen einer Karte-Aktion wurde empfangen.
task/fetch OnTaskFetch(handler) Ein Dialog (Aufgabenmodul) wurde geholt.
task/submit OnTaskSubmit(handler) Ein Dialog (Aufgabenmodul) wurde gesendet.
fileConsent/invoke OnFileConsent(handler) Eine Dateizustimmung Karte Aktivität erhalten wurde.
signin/verifyState Automatisch vom SDK verarbeitet (OAuth-Fluss) Aktivität zur Überprüfung des Anmeldestatus.

Nachdem Sie sich nun mit den Agent-Aktivitätshandlern vertraut gemacht haben, sehen wir uns an, wie sich Agents je nach Konversation und den empfangenen oder gesendeten Nachrichten unterschiedlich verhalten.

Empfehlungen

Ein ausführlicher Dialog zwischen Ihrem Agent und dem Benutzer ist ein langsamer und komplexer Weg, um eine Aufgabe zu erledigen. Ein Agent, der übermäßige Befehle unterstützt, insbesondere eine breite Palette von Befehlen, ist nicht erfolgreich oder wird von den Benutzern nicht positiv bewertet.

  • Vermeiden von Mehrfachdurchläufen im Chat Ein umfangreicher Dialog verlangt vom Entwickler, den Status beizubehalten. Um diesen Status zu beenden, muss ein Benutzer entweder eine Zeitüberschreitung aufweisen oder "Abbrechen" auswählen. Auch der Prozess ist mühsam. Sehen Sie sich beispielsweise das folgende Unterhaltungsszenario an:

    BENUTZER: Plane eine Besprechung mit Marie.

    AGENT: Ich habe 200 Ergebnisse gefunden, fügen Sie einen Vor- und Nachnamen hinzu.

    BENUTZER: Plane eine Besprechung mit Marie Krause.

    AGENT: OK, wann würden Sie sich gerne mit Megan Bowen treffen?

    BENUTZER: um 13:00 Uhr.

    AGENT: An welchem Tag?

  • Unterstützt sechs oder weniger häufige Befehle Da es im aktuellen Agentmenü nur sechs sichtbare Befehle gibt, ist es unwahrscheinlich, dass weitere Befehle mit irgendeiner Häufigkeit verwendet werden. Agenten, die tief in ein bestimmtes Gebiet vordringen, anstatt zu versuchen, ein breiter Assistent zu sein, arbeiten und schneiden besser ab.

  • Optimieren der Größe der Wissensdatenbank für schnellere Interaktion Einer der Nachteile von Agents besteht darin, dass es schwierig ist, eine große Abruf-Wissensdatenbank mit nicht geordneten Antworten zu pflegen. Agenten eignen sich am besten für kurze, schnelle Interaktionen und nicht für das Durchsuchen langer Listen auf der Suche nach einer Antwort.

Hinweis

Die Teams-Plattform unterstützt nur Transport Layer Security (TLS) Version 1.2. Stellen Sie sicher, dass Sie Ihre Agent-Umgebung entsprechend konfigurieren.

Entdecken Sie weitere Agent-Features

Zusätzlich zu den herkömmlichen Agent-Funktionen können Sie auch erweiterte Funktionen erkunden, die in einer Teams-Agent-App verfügbar sind:

Codebeispiel

Beispielname Beschreibung TypeScript C# Python
Teams-Unterhaltungs-Agent Diese App veranschaulicht grundlegende Agent-Ereignisse. View View View