Créer et envoyer des messages

Vous pouvez créer des messages actionnables et les envoyer via le webhook entrant ou Office 365 connector.

Créer des messages actionnables

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

Les cartes de connecteurs prendre 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, cible éventuellement différentes URI en fonction des systèmes d’exploitation.

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

  • TextInput: champ de texte à une seule ligne ou à plusieurs lignes avec une limite de longueur facultative.
  • DateInput: sélecteur de dates avec un sélecteur d’heure facultatif.
  • MultichoiceInput: 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 style dépend de la valeur suivante isMultiSelect :

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

Pour afficher la liste de plusieursélections dans le style compact, vous devez spécifier les deux "isMultiSelect": true et "style": true .

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

Notes

  • 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é Azure AD de l’utilisateur Office 365 sujet de l’action.

Envoyer un message via le webhook entrant ou Office 365 connector

Pour envoyer un message via votre webhook entrant ou votre connecteur Office 365, publiez une charge utile JSON sur l’URL du webhook. Cette charge utile doit prendre la forme d’une carte Office 365 connecteur.

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 Teams bots et extensions de messagerie.

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://teamsnodesample.azurewebsites.net/static/img/image5.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://docs.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://docs.microsoft.com/outlook/actionable-messages"
        }]
    }, {
        "@type": "OpenUri",
        "name": "Learn More",
        "targets": [{
            "os": "default",
            "uri": "https://docs.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://docs.microsoft.com/outlook/actionable-messages"
        }]
    }]
}

Ce message fournit la carte suivante dans le canal :

Capture d’écran d’une carte de connecteur

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

Pour publier un message dans le webhook avec cURL

  1. Installez cURL à l’aide de https://curl.haxx.se/ : .

  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>
    

    Notes

    Si la post réussit, vous devez voir une sortie simple de 1 curl par .

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

Envoyer des cartes adaptatives à l’aide d’un webhook entrant

Notes

Pour envoyer des cartes adaptatives via un webhook entrant

  1. Configurer 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 de type Carte adaptative.
    • L’"content" objet est la carte formatée en JSON.
  3. Testez votre carte adaptative avec Postman :

    • Testez la carte adaptative à l’aide de Postman pour envoyer une requête POST à l’URL, créée pour configurer le webhook entrant.
    • 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 de fréquence d’application contrôlent le trafic qu’un connecteur ou un webhook entrant est autorisé à générer sur un canal. Teams les demandes à l’aide d’une fenêtre à taux fixe et d’un compteur incrémentielle 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 des transactions basées sur le temps :

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

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. Suivez les meilleures pratiques pour éviter d’atteindre les limites de taux.

Notes

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