Créer et envoyer des messages

Pour créer et envoyer des messages actionnables, utilisez un webhook entrant ou un connecteur Microsoft 365. Toutefois, les messages actionnables sont accessibles uniquement aux utilisateurs disposant d’une licence Exchange Online.

Créer des messages actionnables

Les messages actionnables incluent six boutons visibles sur la carte. Chaque bouton est défini dans la potentialAction propriété du message à l’aide ActionCard d’actions, chacune avec un type d’entrée, un champ de texte, un sélecteur de dates ou une liste à choix multiples. Chaque ActionCard est associée à une action, par exempleHttpPOST.

Les cartes de connecteurs prennent en charge les actions suivantes :

  • ActionCard: présente un ou plusieurs types d’entrée et actions associées.
  • HttpPOST: envoie une requête POST à une URL.
  • OpenUri: ouvre l’URI dans un navigateur ou une application distinct. Si vous le souhaitez, cible différents URI en fonction des systèmes d’exploitation.

L'action ActionCard prend en charge trois types d'entrée :

  • TextInput: un champ de texte à une seule ligne ou à plusieurs lignes avec une limite de longueur facultative.
  • DateInput: un sélecteur de dates avec un sélecteur d’heure facultatif.
  • MultichoiceInput: une liste énumérée de choix offrant une sélection unique ou plusieurs sélections.

MultichoiceInput prend en charge une propriété style qui contrôle l’affichage initial complet de la liste. La valeur par défaut destyle dépend de la valeur suivante isMultiSelect comme suit :

isMultiSelect Par défaut style
false ou non spécifié compact
true expanded

Pour afficher la liste à sélection multiple dans le style compact, spécifiez "isMultiSelect": true et "style": true.

Pour plus d’informations sur les actions de carte de connecteur, consultez Actions.

Remarque

  • Spécifier compact pour la propriété style dans Microsoft Teams revient à spécifier normal pour la propriété style dans Microsoft Outlook.
  • Pour l’action HttpPOST, le jeton du porteur est inclus dans les demandes. Ce jeton inclut l’identité Microsoft Entra de l’utilisateur Microsoft 365 qui a effectué l’action.

Envoyer un message via un webhook ou un connecteur entrant pour Groupes Microsoft 365

Pour envoyer un message via votre connecteur ou webhook entrant pour Groupes Microsoft 365, publiez une charge utile JSON dans l’URL du webhook. Cette charge utile doit être sous la forme d’un connecteur carte pour Groupes Microsoft 365.

Vous pouvez également utiliser ce JSON pour créer des cartes contenant des entrées enrichies, telles que l’entrée de texte, la sélection multiple ou la sélection de date et d’heure. Le code qui génère la carte et la publie sur l’URL de webhook peut s’exécuter sur n’importe quel service hébergé. Ces cartes sont définies dans le cadre de messages actionnables et sont également prises en charge dans les cartes utilisées dans les bots Teams et les extensions de message.

Exemple de message de connecteur

Voici un exemple de message de connecteur :

{
    "@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"
        }]
    }]
}

L’image suivante est un exemple de message de connecteur carte dans un canal :

Capture d’écran montrant un exemple de connecteur carte dans un canal.

Envoyer des messages à l’aide de cURL et de PowerShell

Pour publier un message dans le webhook avec cURL, procédez comme suit :

  1. Installez cURL à partir du site Web de cURL.

  2. Depuis la ligne de commande , entrez la commande cURL suivante :

    // 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>
    

    Remarque

    Si la publication réussit, vous devriez voir un simple1 sortie par curl.

  3. Vérifiez le client Teams pour la nouvelle carte publiée.

Envoyer des cartes adaptatives à l'aide d'un Webhook entrant

Remarque

Pour envoyer des cartes adaptatives avec du texte ou une image encodée en Base64 via un webhook entrant, procédez comme suit :

  1. Configurez un webhook personnalisé dans Teams.
  2. Créez un fichier JSON de carte adaptative à l’aide du code suivant :
    {
       "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)"
                    }
                ]
             }
          }
       ]
    }

Les propriétés du fichier JSON de carte adaptative sont les suivantes :

  • Le "type" champ doit être"message".
  • Le"attachments" tableau contient un ensemble d'objets carte.
  • Le"contentType" champ doit être défini sur le type de carte adaptative.
  • L’"content" objet est la carte formatée en JSON.
  1. Testez votre carte adaptative avec Postman :

    1. Testez la carte adaptative à l’aide de Postman pour envoyer une requête POST à l’URL, créée pour configurer le webhook entrant.
    2. Collez le fichier JSON dans le corps de la demande et affichez le message de carte adaptative dans Teams.

Conseil

Utilisez des exemples de code et des modèles de carte adaptative pour tester le corps de la requête POST.

Limitation du taux pour les connecteurs

Les limites des taux d’application contrôlent le trafic qu’un connecteur ou un webhook entrant est autorisé à générer sur un canal. Teams effectue le suivi des requêtes à l’aide d’une fenêtre à taux fixe et d’un compteur incrémentiel mesuré en secondes. Si plus de quatre demandes sont faites en une seconde, la connexion client est limitée jusqu’à ce que la fenêtre s’actualise pendant la durée du taux fixe.

Seuils de transaction par seconde

Le tableau suivant fournit les détails de la transaction basée sur le temps :

Durée en secondes Nombre maximal de demandes autorisées
1 4
30 60
3600 100
7200 150
86400 1800

Remarque

Une logique de nouvelle tentative avec un délai d’attente exponentiel peut atténuer la limitation des taux pour les cas où les demandes dépassent les limites en l’espace d’une seconde. Référez-vous aux réponses du protocole HTTP 429 pour éviter de vous heurter aux limites de taux.

// 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
    }
}

Ces limites sont en place pour réduire le courrier indésirable d’un canal par un connecteur et garantissent une expérience optimale aux utilisateurs.

Voir aussi