Migrer des Webhooks Teams MessageCard vers Power Automate Adaptive Card

Introduction
Microsoft retire les Incoming Webhooks basés sur MessageCard. Pour continuer à publier des notifications dans Teams, il faut convertir ces flux vers des Adaptive Cards gérées par Power Automate. Cet article détaille pas à pas la migration, du diagnostic à la mise en production.

Sommaire

Contexte : la fin programmée des MessageCards

Historiquement, les connecteurs Teams acceptaient deux formats JSON :

  • MessageCard (schema.org) : simple mais figé, déclaré obsolète depuis 2019.
  • Adaptive Card : évolutif (v1.0 à v1.6), pris en charge par Teams, Outlook, Bot Framework, etc.

À compter des retirements annoncés par Microsoft, toute requête Incoming Webhook dépourvue d’un objet attachments contenant une Adaptive Card renvoie une erreur « BadPayload » ou, via Power Automate, le message :

the result of 'foreach' expression ... ['attachments'] is of type 'Null'

Problématique rencontrée

WebhookFormat d’origineSituation actuelle
1MessageCard non modifiable
{ « @type »: »MessageCard », « title »: »… », « text »: »… », « potentialAction »:[] }
Flux Power Automate « Post to Teams when a webhook is received »
Null dans attachments
2Chaîne simple via pymsteamsDéjà converti : ajout d’un objet attachments[0] contenant une Adaptive Card ✅

Pourquoi Power Automate rejette-t-il le MessageCard ?

Le déclencheur When a HTTP request is received livre la charge utile telle quelle. Or l’action Post adaptive card in a chat or channel impose le schéma minimal suivant :

  • type = message
  • attachments[0].contentType = application/vnd.microsoft.card.adaptive
  • attachments[0].content = JSON conforme au schéma officiel Adaptive Card

En l’absence de ce tableau attachments, l’action échoue systématiquement.

Plan de migration recommandé

Six pistes hiérarchisées ; choisissez la plus adaptée à votre gouvernance et à vos contraintes :

Étape recommandéeDétails & remarques
1. Re‑mapper dans Power AutomateAjouter immédiatement une action Compose ou Parse JSON pour envelopper le MessageCard dans une Adaptive Card (exemple complet ci‑dessous).
2. Convertir côté sourceSi l’API émettrice peut évoluer, envoyez directement une Adaptive Card ou le JSON remappé.
3. Micro‑service Azure / Logic AppIntercalez une fonction légère pour transformer le payload lorsqu’il est impossible de modifier le système source.
4. Mettre à jour l’intégration tierceEx. Jira publie depuis août 2024 un connecteur natif Jira → Teams compatible Adaptive Card ; l’installer suffit.
5. Vérifier licences & droitsL’action Post adaptive card est un connecteur premium. Un abonnement Teams Premium ou Power Automate Per‑user peut être requis.
6. Contourner les limites du forum Power AutomateLe bouton « Start a topic » peut apparaître grisé ; recherchez d’abord, puis cliquez sur « Post your question ».

Code de remappage prêt à l’emploi

Placez-le dans une action Compose (ou Parse JSON si vous souhaitez le typer) :

<# Remappage MessageCard → Adaptive Card #>
{
  "type": "message",
  "attachments": [
    {
      "contentType": "application/vnd.microsoft.card.adaptive",
      "content": {
        "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
        "type": "AdaptiveCard",
        "version": "1.5",
        "body": [
          {
            "type": "TextBlock",
            "weight": "Bolder",
            "size": "Medium",
            "wrap": true,
            "text": "@{triggerBody()?['title']}"
          },
          {
            "type": "TextBlock",
            "wrap": true,
            "text": "@{triggerBody()?['text']}"
          }
        ]
      }
    }
  ]
}

Guide pas à pas : créer un flux de réception Adaptive Card

  1. Créer un flux Cloud instantané
    → When a HTTP request is received (passer l’URL à votre application source plus tard).
  2. Ajouter Compose
    Collez le JSON de remappage ; en entrée, utilisez Body (le MessageCard brut).
  3. Ajouter Post adaptive card in a chat or channel
    • Post as : le flux
    • Post in : Canal ou Chat
    • Message : sortie de l’action Compose
  4. Enregistrer, copier l’URL générée et la transmettre à l’émetteur.
  5. Tester : utilisez Postman ou la commande curl.

Validation rapide dans Teams

Avant de déployer en production, utilisez l’action « Post adaptive card and wait for a response » dans un canal de test ; vous obtenez ainsi un aperçu visuel et la structure JSON réémise par Teams, utile pour le débogage.

Structure minimale requise par Teams

ChampType / ValeurDescription
typemessageObligatoire (en minuscules).
attachmentsTableau → objectAu moins un élément.
attachments[0].contentTypeapplication/vnd.microsoft.card.adaptiveIdentifie la carte.
attachments[0].contentObjet JSONSchéma Adaptive Card (v1.5 ou v1.6 recommandé).

Sécurité, licences et gouvernance

  • Limitation des domaines appelants : restreignez l’URL du déclencheur via Azure API Management ou un en‑tête secret.
  • Chiffrement TLS : obligatoire côté client (https://).
  • Logs et conformité : activez l’audit dans le Centre de conformité Microsoft 365 → Audit → Power Automate.
  • Licence : le connecteur HTTP + l’action Adaptive Card sont inclus dans Power Automate Premium ou Dynamics 365.
  • RBAC Teams : vérifiez que l’administrateur autorise les cartes adaptatives (paramètre Messaging policies).

Dépannage courant

404 lors de l’appel Webhook L’URL du déclencheur a été régénérée ou le flux supprimé ; rediffusez la nouvelle URL. Erreur BadPayload Le champ contentType est incorrect ou manquant ; vérifiez la casse. Texte coupé ou non wrapé Ajoutez "wrap": true sur les TextBlock ou augmentez maxWidth. Action grisée dans Power Automate Vous êtes sur un environnement Trial ; passez en environnement Production ou attribuez une licence payante.

FAQ rapide

Q : Puis‑je envoyer plusieurs Adaptive Cards dans un même message ?
R : Oui — remplissez attachments avec autant d’objets que nécessaire. Veillez toutefois à rester sous la limite de 28 Ko par message.

Q : Adaptive Card v1.6 est‑elle déjà prise en charge dans Teams ?
R : Depuis juin 2025, Teams Desktop et Teams Web acceptent v1.6 ; Teams Mobile reste en v1.5.

Q : Comment obtenir la réponse utilisateur ?
R : Utilisez l’action Post adaptive card and wait for a response et récupérez la propriété outputs.

Conclusion

Passer de MessageCard à Adaptive Card garantit la pérennité de vos notifications Teams et ouvre la voie à des scénarios interactifs riches : formulaires, champs d’action, collecte d’approbations, etc. La méthode la plus rapide consiste à insérer une action Compose dans Power Automate ; pour des besoins plus avancés, un micro‑service Azure offre un contrôle total. Quelle que soit l’approche, anticipez les licences premium, sécurisez vos endpoints et testez chaque carte sur toutes les plateformes Teams.

Sommaire