Partager via


Créer et envoyer des messages

Importante

Les connecteurs Microsoft 365 (précédemment appelés connecteurs Office 365) sont presque obsolètes, et la création de nouveaux connecteurs Microsoft 365 sera bientôt bloquée. Pour plus d’informations sur la planification et la façon dont l’application Flux de travail offre une expérience plus flexible et sécurisée, consultez Retrait des connecteurs Microsoft 365 dans Microsoft Teams.

Comment pouvez-vous créer un webhook dans Teams ?

Si vous avez déjà créé des connecteurs Office 365 :

  • Créer un connecteur Power Automate : Power Automate améliore les applications workflows largement utilisées dans Teams. Il s’agit de l’approche évolutive et sécurisée pour transmettre des données par programmation dans et hors de Teams. Si vous adoptez cette méthode, vous pouvez créer des modèles de flux de travail pour la publication d’alertes de votre produit sur les canaux Teams. Cette approche simplifie l’adoption par les utilisateurs de la nouvelle méthode. Pour plus d’informations, consultez Power Automate pour les développeurs d’entreprise, les éditeurs de logiciels indépendants et les partenaires.

  • Mettre à jour votre application Teams : vous pouvez améliorer votre application Teams actuelle. Par exemple, vous pouvez autoriser les utilisateurs à configurer des messages proactifs en fonction des événements déclencheurs au sein de votre système. Pour plus d’informations, consultez comment les bots peuvent publier sur des canaux via des messages proactifs.

Problèmes connus

  • L’application workflows ne peut pas publier dans des canaux privés en tant que bot de flux. Toutefois, il peut publier au nom d’un utilisateur.
  • Les workflows prennent uniquement en charge les cartes adaptatives. Il ne prend pas en charge l’ancien format de carte de message utilisé par Office 365 Connectors. La prise en charge de l’utilisation du format de carte de message dans les workflows est disponible à partir de la mi-octobre. Pour plus d’informations, consultez Comment convertir le format de message carte connecteur en carte adaptative.
  • Les workflows n’offrent pas de connecteurs tiers tels que DataDog et Jenkins.
  • Les workflows peuvent uniquement être créés dans votre environnement par défaut.

Limites

Les flux de travail sont liés uniquement à des utilisateurs spécifiques (appelés propriétaires du flux de travail) et non à une équipe ou un canal Teams. Les flux de travail peuvent devenir orphelins en l’absence d’un propriétaire si aucun copropriétaire n’est affecté. Pour maintenir la continuité du processus métier automatisé par le flux, les administrateurs peuvent ajouter un ou plusieurs copropriétaires et leur accorder un contrôle total sur le flux de travail. Ils peuvent également ajouter l’authentification pour les connexions, le cas échéant, et activer le flux s’il a été désactivé. Pour plus d’informations, consultez Gérer les flux orphelins.

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 faire 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://zcusa.951200.xyz/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://zcusa.951200.xyz/outlook/actionable-messages"
        }]
    }, {
        "@type": "OpenUri",
        "name": "Learn More",
        "targets": [{
            "os": "default",
            "uri": "https://zcusa.951200.xyz/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://zcusa.951200.xyz/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