Freigeben über


Nachrichten erstellen und senden

Wichtig

Microsoft 365-Connectors (früher Office 365 Connectors genannt) werden bald eingestellt, und die Erstellung neuer Microsoft 365-Connectors wird bald blockiert. Weitere Informationen zum Zeitplan und dazu, wie die Workflows-App eine flexiblere und sicherere Erfahrung bietet, finden Sie unter Einstellung von Microsoft 365-Connectors in Microsoft Teams.

Wie können Sie einen Webhook in Teams erstellen?

Wenn Sie bereits Office 365 Connectors erstellt haben:

  • Erstellen eines Power Automate-Connectors: Power Automate verbessert die weit verbreiteten Workflows-Apps in Teams. Dies ist der skalierbare und sichere Ansatz zum programmgesteuerten Übertragen von Daten in und aus Teams. Wenn Sie diese Methode verwenden, können Sie Workflowvorlagen zum Veröffentlichen von Warnungen aus Ihrem Produkt in Teams-Kanälen erstellen. Dieser Ansatz vereinfacht die Benutzereinführung der neuen Methode. Weitere Informationen finden Sie unter Power Automate für Unternehmensentwickler, ISVs und Partner.

  • Aktualisieren Ihrer Teams-App: Sie können Ihre aktuelle Teams-App verbessern. Beispielsweise können Sie Benutzern ermöglichen, proaktive Nachrichten basierend auf Triggerereignissen in Ihrem System einzurichten. Weitere Informationen finden Sie unter Wie Bots über proaktive Nachrichten in Kanälen posten können.

Bekannte Probleme

  • Die Workflows-App kann keine Beiträge in privaten Kanälen als Flow-Bot bereitstellen. Es kann jedoch im Namen eines Benutzers posten.
  • Workflows unterstützen nur adaptive Karten. Das ältere Nachrichtenformat Karte, das Office 365 Connectors verwenden, wird nicht unterstützt. Die Unterstützung für die Verwendung des Nachrichtenformats Karte in Workflows wird ab Mitte Oktober verfügbar. Weitere Informationen finden Sie unter Konvertieren von Connectornachrichten Karte Format in adaptive Karte.
  • Workflows bieten keine Connectors von Drittanbietern wie DataDog und Jenkins an.
  • Workflows können nur in Ihrer Standardumgebung erstellt werden.

Einschränkungen

Workflows sind nur mit bestimmten Benutzern (als Besitzer des Workflows bezeichnet) und nicht mit einem Teams-Team oder -Kanal verknüpft. Workflows können verwaiste Flows werden, wenn kein Besitzer vorhanden ist, wenn keine Mitbesitzer zugewiesen sind. Um die Kontinuität im durch den Flow automatisierten Geschäftsprozess zu gewährleisten, können Administratoren einen oder mehrere Mitbesitzer hinzufügen und ihnen die vollständige Kontrolle über den Workflow gewähren. Sie können ggf. auch die Authentifizierung für Verbindungen hinzufügen und den Flow aktivieren, wenn er deaktiviert wurde. Weitere Informationen finden Sie unter Verwalten verwaister Flows.

Verwenden Sie zum Erstellen und Senden von Nachrichten mit Aktionen entweder einen eingehenden Webhook oder einen Microsoft 365-Connector. Auf die Nachrichten mit Aktionen kann jedoch nur für Benutzer mit einer Exchange Online-Lizenz zugegriffen werden.

Erstellen von Aktionen erfordernden Nachrichten

Aktionen erfordernden Nachrichten umfassen sechs sichtbare Schaltflächen auf der Karte. Jede Schaltfläche wird in der potentialAction -Eigenschaft der Nachricht mithilfe ActionCard von Aktionen definiert, die jeweils einen Eingabetyp, ein Textfeld, eine Datumsauswahl oder eine Mehrfachauswahlliste aufweisen. Jeder ActionCard ist eine Aktion zugeordnet, z. B. HttpPOST.

Die Connectorkarten unterstützen die folgenden Aktionen:

  • ActionCard: Stellt einen oder mehrere Eingabetypen und zugeordnete Aktionen dar.
  • HttpPOST: Sendet eine POST-Anforderung an eine URL.
  • OpenUri: Öffnet den URI in einem separaten Browser oder einer separaten App. Optional kann verschiedene URIs basierend auf Betriebssystemen verwendet werden.

Die ActionCard-Aktion unterstützt drei Eingabetypen:

  • TextInput: Ein ein- oder mehrzeiliges Textfeld mit optionaler Längenbegrenzung.
  • DateInput: Eine Datumsauswahl mit optionaler Zeitauswahl.
  • MultichoiceInput: Eine Liste mit Auswahlmöglichkeiten, die entweder die Auswahl einer einzelnen Option oder mehrerer Optionen bietet.

MultichoiceInput unterstützt eine style-Eigenschaft über die festgelegt wird, ob die Liste anfänglich vollständig erweitert angezeigt wird. Der Standardwert von style hängt vom Wert von isMultiSelect wie folgt ab:

isMultiSelect Vorgabe style
false oder nicht angegeben compact
true expanded

Um die Mehrfachauswahlliste im Kompaktformat anzuzeigen, geben Sie "isMultiSelect": true und "style": true an.

Weitere Informationen zu Connectorkarten-Aktionen finden Sie unter Aktionen.

Hinweis

  • Die Angabe von compact für die style-Eigenschaft in Microsoft Teams entspricht der Angabe von normal für die style-Eigenschaft in Microsoft Outlook.
  • Bei der HttpPOST-Aktion ist das Bearertoken in den Anforderungen enthalten. Dieses Token enthält die Microsoft Entra Identität des Microsoft 365-Benutzers, der die Aktion ausgeführt hat.

Senden einer Nachricht über eingehenden Webhook oder Connector für Microsoft 365-Gruppen

Um eine Nachricht über Ihren eingehenden Webhook oder Connector für Microsoft 365-Gruppen zu senden, senden Sie eine JSON-Nutzlast an die Webhook-URL. Diese Nutzlast muss in Form eines Connectors Karte für Microsoft 365-Gruppen vorliegen.

Sie können diesen JSON-Code auch zum Erstellen von Karten mit umfassenden Eingabeoptionen verwenden, wie z. B. Texteingabe, Mehrfachauswahl oder Auswählen eines Datums und einer Uhrzeit. Der Code, der die Karte generiert und an die Webhook-URL sendet, kann in jedem gehosteten Dienst ausgeführt werden. Diese Karten werden als Teil von Nachrichten mit Aktionen definiert und auch in Karten unterstützt, die in Teams-Bots und Nachrichtenerweiterungen verwendet werden.

Beispiel für eine Connectornachricht

Ein Beispiel für eine Connectornachricht:

{
    "@type": "MessageCard",
    "@context": "http://schema.org/extensions",
    "themeColor": "0076D7",
    "summary": "Larry Bryant created a new task",
    "sections": [{
        "activityTitle": "Larry Bryant created a new task",
        "activitySubtitle": "On Project Tango",
        "activityImage": "https://adaptivecards.io/content/cats/3.png",
        "facts": [{
            "name": "Assigned to",
            "value": "Unassigned"
        }, {
            "name": "Due date",
            "value": "Mon May 01 2017 17:07:18 GMT-0700 (Pacific Daylight Time)"
        }, {
            "name": "Status",
            "value": "Not started"
        }],
        "markdown": true
    }],
    "potentialAction": [{
        "@type": "ActionCard",
        "name": "Add a comment",
        "inputs": [{
            "@type": "TextInput",
            "id": "comment",
            "isMultiline": false,
            "title": "Add a comment here for this task"
        }],
        "actions": [{
            "@type": "HttpPOST",
            "name": "Add comment",
            "target": "https://learn.microsoft.com/outlook/actionable-messages"
        }]
    }, {
        "@type": "ActionCard",
        "name": "Set due date",
        "inputs": [{
            "@type": "DateInput",
            "id": "dueDate",
            "title": "Enter a due date for this task"
        }],
        "actions": [{
            "@type": "HttpPOST",
            "name": "Save",
            "target": "https://learn.microsoft.com/outlook/actionable-messages"
        }]
    }, {
        "@type": "OpenUri",
        "name": "Learn More",
        "targets": [{
            "os": "default",
            "uri": "https://learn.microsoft.com/outlook/actionable-messages"
        }]
    }, {
        "@type": "ActionCard",
        "name": "Change status",
        "inputs": [{
            "@type": "MultichoiceInput",
            "id": "list",
            "title": "Select a status",
            "isMultiSelect": "false",
            "choices": [{
                "display": "In Progress",
                "value": "1"
            }, {
                "display": "Active",
                "value": "2"
            }, {
                "display": "Closed",
                "value": "3"
            }]
        }],
        "actions": [{
            "@type": "HttpPOST",
            "name": "Save",
            "target": "https://learn.microsoft.com/outlook/actionable-messages"
        }]
    }]
}

Die folgende Abbildung zeigt ein Beispiel für die Connectornachricht, die in einem Kanal Karte:

Screenshot: Beispiel für einen Connector Karte in einem Kanal.

Senden von Nachrichten mit cURL und PowerShell

Führen Sie die folgenden Schritte aus, um eine Nachricht im Webhook mit cURL zu posten:

  1. Installieren Sie cURL von der cURL-Website.

  2. Geben Sie den folgenden cURL-Befehl in die Befehlszeile ein:

    // on macOS or Linux
    curl -H 'Content-Type: application/json' -d '{"text": "Hello World"}' <YOUR WEBHOOK URL>
    
    // on Windows
    curl.exe -H "Content-Type:application/json" -d "{'text':'Hello World'}" <YOUR WEBHOOK URL>
    

    Hinweis

    Wenn der POST-Vorgang erfolgreich ist, sollte eine einfache 1 durch curl ausgegeben werden.

  3. Überprüfen Sie den Teams-Client auf die neue gepostete Karte.

Senden von adaptiven Karten mithilfe eines eingehenden Webhooks

Hinweis

Führen Sie die folgenden Schritte aus, um adaptive Karten mit Text oder einem Base64-codierten Bild über einen eingehenden Webhook zu senden:

  1. Richten Sie einen benutzerdefinierten Webhook in Teams ein.
  2. Erstellen Sie die JSON-Datei für adaptive Karten mithilfe des folgenden Codes:
    {
       "type":"message",
       "attachments":[
          {
             "contentType":"application/vnd.microsoft.card.adaptive",
             "contentUrl":null,
             "content":{
                "$schema":"http://adaptivecards.io/schemas/adaptive-card.json",
                "type":"AdaptiveCard",
                "version":"1.2",
                "body":[
                    {
                    "type": "TextBlock",
                    "text": "For Samples and Templates, see [https://adaptivecards.io/samples](https://adaptivecards.io/samples)"
                    }
                ]
             }
          }
       ]
    }

Die Eigenschaften für die JSON-Datei für adaptive Karten sind wie folgt:

  • Das Feld "type" muss vom Typ "message" sein.
  • Das Array "attachments" enthält eine Reihe von Kartenobjekten.
  • Das Feld "contentType" muss auf den Typ "adaptive Karte" festgelegt werden.
  • Das Objekt "content" ist die in JSON formatierte Karte.
  1. Testen Sie Ihre adaptive Karte mit Postman:

    1. Testen Sie die adaptive Karte mit Postman, um eine POST-Anforderung an die URL zu senden, die zum Einrichten des eingehenden Webhooks erstellt wurde.
    2. Fügen Sie die JSON-Datei in den Textkörper der Anforderung ein, und zeigen Sie die Nachricht der adaptiven Karte in Microsoft Teams an.

Tipp

Verwenden Sie Codebeispiele und Vorlagen für adaptive Karten, um den Textkörper der POST-Anforderung zu testen.

Begrenzung der Datenübertragungsrate für Connectors

Die Grenzwerte für die Datenübertragungsrate von Anwendungen steuern, wieviel Datenverkehr von einem Connector oder eingehenden Webhook in einem Kanal generiert werden darf. Teams verfolgt Anforderungen mithilfe eines Festen Ratenfensters und eines inkrementellen Leistungsindikators in Sekunden nach. Wenn in einer Sekunde mehr als vier Anforderungen gestellt werden, wird die Clientverbindung gedrosselt, bis das Fenster auf die Dauer der festen Datenübertragungsrate aktualisiert wird.

Schwellenwerte für Transaktionen pro Sekunde

Die folgende Tabelle enthält die Details zu zeitbasierten Transaktionen:

Zeit in Sekunden Maximal zulässige Anforderungen
1 4
30 60
3600 100
7200 150
86400 1800

Hinweis

Eine Wiederholungslogik mit exponentiellem Backoff kann die Begrenzung der Datenübertragungsrate in Fällen verringern, in denen Anforderungen die Grenzwerte innerhalb einer Sekunde überschreiten. Lesen Sie die HTTP 429-Antworten, um zu vermeiden, dass die Ratenbegrenzungen überschritten werden.

// Please note that response body needs to be extracted and read 
// as Connectors do not throw 429s
try
{
    // Perform Connector POST operation     
    var httpResponseMessage = await _client.PostAsync(IncomingWebhookUrl, new StringContent(content));
    // Read response content
    var responseContent = await httpResponseMessage.Content.ReadAsStringAsync();
    if (responseContent.Contains("Microsoft Teams endpoint returned HTTP error 429")) 
    {
        // initiate retry logic
    }
}

Diese Begrenzungen haben den Zweck, das Spamming eines Kanals durch einen Connector zu verringern und Endbenutzern eine optimale Benutzererfahrung zu gewährleisten.

Siehe auch