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.
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
Webhook | Format d’origine | Situation actuelle |
---|---|---|
1 | MessageCard non modifiable { « @type »: »MessageCard », « title »: »… », « text »: »… », « potentialAction »:[] } | Flux Power Automate « Post to Teams when a webhook is received » ⟶ Null dans attachments |
2 | Chaîne simple via pymsteams | Dé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
= messageattachments[0].contentType
= application/vnd.microsoft.card.adaptiveattachments[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ée | Détails & remarques |
---|---|
1. Re‑mapper dans Power Automate | Ajouter immédiatement une action Compose ou Parse JSON pour envelopper le MessageCard dans une Adaptive Card (exemple complet ci‑dessous). |
2. Convertir côté source | Si l’API émettrice peut évoluer, envoyez directement une Adaptive Card ou le JSON remappé. |
3. Micro‑service Azure / Logic App | Intercalez 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 tierce | Ex. Jira publie depuis août 2024 un connecteur natif Jira → Teams compatible Adaptive Card ; l’installer suffit. |
5. Vérifier licences & droits | L’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 Automate | Le 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
- Créer un flux Cloud instantané
→ When a HTTP request is received (passer l’URL à votre application source plus tard). - Ajouter Compose
Collez le JSON de remappage ; en entrée, utilisez Body (le MessageCard brut). - Ajouter Post adaptive card in a chat or channel
- Post as : le flux
- Post in : Canal ou Chat
- Message : sortie de l’action Compose
- Enregistrer, copier l’URL générée et la transmettre à l’émetteur.
- 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
Champ | Type / Valeur | Description |
---|---|---|
type | message | Obligatoire (en minuscules). |
attachments | Tableau → object | Au moins un élément. |
attachments[0].contentType | application/vnd.microsoft.card.adaptive | Identifie la carte. |
attachments[0].content | Objet JSON | Sché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.