Référence de carte de message intégrant des actionsLegacy actionable message card reference

Notes

Ce document décrit le format d’origine JSON pour le format carte interactif.This document describes the original JSON format for the actionable message card format. Pour les messages actionnables envoyés par courrier électronique, cela a été remplacé par le format de carte adaptative.For actionable messages sent via email, this has been replaced with the Adaptive Card format. Microsoft recommande que de nouvelles intégrations message exploitables utilisent le format de carte streaming et que les intégrations existantes prennent en compte la mise à jour au format de carte streaming.Microsoft recommends that new actionable message integrations use the Adaptive Card format, and existing integrations consider updating to Adaptive Card format. Le format de carte adaptative est requis pour prendre en charge d’Outlook sur iOS et Android.The Adaptive Card format is required to support Outlook on iOS and Android. Toutefois, si vous envoyez des messages exploitables via un connecteur Office ou à un connecteur Microsoft Teams, vous devez continuer à utiliser le format de carte des messages.However, if you are sending actionable messages via an Office connector, or to a Microsoft Teams connector, you must continue to use the message card format.

Les cartes sont conçues pour fournir des informations instantanées et facile à lire que les utilisateurs peuvent très rapidement déchiffrer et exécuter le cas échéant. De ce fait, le principe directeur pour la conception réussie de carte est « le contenu prime sur le chrome », ce qui signifie que les cartes vont droit au but et réduisent l’utilisation d’éléments distrayants, tels que des icônes ou des couleurs personnalisées.Cards are meant to provide easy to read, at-a-glance information that users can very quickly decipher and act upon when appropriate. As such, the guiding principle for designing great card is "content over chrome," which means cards are straight to the point and minimize the use of anything that would be distracting such as icons or custom colors.

Aire de jeu de carteCard playground

Êtes-vous prêt à tester votre conception de carte ? Consultez l’aire de jeu de carte qui vous permet d’avoir un aperçu de votre carte lorsque vous modifiez la charge utile JSON associée.Ready to experiment with your card design? Head to the Card Playground which allows you to see what your card will look like as you edit the associated JSON payload.

Notes

L’aire de jeu de carte charge des exemples de cartes adaptatives par défaut.The Card Playground loads Adaptive Card examples by default. Vous pouvez trouver des exemples de format de carte de message en sélectionnant la liste déroulante Sélectionner un exemple dans l’aire de jeu.You can find message card format examples by selecting the Select a sample dropdown in the playground.

Instructions de conceptionDesign guidelines

Formatage du texteText formatting

Tous les champs de texte dans une carte et sa section peuvent être mis en forme à l’aide de Markdown. L’outil Markdown de base est pris en charge.All text fields in a card and its section can be formatted using Markdown. We support basic Markdown.

Important

Dans la mesure où tous les champs sont traités comme Markdown, veillez à éviter les caractères spéciaux Markdown (tels que * ou #) si nécessaire.Since all fields are processed as Markdown, be sure to escape Markdown special characters (such as * or #) if needed.

EffetEffect MarkdownMarkdown
ItaliqueItalics *Italic*
GrasBold **Bold**
Gras italiqueBold italics ***Bold Italic***
BarréStrike-through ~~Strike-through~~
LiensLinks [Microsoft](https://www.microsoft.com)
Titres (<h1> via<h6>Headings (<h1> through <h6> # Heading via ###### Heading# Heading through ###### Heading
Liste à pucesBulleted lists * List item ou - List item* List item or - List item

Conseil

Suivez ces instructions lors de la mise en forme des champs de texte.Follow these guidelines when formatting text fields.

  • UtilisezMarkdown pour le format texte.Do use Markdown to format text.
  • N’utilisez pas les marques HTML dans vos cartes. Le code HTML est ignoré et traité comme texte brut.Don't use HTML markup in your cards. HTML is ignored and treated as plain text.

Utilisation des sectionsUsing sections

Si votre carte représente une seule « entité », vous pouvez peut-être ne pas avoir besoin d’utiliser des sections. Cela dit, les sections prennent en charge le concept d’une « activité », ce qui est souvent un bon moyen de représenter les données dans une carte.If your card represents a single "entity", you may be able to get away with not using any section. That said, sections support the concept of an "activity" which is often a good way to represent data in a card.

Si votre carte représente plusieurs « entités » ou est une synthèse, par exemple, d’une source d’actualités particulière, vous souhaitez certainement utiliser plusieurs sections, à savoir une par « entité ».If your card represents multiple "entities" or is, for instance, a digest for a particular news source, you will definitely want to use multiple sections, one per "entity."

Conseil

Suivez ces instructions lors de la planification de la disposition de votre carte.Follow these guidelines when planning the layout of your card.

  • Utilisez des sections pour regrouper les données de manière logique.Do use sections to logically group data together.
  • Parfois, plusieurs sections PEUVENT être utilisées pour représenter un seul groupe logique des données. Cela permet d’organiser les informations présente dans la carte avec plus de souplesse. Par exemple, il est possible d’afficher une liste de faits avant une activité.Sometimes, multiple sections MAY be used to represent a single logical group of data; this allows for more flexibility on ordering the information presented in the card. For example, it makes it possible to display a list of facts before an activity.
  • N’incluez pas plus de 10 sections. Les cartes doivent être faciles à lire. S’il existe trop d’informations dans une carte, cela peut ne pas être compréhensible pour l’utilisateur.Don't include more than 10 sections. Cards are meant to be easy to read; if there is too much information in a card, it will be lost on the user.
  • Pour les cartes semblables à une synthèse, envisagez d’ajouter une action permettant d’afficher la synthèse en entier (« View full digest ») à la fin de la carte.For digest-like cards, consider adding a "View full digest" action at the end of the card.

Champs de carteCard fields

ChampField TypeType DescriptionDescription
@type StringString Obligatoire. Doit être défini sur MessageCard.Required. Must be set to MessageCard.
@context StringString Obligatoire. Doit être défini sur https://schema.org/extensions.Required. Must be set to https://schema.org/extensions.
correlationId UUIDUUID La propriété correlationId simplifie la recherche des journaux pour résoudre des problèmes.The correlationId property simplifies the process of locating logs for troubleshooting issues. Quand vous envoyez une carte actionnable, votre service doit définir et consigner un UUID unique dans cette propriété.We recommend that when sending an actionable card, your service should set and log a unique UUID in this property.

Quand l’utilisateur appelle une action sur la carte, Office 365 envoie à votre service les en-têtes Card-Correlation-Id et Action-Request-Id dans la requête POST.When the user invokes an action on the card, Office 365 sends the Card-Correlation-Id and Action-Request-Id headers in the POST request to your service. Card-Correlation-Id contient la même valeur que la propriété correlationId dans la carte.Card-Correlation-Id contains the same value as the correlationId property in the card. Action-Request-Id est un UUID unique généré par Office 365 pour aider votre service à trouver une action effectuée par un utilisateur.Action-Request-Id is a unique UUID generated by Office 365 to help locate specific action performed by a user. Votre service doit consigner ces deux valeurs quand il reçoit les requêtes d’action POST.Your service should log both of these values when receiving action POST requests.
expectedActors Tableau de chaînesArray of String Facultatif.Optional. Cette liste contient une liste d’adresses de messagerie prévues du destinataire pour le point de terminaison d’action.This contains a list of expected email addresses of the recipient for the action endpoint.

Un utilisateur peut avoir plusieurs adresses de messagerie et le point de terminaison d’action peut ne pas prévoir l’adresse de messagerie spécifique présentée dans la revendication sub du jeton du porteur.A user can have multiple email addresses and the action endpoint might not be expecting the particular email address presented in the sub claim of the bearer token. Par exemple, un utilisateur peut avoir l’adresse de messagerie john.doe@contoso.com ou john@contoso.com, mais le point de terminaison d’action prévoit de recevoir john@contoso.com dans la revendication sub du jeton du porteur.For example, a user could have both the john.doe@contoso.com or john@contoso.com email address, but the action endpoint expects to receive john@contoso.com in the sub claim of the bearer token. En définissant ce champ sur ["john@contoso.com"], la revendication sub aura l’adresse de messagerie prévue.By setting this field to ["john@contoso.com"], the sub claim will have the expected email address.
originator StringString Obligatoire en cas d’envoi par courrier électronique, non applicable en cas d’envoi par connecteur.Required when sent via email, not applicable when sent via connector. Pour un e-mail appelant une action, doit être défini sur l’ID de fournisseur généré par le tableau de bord du développeur E-mail appelant une action.For actionable email, MUST be set to the provider ID generated by the Actionable Email Developer Dashboard.
summary ChaîneString Obligatoire si la carte ne contient pas de propriété text, sinon facultative.Required if the card does not contain a text property, otherwise optional. La propriété summary s’affiche généralement dans la vue de liste dans Outlook, afin de déterminer rapidement de quoi traite la carte.The summary property is typically displayed in the list view in Outlook, as a way to quickly determine what the card is all about.

Incluez toujours un résumé.Do always include a summary.
N’incluez pas de détails dans le résumé. Par exemple, pour un billet sur Twitter, un résumé peut simplement lire un « nouveau tweet de @nomutilisateur » sans mentionner le contenu du tweet.Don't include details in the summary. For example, for a Twitter post, a summary might simply read "New tweet from @someuser" without mentioning the content of the tweet itself.
themeColor StringString Spécifie une couleur d’étiquette personnalisée pour la carte. La couleur s’affiche de manière discrète.Specifies a custom brand color for the card. The color will be displayed in a non-obtrusive manner.

Utilisez themeColor pour étiqueter les cartes avec votre couleur.Do use themeColor to brand cards to your color.
N’utilisez pas themeColor pour indiquer le statut.Don't use themeColor to indicate status.
hideOriginalBody BooleanBoolean S’applique uniquement aux cartes dans les courriers électroniquesOnly applies to cards in email messages

Lorsque la valeur est True, le corps HTML du message doit être masqué. C’est très utile dans les scénarios dans lesquels la carte est une représentation plus utile ou améliorée du contenu par rapport au corps HTML lui-même, ce qui est particulièrement vrai lorsque la carte contient des actions (voir ci-dessous).When set to true, causes the HTML body of the message to be hidden. This is very useful in scenarios where the card is a better or more useful representation of the content than the HTML body itself, which is especially true when the card contains actions (see below.)

Vous pouvez masquer le corps HTML d’origine dans les cas suivants :Consider hiding the original HTML body:
  • Si la carte elle-même contient toutes les informations dont un utilisateur a besoinIf the card itself contains all the information a user would need
  • Si le contenu de la carte et le contenu du corps sont redondantsIf the content of the card is redundant with the content of the body
Incluez toujours un corps HTML agréable, même s’il va être masqué. Le corps HTML est la seule chose qu’un client de messagerie ne prenant pas en charge les cartes est en mesure d’afficher. Par ailleurs, les cartes ne sont pas incluses lorsque vous répondez à des courriers électroniques ou que vous les transférez, seul le corps HTML est inclus.Do always include a nice HTML body, even if it is going to be hidden. The HTML body is the only thing an email client that doesn't support cards will be able to display. Furthermore, cards are not included when replying to or forwarding emails, only the HTML body.
Ne masquez pas le corps lorsqu’il complète les informations présentées dans la carte. Par exemple, le corps d’une approbation de dépense peut décrire la note de manière plus détaillée, tandis que la carte présente simplement un bref résumé et les actions d’approbation/de refus.Don't hide the body when it is complementary to the information presented in the card. For example, the body of an expense report approval might describe the report in great details while the card just presents a quick summary along with approve/decline actions.
title StringString La propriété title est destinée à être affichée de façon bien visible, tout en haut de la carte. Elle permet de présenter le contenu de la carte de manière à ce que les utilisateurs sachent immédiatement à quoi s’attendre.The title property is meant to be rendered in a prominent way, at the very top of the card. Use it to introduce the content of the card in such a way users will immediately know what to expect.

Exemples :Examples:
  • Informations quotidiennesDaily news
  • Nouveau bogue ouvertNew bug opened
  • Tâche <name of task> affectéeTask <name of task> assigned
**Créez ** un titre court, n’utilisez pas de longue phrase.Do keep title short, don't make it a long sentence.
Mentionnez le nom de l’entité concernée dans le titre.Do mention the name of the entity being referenced in the title.
N’utilisez pas de liens hypertexte (via Markdown) dans le titre.Don't use hyperlinks (via Markdown) in the title.
text ChaîneString Obligatoire si la carte ne contient pas de propriété summary, sinon facultative.Required if the card does not contain a summary property, otherwise optional. La propriété text est destinée à être affichée dans une police normale en dessous du titre de la carte.The text property is meant to be displayed in a normal font below the card's title. Elle permet d’afficher du contenu, comme la description de l’entité concernée, ou le résumé d’un article d’information.Use it to display content, such as the description of the entity being referenced, or an abstract of a news article.

Utilisez des éléments Markdown simples, tels que le gras ou l’italique pour mettre en évidence des mots, fournissez des liens vers des ressources externes.Do use simple Markdown, such as bold or italics to emphasize words, and links to external resources.
N’incluez pas n’importe quel appel à l’action dans la propriété de texte. Les utilisateurs doivent pouvoir ne pas la lire et toujours comprendre de quoi traite la carte.Don't include any call to action in the text property. Users should be able to not read it and still understand what the card is all about.
sections Tableau de SectionArray of Section Collection de sections à inclure dans la carte.A collection of sections to include in the card. Reportez-vous à Champs de section.See Section fields.
potentialAction Tableau de ActionsArray of Actions Un ensemble d’actions qui peuvent être appelées sur cette carte. Voir Actions.A collection of actions that can be invoked on this card. See Actions.

Champs de sectionSection fields

ChampField TypeType DescriptionDescription
title StringString La propriété title d’une section est affichée dans une police qui ressort, mais n’est pas voyante, en tant que titre de la carte. Elle est destinée à présenter la section et à résumer son contenu, de la même façon que la propriété de titre de la carte doit résumer la carte dans son intégralité.The title property of a section is displayed in a font that stands out while not as prominent as the card's title. It is meant to introduce the section and summarize its content, similarly to how the card's title property is meant to summarize the whole card.

**Créez ** un titre court, n’utilisez pas de longue phrase.Do keep title short, don't make it a long sentence.
Mentionnez le nom de l’entité concernée dans le titre.Do mention the name of the entity being referenced in the title.
N’utilisez pas de liens hypertexte (via Markdown) dans le titre.Don't use hyperlinks (via Markdown) in the title.
startGroup BooléenBoolean Lorsque la valeur est définie sur true, la propriété startGroup marque le début d’un groupe logique d’informations. En règle générale, les sections avec la valeur startGroupdéfinie sur true sont séparées visuellement des précédents éléments de carte. Par exemple, Outlook utilise une ligne de séparation horizontale subtile.When set to true, the startGroup property marks the start of a logical group of information. Typically, sections with startGroup set to true will be visually separated from previous card elements. For example, Outlook uses a subtle horizontal separation line.

An example of the separation of sections with startGroup=true

UtilisezstartGroup pour séparer les sections représentant les différents objets ; par exemple, plusieurs tweets dans une synthèse.Do use startGroup to separate sections that represent different objects; for example, multiple tweets in a digest.
activityImage
activityTitle
activitySubtitle
activityText
StringString Ces quatre propriétés forment un groupe logique. activityTitle, activitySubtitle et activityText s’affichent à côté de activityImage, à l’aide d’une disposition appropriée pour le facteur de forme de l’appareil sur lequel est affichée la carte. Par exemple, dans Outlook sur le web, activityTitle, activitySubtitle et activityText sont affichés à droite de activityImage, à l’aide d’une disposition à deux colonnes :These four properties form a logical group. activityTitle, activitySubtitle and activityText will be displayed alongside activityImage, using a layout appropriate for the form factor of the device the card is being viewed on. For instance, in Outlook on the Web, activityTitle, activitySubtitle and activityText are displayed on the right of activityImage, using a two-column layout:

An example activity layout

Utilisez les champs d’activité suivants pour les scénarios :Use the activity fields for scenarios such as:
  • Quelqu'un a fait quelque choseSomeone did something
    • Utilisez activityImage pour afficher l’image de cette personne.Use activityImage to display the picture of that person.
    • Utilisez activityTitle pour résumer l’action. Soyez clair et concis.Use activityTitle to summarize what they did. Make it short and to the point.
    • Utilisez activitySubtitle pour afficher, par exemple, la date et l’heure de l’action, ou l’identificateur de la personne.Use activitySubtitle to show, for instance, the date and time the action was taken, or the person's handle.
      • activitySubtitle s’affiche dans une police plus douceactivitySubtitle will be rendered in a more subdued font
      • Ne pas inclure d’informations essentiellesDon't include essential information
      • Ne pas inclure d’appels à l’actionDon't include calls to action
      • Éviter la mise en forme MarkdownAvoid Markdown formatting
    • Utilisez activityText pour fournir des détails sur l’activité.Use activityText to provide details about the activity.
      • Utiliser un élément Markdown simple pour mettre en évidence des mots ou créer un lien vers des sources externesDo use simple Markdown to emphasize words or link to external sources
      • Ne pas inclure d’appels à l’actionDon't include calls to action
  • Résumé de l’article d’informationA news article abstract
    • Utiliser activityImage pour afficher l’image associée à l’articleUse activityImage to display the picture associated with the article
    • Utiliser activitySubtitle pour afficher la date et l’heure de la publication d’origine de l’articleUse activitySubtitle to display the date and time the article was originally posted
    • Utiliser activityText pour afficher le résumé réelUse activityText to display the actual abstract
heroImage ImageImage Utilisez heroImage pour qu’une image soit l’élément central de votre carte. Par exemple, voici un tweet contenant une image que vous souhaitez placer en avant et au centre :Use heroImage to make an image the centerpiece of your card. For example, a tweet that contains an image will want to put that image front and center:

An example of a hero image in a message card

L’élément heroImage peut également être utilisé pour ajouter une bannière à votre carte, comme la bannière « TINYPulse – Engage » ci-dessous :heroImage can also be used to add a banner to your card, like the "TINYPulse – Engage" banner below:

An example of using a heroImage to create a banner
text StringString La propriété text de la section ressemble fortement à la propriété text de la carte. Elle peut être utilisée aux mêmes fins.The section's text property is very similar to the text property of the card. It can be used for the same purpose.
facts Tableau de paires nom/valeurArray of name/value pairs Les faits sont un composant essentiel d’une section. Ils contiennent souvent les informations les plus importantes pour l’utilisateur.Facts are a very important component of a section. They often contain the information that really matters to the user.

Les faits sont affichés de manière à être lus rapidement et efficacement. Par exemple, dans Outlook sur le web, les faits sont présentés dans une disposition à deux colonnes, et les noms de faits ont une police légèrement plus visible :Facts are displayed in such a way that they can be read quickly and efficiently. For example, in Outlook on the Web, facts are presented in a two-column layout, with fact names rendered in a slightly more prominent font:

An example of facts being displayed

Il existe de nombreuses utilisations des faits. Exemples de scénarios :There are many uses for facts. Some scenarios:
  • Un bogue a été créé.A bug was created
    • ID de bogue : 1234Bug ID: 1234
    • Ouvert par : Joséphine HebertOpened by: Adele Vance
    • Affecté à : Noel BelisleAssigned to: Alex Darrow
  • Rapport d’utilisation d’applicationApplication usage report
    • Nom d’application : Application CRM ContosoApplication name: Contoso CRM App
    • Période : 1 août 2016 - 30 septembre 2016Period: August 1, 2016 - September 30, 2016
    • Nombre d’utilisateurs : 542Number of users: 542
    • Nombre de sessions : 2 056Number of sessions: 2056
    • Temps moyen passé dans l’application : 76 secondesAverage time spend in the application: 76 seconds
  • Approbation de dépenseExpense approval
    • Soumis par : Jérôme RivardSubmitted by: Pradeep Gupta
    • Date de soumission : 21 octobre 2016Date submitted: October 21, 2016
    • Montant total : 1 426,95 $Total amount: $1,426.95
Utilisez les faits au lieu d’intégrer des informations importantes à l’intérieur de la propriété de texte de la carte ou de la section.Do use facts instead of embedding important information inside the text property of either the card or the section.
Utilisez des noms de faits courts.Do keep fact names short.
Évitez d’utiliser des valeurs de faits trop longues.Avoid making fact values too long.
Évitez d’utiliser la mise en forme Markdown pour les noms de faits et les valeurs. Laissez les faits s’afficher comme prévu, car ils ont plus d’impact de cette manière.Avoid using Markdown formatting for both fact names and values. Let facts be rendered as intended as that is how they will have the most impact.
Utilisez toutefois Markdown pour les liens dans les valeurs de faits uniquement. Par exemple, si un fait se rapporte à un document externe, crée un lien vers le document pour la valeur de ce fait.Do however use Markdown for links in fact values only. For instance, if a fact references an external document, make the value of that fact a link to the document.
N’ajoutez pas de fait sans un objectif réel. Par exemple, un fait ayant toujours la même valeur dans toutes les cartes n’est pas intéressant et représente une perte d’espace.Don't add a fact without a real purpose. For instance, a fact that would always have the same value across all cards is not interesting and a waste of space.
images Tableau d’objets imagesArray of Image objects La propriété images tient compte de l’inclusion d’une galerie de photos à l’intérieur d’une section. La galerie de photos est toujours affichée de manière à simplifier son utilisation, quel que soit le facteur de forme de l’appareil sur lequel elle figure. Par exemple, dans Outlook sur le web, les images peuvent être affichés sous forme de bande horizontale de miniatures avec des contrôles permettant de faire défiler la collection si l’écran pas n’est pas adapté. Sur un appareil mobile, les images peuvent être affichées comme une seule miniature et l’utilisateur peut consulter la collection de sites avec son doigt.The images property allows for the inclusion of a photo gallery inside a section. That photo gallery will always be displayed in a way that is easy to consume regardless of the form factor of the device it is being viewed on. For instance, in Outlook on the Web, images might be displayed as a horizontal strip of thumbnails with controls allowing to scroll through the collection if it doesn't all fit on the screen. On mobile, images might be displayed as a single thumbnail, with the user able to swipe through the collection with their finger.
potentialAction Tableau de ActionsArray of Actions Un ensemble d’actions qui peuvent être appelées sur cette section. Voir Actions.A collection of actions that can be invoked on this section. See Actions.

Objet imageImage object

Définit une image comme utilisée par les propriétés heroImage et images d’une section.Defines an image as used by the heroImage and images property of a section.

ChampField TypeType DescriptionDescription
image ChaîneString URL vers l’image.The URL to the image.
title StringString Brève description de l’image. En règle générale, l’élément title apparaît dans une info-bulle lorsque l’utilisateur fait glisser sa souris sur l’image.A short description of the image. Typically, title is displayed in a tooltip as the user hovers their mouse over the image.

ActionsActions

Les cartes sont très utiles, car elles permettent aux utilisateurs d’effectuer des actions rapides sans sortir de leur client de messagerie. Lorsque vous créez des cartes, envisagez d’y intégrer des actions, car cela augmente la productivité et l’intérêt de l’utilisateur.Cards are very powerful in the sense that they allow users to take quick actions without leaving their email client. When designing cards, consider making them actionable, as that will increase user engagement and productivity.

Les actions sont spécifiées à l’aide de la propriété potentialAction qui est disponible sur la carte et sur chaque section.Actions are specified using the potentialAction property which is available both on the card itself and on each section. Il existe cinq types d’action :There are five types of actions:

Il peut y avoir au maximum 4 actions (quel que soit leur type) dans une collection potentialAction.There can be a maximum of 4 actions (whatever their type) in a potentialAction collection.

  • Incluez les actions qui ont le plus d’impact pour l’utilisateur final, comme les actions les plus répétitives.Do include actions that will make the biggest impact for the end user, like the most repetitive ones.
  • N’ajoutez pas 4 actions simplement parce que vous le pouvez. Dans de nombreux cas, un petit nombre d’actions entraîne une meilleure expérience.Don't add 4 actions just because you can. In many cases, fewer actions will lead to a better experience.
  • Ne créez pas vos cartes dans le but de remplacer une application externe. Les cartes sont destinées à compléter les applications, et non à les remplacer.Don't craft your cards in an effort to replace an external application. Cards are meant to complement such applications, not to replace them.

Action OpenUriOpenUri action

Ouvre un URI dans un autre navigateur ou une autre application.Opens a URI in a separate browser or app.

Même si les liens peuvent être obtenus via Markdown, l’avantage de l’action OpenUri est que vous pouvez spécifier différents URI pour différents systèmes d’exploitation, ce qui permet d’ouvrir le lien dans une application sur des appareils mobiles.Although links can be achieved through Markdown, an OpenUri action has the advantage of allowing you to specify different URIs for different operating systems, which makes it possible to open the link in an app on mobile devices.

  • Envisagez d’utiliser une action OpenUri au lieu d’un lien dans Markdown si cela représente clairement un avantage pour les utilisateurs concernant l’ouverture du lien dans une application sur leur appareil mobile.Consider using an OpenUri action rather than a link in Markdown if there is a clear advantage for your users in their ability to open the link in an app on their mobile device.
  • Incluez au moins une action OpenUri pour afficher l’entité dans l’application externe d’où elle provient.Do include at least an OpenUri action to view the entity in the external app it comes from.
  • Placez l’action OpenUri à la fin de la collection potentialAction.Do make the OpenUri action the last one in the potentialAction collection.

Notes

Microsoft Teams et Outlook sur le web prennent uniquement en charge les URL HTTP/HTTPS dans le tableau targets pour une action OpenUri.Microsoft Teams and Outlook on the web only support HTTP/HTTPS URLs in the targets array for an OpenUri action.

ChampField TypeType DescriptionDescription
name ChaîneString La propriété name définit le texte qui est affiché à l’écran pour l’action.The name property defines the text that will be displayed on screen for the action.

**Utilisez ** des verbes. Par exemple, utilisez « Set due date » au lieu de « Due date » ou « Add note » au lieu de « Note ». Dans certains cas, le nom lui-même fonctionne, car il s’agit également d’un verbe : « Comment »Do use verbs. For instance, use "Set due date" instead of "Due date" or "Add note" instead of "Note." In some cases, the noun itself just works because it is also a verb: "Comment"
Ne nommez pas une action OpenUri de manière suggérant que l’action peut être effectuée à partir du client. À la place, nommez l’action « View in <nom du site/de l’application> » ou « Open in <nom du site/de l’application> »Don't name an OpenUri action in such a way that it suggests the action can be taken right from the client. Instead, name the action "View in <name of site/app>" or "Open in <name of site/app>"
targets TableauArray La propriété targets est une collection de paires nom/valeur qui définit un URI par système d’exploitation cible.The targets property is a collection of name/value pairs that defines one URI per target operating system.

Les valeurs de système d’exploitation prises en charge sont default, windows, iOS et android. Le système d’exploitation default ouvre simplement l’URI dans un navigateur web dans la plupart des cas, quel que soit le système d’exploitation réel.Supported operating system values are default, windows, iOS and android. The default operating system will in most cases simply open the URI in a web browser, regardless of the actual operating system.

Exemple de propriété targets :Example targets property:
"targets": [
{ "os": "default", "uri": "https://yammer.com/.../123" },
{ "os": "iOS", "uri": "yammer://u/123" },
{ "os": "android", "uri": "yammer://u/123" },
{ "os": "windows", "uri": "yammer://u/123" }
]

Action HttpPOSTHttpPOST action

Appelle à un service web externe.Makes a call to an external Web service.

Quand une action HttpPOST est exécutée, une demande POST est effectuée à l’URL dans le champ target et le service cible doit authentifier l’appelant. Cette opération peut être effectuée de diverses façons, y compris via un jeton à objectif limité incorporé dans l’URL cible. Pour obtenir plus d’informations et de l’aide concernant le choix du mécanisme de sécurité qui convient le mieux pour un scénario particulier, veuillez consulter la rubrique sur les exigences de sécurité pour les messages intégrant des actions.When an HttpPOST action is executed, a POST request is made to the URL in the target field, and the target service needs to authenticate the caller. This can be done in a variety of ways, including via a Limited Purpose Token embedded in the target URL. For more information and help on choosing the security mechanism that works best for your particular scenario, please see Security requirements for actionable messages.

ChampField TypeType DescriptionDescription
name ChaîneString La propriété name définit le texte qui est affiché à l’écran pour l’action.The name property defines the text that will be displayed on screen for the action.

**Utilisez ** des verbes. Par exemple, utilisez « Set due date » au lieu de « Due date » ou « Add note » au lieu de « Note ». Dans certains cas, le nom lui-même fonctionne, car il s’agit également d’un verbe : « Comment »Do use verbs. For instance, use "Set due date" instead of "Due date" or "Add note" instead of "Note." In some cases, the noun itself just works because it is also a verb: "Comment"
target StringString Définit le point de terminaison de l’URL du service qui implémente l’action.Defines the URL endpoint of the service that implements the action. Remarque : cette URL doit être accessible à partir d’internet, vous ne pouvez pas utiliser localhost.Note: this URL must be accessible from the internet, you cannot use localhost.
headers Tableau de HeaderArray of Header Collection d’objets Header représentant un ensemble d’en-têtes HTTP qui est émis lorsque vous envoyez la demande POST à l’URL cible. Voir En-tête.A collection of Header objects representing a set of HTTP headers that will be emitted when sending the POST request to the target URL. See Header.
body StringString Corps de la requête POST.The body of the POST request.
bodyContentType ChaîneString L’élément bodyContentType est facultatif et spécifie le type MIME du corps dans la demande POST.The bodyContentType is optional and specifies the MIME type of the body in the POST request. Un type de contenu doit être spécifié pour certains services.Some services require that a content type be specified. Les valeurs valides sont application/json et application/x-www-form-urlencoded.Valid values are application/json and application/x-www-form-urlencoded. Si aucune valeur n’est fournie, application/json est utilisé par défaut.If not specified, application/json is assumed.

L’objet Header est une paire nom-valeur qui représente un en-tête HTTP.The Header object is a name/value pair that represents an HTTP header.

ChampField TypeType DescriptionDescription
name StringString Nom de l’en-têteThe header name
value StringString Valeur de l’en-têteThe header value

Signalement de la réussite ou de l’échec de l’exécution d’une actionReporting an action's execution success or failure

Les actions HttpPOST peuvent inclure l’en-tête HTTP CARD-ACTION-STATUS dans leur réponse. Cet en-tête doit contenir du texte qui indique le résultat de l’exécution de l’action : sa réussite ou son échec.HttpPOST actions can include the CARD-ACTION-STATUS HTTP header in their response. This header is meant to contain text that indicates the outcome of the action's execution, whether it has succeeded or failed.

La valeur de l’en-tête est affichée de manière cohérente dans une zone réservée de la carte. Elle est également enregistrée avec la carte afin de pouvoir être affichée ultérieurement en vue de rappeler aux utilisateurs les actions déjà exécutées sur une carte donnée.The value of the header will be displayed in a consistent way in a reserved area of the card. It is also saved with the card so it can be displayed later on, so users can be reminded of the actions that have already been executed on a given card.

Conseil

Suivez ces instructions lors du renvoi d’une réponse pour les actions HttpPOST.Follow these guidelines when returning a response to HttpPOST actions.

  • Renvoyez l’en-tête CARD-ACTION-STATUS dans vos réponses.Do return the CARD-ACTION-STATUS header in your responses.
  • Rédigez un message aussi informatif et pertinent que possible dans l’en-tête. Par exemple, pour une action d’approbation concernant une note de frais :Do make the message in that header as informative and meaningful as possible. For instance, for an "approve" action on an expense report:
    • En cas de réussite, ne renvoyez pas le message « L’action a réussi », mais indiquez « La dépense a été approuvée ».In case of success, don't return "The action was successful", instead return "The expense was approved"
    • En cas d’échec, ne renvoyez pas le message « L’action a échoué », mais indiquez « La dépense n’a pas pu être approuvée pour l’instant. Réessayez plus tard. »In case of failure, don't return "The action failed", instead return "The expense couldn't be approved at this time. Please try again later"
  • Ne mentionnez pas le nom de la personne exécutant l’action ni l’heure à laquelle l’action a été effectuée dans l’en-tête CARD-ACTION-STATUS. Ces deux informations sont automatiquement ajoutées à votre place et affichées de manière cohérente.Don't mention either the name of the person taking the action nor the time the action is being taken in your CARD-ACTION-STATUS header. Both these pieces of information will be automatically added for you and displayed in a consistent way.

Cartes d’actualisationRefresh cards

Les cartes d’actualisation sont un mécanisme très puissant qui permet aux actions HttpPOST de mettre entièrement à jour la carte de manière instantanée lorsque l’action est terminée. Il existe de nombreux scénarios qui peuvent tirer avantage des cartes d’actualisation :Refresh cards are a very powerful mechanism that allow HttpPOST actions to fully update the card on the fly as the action successfully completes. There are many scenarios that benefit from refresh cards:

  • Scénario d’approbation (par exemple, une note de frais)Approval scenario (e.g. expense report)
    • Une fois que la demande est approuvée ou rejetée, la carte est actualisée afin de supprimer les actions d’approbation/de refus et de mettre à jour son contenu en vue de refléter l’approbation ou le refus.Once the request is approved or rejected, the card is refreshed to remove the approve/decline actions and update its content so it reflects the fact that it's been approved or declined
  • Statut de la tâcheTask status
    • Lorsqu’une action est effectuée sur une tâche, comme la définition de l’échéance, la carte est actualisée afin d’inclure l’échéance mise à jour dans ses faits.When an action is taken on a task, such as setting its due date, the card refreshes to include the updated due date in its facts
  • EnquêteSurvey
    • Une fois qu’une réponse a été fournie, la carte est actualisée et la situation est la suivante :Once the question has been answered, the card is refreshed so:
      • L’utilisateur ne peut plus répondreIt no longer allows the user to respond
      • L’état mis à jour, comme « Merci d’avoir répondu à cette enquête », est affiché en regard de la réponse de l’utilisateurIt shows updated status, like "Thanks for responding to this survey" alongside the user's actual response
      • Possibilité d’inclure une nouvelle action OpenUri qui permet à l’utilisateur de consulter l’enquête en lignePotentially include a new OpenUri action that allows the user to consult the survey online

Pour actualiser une carte à la suite d’une action HttpPOST, procédez comme suit pour un service :To refresh a card as a result of an HttpPOST action, a service needs to do the following:

  • Incluez la charge utile JSON de la nouvelle carte dans le corps de la réponse dans la requête HTTP POST reçue.Include the JSON payload of the new card in the body of the response to the HTTP POST request it received.
  • Ajoutez l’en-tête HTTP CARD-UPDATE-IN-BODY: true à la réponse afin d’informer le client destinataire qu’il doit analyser le corps de la réponse et extraire une nouvelle carte (c’est pour éviter tout traitement inutile lorsque aucune carte d’actualisation n’est incluse).Add the CARD-UPDATE-IN-BODY: true HTTP header to the response, in order to let the receiving client know that it should parse the response body and extract a new card (this is to avoid unnecessary processing when no refresh card is included.)

Conseil

Suivez ces instructions lors du renvoi de cartes d’actualisation.Follow these guidelines when returning refresh cards.

  • Utilisez des cartes d’actualisation avec des actions qui peuvent être effectuées une seule fois. Dans ce cas, la carte d’actualisation n’inclut aucune action qui ne peut plus être effectuée.Do use refresh cards with actions that can only be taken a single time. In those cases, the refresh card would not include any action that cannot be taken anymore
  • Utilisez des cartes d’actualisation avec des actions qui modifient l’état de l’entité sur laquelle elles sont exécutées. Dans ce cas, la carte de l’actualisation doit inclure les informations mises à jour sur l’entité et PEUT modifier l’ensemble d’actions pouvant être effectuées.Do use refresh cards with actions that change the state of the entity they are performed on. In those cases, the refresh card should include updated information about the entity, and MAY change the set of actions that can be performed
  • N’utilisez pas de cartes d’actualisation pour animer une conversation avec l’utilisateur. Par exemple, n’utilisez pas de cartes d’actualisation pour un « Assistant » à plusieurs étapes.Don't use refresh cards to lead a conversation with the user. For instance, don't use refresh cards for a multi-step "wizard"
  • Incluez au moins une action OpenUri pour afficher l’entité dans l’application externe d’où elle provient.Do include at least an OpenUri action to view the entity in the external app it comes from.

Action ActionCardActionCard action

Présente l’interface utilisateur supplémentaire qui contient une ou plusieurs entrées, ainsi que les actions associées pouvant être de type OpenUri ou HttpPOST.Presents additional UI that contains one or more Inputs, along with associated actions that can be either OpenUri or HttpPOST types.

**Utilisez ** une action ActionCard si une action nécessite que l’utilisateur réalise une entrée supplémentaire. Exemples de scénarios :Do use an ActionCard action if an action requires additional input from the user. Some scenarios:

  • Réponse à une enquêteResponding to a survey
  • Ajout d’un commentaire à un bogueAdding a comment to a bug
  • Fourniture de justification pour refuser une note de fraisProviding justification for declining an expense report

Par défaut, une action ActionCard est représentée sous forme de bouton ou de lien dans l’interface utilisateur de la carte. Lorsque vous cliquez dessus, ce bouton affiche un élément supplémentaire de l’interface utilisateur contenant les entrées et les actions définies dans la carte d’action.By default, an ActionCard action will be represented as a button or link in the card's UI. When clicked, that button will display an additional piece of UI containing the inputs and actions defined in the action card.

S’il existe une seule action ActionCard dans une collection potentialAction, Outlook représente l’action « déjà développée ». Par exemple, ses entrées et ses actions sont immédiatement visibles.If there is a single ActionCard action in a potentialAction collection, then Outlook will represent that action "pre-expanded," e.g. its inputs and actions will be immediately visible.

ChampField TypeType DescriptionDescription
name ChaîneString La propriété name définit le texte qui est affiché à l’écran pour l’action.The name property defines the text that will be displayed on screen for the action.

**Utilisez ** des verbes. Par exemple, utilisez « Set due date » au lieu de « Due date » ou « Add note » au lieu de « Note ». Dans certains cas, le nom lui-même fonctionne, car il s’agit également d’un verbe : « Comment »Do use verbs. For instance, use "Set due date" instead of "Due date" or "Add note" instead of "Note." In some cases, the noun itself just works because it is also a verb: "Comment"
inputs Tableau de InputsArray of Inputs La propriété inputs définit les différentes entrées affichées dans l’interface utilisateur de la carte d’action. Consultez la rubrique relative aux entréesThe inputs property defines the various inputs that will be displayed in the action card's UI. See Inputs
actions Tableau de ActionsArray of Actions La propriété actions est un tableau d’objetsAction, qui peuvent être de type OpenUri ou HttpPOST. La propriété actions d’une action ActionCard ne peut pas contenir une autre actionActionCard.The actions property is an array of Action objects, that can be either of type OpenUri or HttpPOST. The actions property of an ActionCard action cannot contain another ActionCard action.

Exemple ActionCardExample ActionCard

{
  "@type": "ActionCard",
  "name": "Comment",
  "inputs": [
    {
      "@type": "TextInput",
      "id": "comment",
      "isMultiline": true,
      "title": "Input's title property"
    }
  ],
  "actions": [
    {
      "@type": "HttpPOST",
      "name": "Action's name prop.",
      "target": "https://yammer.com/comment?postId=123",
      "body": "comment={{comment.value}}"
    }
  ]
}

EntréesInputs

Trois types d’entrées sont pris en charge : TextInput, DateInput et MultichoiceInput.Three types of inputs are supported: TextInput, DateInput, and MultichoiceInput.

Champs communsCommon fields

Les champs suivants sont communs à tous les types d’entrée.The following fields are common to all input types.

ChampField TypeType DescriptionDescription
id StringString Identifie l’entrée de manière unique afin de pouvoir y faire référence dans l’URL ou le corps d’une action HttpPOST. Consultez la rubrique sur la substitution de valeur d’entrée.Uniquely identifies the input so it is possible to reference it in the URL or body of an HttpPOST action. See Input value substitution.
isRequired BooleanBoolean Indique si les utilisateurs doivent taper une valeur avant d’être en mesure d’effectuer une action utilisant la valeur de l’entrée en tant que paramètre.Indicates whether users are required to type a value before they are able to take an action that would take the value of the input as a parameter.

Rendez une entrée obligatoire si les utilisateurs DOIVENT fournir une valeur.Do make an input required if users MUST provide a value.
Envisagez de rendre une entrée obligatoire si sa valeur complète celle d’une autre entrée obligatoire. Par exemple, vous pouvez définir une question d’enquête demandant si l’utilisateur est satisfait de sa voiture avec une entrée de choix multiple suivie d’une entrée de texte libre demandant d’expliquer la réponse. N’oubliez pas que certains utilisateurs n’apprécient pas d’être obligés de donner des explications et peuvent par conséquent ne pas du tout répondre à l’enquête.Consider making an input required if its value is complementary to that of another required input. For instance, you could define a survey question that asks "How satisfied are you with your car" with a multi choice input followed by "Please explain your answer" as a free text input. Keep in mind that some users might not like being forced into providing such explanations, and might as a result not respond to the survey at all.
Assurez-vous que les utilisateurs savent quelles entrées sont obligatoires. Incluez une étiquette dans la propriété de titre de l’entrée. Par exemple : Comment (optional) ou Please rate your experience (required).Do make sure users know which inputs are required. Include a label in the input's title property. For example: Comment (optional) or Please rate your experience (required).
title StringString Définit un titre pour l’entrée.Defines a title for the input.
value ChaîneString Définit la valeur initiale de l’entrée. Pour des entrées à choix multiples, la valeur doit être égale à la propriété de valeur de l’un des choix de l’entrée.Defines the initial value of the input. For multi-choice inputs, value must be equal to the value property of one of the input's choices.
TextInputTextInput

Utilisez ce type d’entrée lorsque les utilisateurs doivent compléter un texte libre, comme une réponse à une question d’enquête.Use this input type when you need users to provide free text, such as the response to a survey question.

ChampField TypeType DescriptionDescription
isMultiline BooleanBoolean Indique si l’entrée de texte doit accepter plusieurs lignes de texte.Indicates whether the text input should accept multiple lines of text.
maxLength NombreNumber Indique le nombre maximal de caractères pouvant être saisis.Indicates the maximum number of characters that can be entered.
Exemple TextInputExample TextInput
{
  "@type": "TextInput",
  "id": "comment",
  "isMultiline": true,
  "title": "Input's title property"
}
DateInputDateInput

Utilisez ce type d’entrée lorsque les utilisateurs doivent indiquer une date et une heure, par exemple pour l’échéance d’une tâche.Use this input type when you need users to provide a date and or a time, such as for a task's due date.

ChampField TypeType DescriptionDescription
includeTime BooleanBoolean Indique si l’entrée de date doit tenir compte de la sélection d’une heure en plus de la date.Indicates whether the date input should allow for the selection of a time in addition to the date.
Exemple DateInputExample DateInput
{
  "@type": "DateInput",
  "id": "dueDate",
  "title": "Input's title property"
}
MultichoiceInputMultichoiceInput

Utilisez ce type d’entrée lorsque les utilisateurs doivent effectuer une sélection dans une liste de choix prédéfinis, comme un statut de bogue, oui/non/peut-être, etc.Use this input type when you need users to select from a list of pre-defined choices, such as a bug status, yes/no/maybe, etc.

ChampField TypeType DescriptionDescription
choices Tableau de paires nom/valeurArray of name/value pairs Définit les valeurs pouvant être sélectionnées pour l’entrée à choix multiples.Defines the values that can be selected for the multichoice input.
isMultiSelect BooléenBoolean Si l’élément est défini sur true, cela indique que l’utilisateur peut sélectionner plusieurs choix. Les choix spécifiés sont affichés sous la forme d’une liste de cases à cocher. La valeur par défaut est false.If set to true, indicates that the user can select more than one choice. The specified choices will be displayed as a list of checkboxes. Default value is false.

An example multi-selection input
style Chaîne (normal (par défaut ou expanded))String (normal(default or expanded)) Lorsque isMultiSelect est false, la définition de la propriété style sur expanded demande à l’application hôte d’afficher tous les choix à l’écran, généralement à l’aide d’un ensemble de cases d’option.When isMultiSelect is false, setting the style property to expanded will instruct the host application to try and display all choices on the screen, typically using a set of radio buttons.

An example expanded input
Exemple de MultichoiceInput compactExample compact MultichoiceInput
{
  "@type": "MultichoiceInput",
  "id": "list",
  "title": "Pick an option",
  "choices": [
    { "display": "Choice 1", "value": "1" },
    { "display": "Choice 2", "value": "2" },
    { "display": "Choice 3", "value": "3" }
  ]
}
Exemple de sélection multiple MultichoiceInput Example multi-select MultichoiceInput
{
  "@type": "MultichoiceInput",
  "id": "list",
  "title": "Pick an option",
  "isMultiSelect": true,
  "choices": [
    { "display": "Choice 1", "value": "1" },
    { "display": "Choice 2", "value": "2" },
    { "display": "Choice 3", "value": "3" }
  ]
}
Exemple développé de MultichoiceInputExample expanded MultichoiceInput
{
  "@type": "MultichoiceInput",
  "id": "list",
  "title": "Pick an option",
  "style": "expanded",
  "choices": [
    { "display": "Choice 1", "value": "1" },
    { "display": "Choice 2", "value": "2" },
    { "display": "Choice 3", "value": "3" }
  ]
}

Substitution de valeur d’entréeInput value substitution

La valeur d’une entrée peut être référencée dans n’importe quelle URL d’une action ViewAction ou HttpPOST. Elle peut également être référencée dans le corps d’une action HttpPOST. Lorsqu’une valeur d’entrée est référencée, elle est remplacée par la valeur réelle de l’entrée avant l’exécution de l’action.The value of an input can be referenced in any URL of a ViewAction or HttpPOST action. It can also be referenced in an HttpPOST action's body. When an input value is referenced, it is substituted with the actual value of the input right before the action is executed.

Pour référencer une valeur d’entrée, utilisez le format suivant :To reference an input's value, use the following format:

{{<id of input>.value}}

La carte d'exemple de substitution de valeur d'entréeInput value substitution example
{
  "@type": "ActionCard",
  "name": "Comment",
  "inputs": [
    {
      "@type": "TextInput",
      "id": "comment",
      "isMultiline": true,
      "title": "Input's title property"
    }
  ],
  "actions": [
    {
      "@type": "HttpPOST",
      "name": "Action's name prop.",
      "target": "https://yammer.com/comment?postId=123",
      "body": "comment={{comment.value}}"
    }
  ]
}

Action InvokeAddInCommandInvokeAddInCommand action

Ouvre le volet Office d’un complément Outlook.Opens an Outlook add-in task pane. Si le complément n’est pas installé, l’utilisateur est invité à l’installer en un clic.If the add-in is not installed, the user is prompted to install the add-in with a single click.

Quand une action InvokeAddInCommand est exécutée, Outlook vérifie d’abord si le complément demandé est installé et activé pour l’utilisateur.When an InvokeAddInCommand action is executed, Outlook first checks if the requested add-in is installed and turned on for the user. Si ce n’est pas le cas, l’utilisateur est informé que l’action nécessite l’installation du complément. Il peut alors l’installer et l’activer en un clic.If it is not, the user is notified that the action requires the add-in, and is able to install and enable the add-in with a single click. Outlook ouvre le volet Office demandé, en fournissant au complément le contexte d’initialisation spécifié par l’action.Outlook opens the requested , making any initialization context specified by the action available to the add-in.

Pour en savoir plus, consultez la rubrique Appel d’un complément Outlook à partir d’un message exploitable.For more information, see Invoke an Outlook add-in from an actionable message.

ChampField TypeType DescriptionDescription
name ChaîneString La propriété name définit le texte qui est affiché à l’écran pour l’action.The name property defines the text that will be displayed on screen for the action.

**Utilisez ** des verbes. Par exemple, utilisez « Set due date » au lieu de « Due date » ou « Add note » au lieu de « Note ». Dans certains cas, le nom lui-même fonctionne, car il s’agit également d’un verbe : « Comment »Do use verbs. For instance, use "Set due date" instead of "Due date" or "Add note" instead of "Note." In some cases, the noun itself just works because it is also a verb: "Comment"
addInId UUIDUUID Spécifie l’ID du complément requis.Specifies the add-in ID of the required add-in. L’ID du complément se trouve dans l’élément ID dans le manifeste du complément.The add-in ID is found in the Id element in the add-in's manifest.
desktopCommandId StringString Spécifie l’identifiant du bouton de commande du complément qui ouvre le volet des tâches requises.Specifies the ID of the add-in command button that opens the required task pane. L’ID du bouton de commande se trouve dans l’attributid de l’élément Control qui définit le bouton dans le manifeste du complément.The command button ID is found in the id attribute of the Control element that defines the button in the add-in's manifest. L’élément Control spécifié doit être défini à l’intérieur d’un point d’extension MessageReadCommandSurface, doit être de type Button et l’Action de l’élément Control doit être de type ShowTaskPane.The specified Control element MUST be defined inside a MessageReadCommandSurface extension point, be of type Button, and the control's Action must be of type ShowTaskPane.
initializationContext ObjetObject Facultatif.Optional. Les développeurs peuvent spécifier un objet JSON valide dans ce champ.Developers may specify any valid JSON object in this field. La valeur est convertie en chaîne et est mise à la disposition du complément quand l’action est exécutée.The value is serialized into a string and made available to the add-in when the action is executed. Ainsi, l’action transmet les données d’initialisation au complément.This allows the action to pass initialization data to the add-in.

Exemple de InvokeAddInCommandExample InvokeAddInCommand

{
  "@type": "InvokeAddInCommand",
  "name": "Invoke My Add-in",
  "addInId": "527104a1-f1a5-475a-9199-7a968161c870",
  "desktopCommandId": "show ",
  "initializationContext": {
    "property1": "Hello world",
    "property2": 5,
    "property3": true
  }
}

Exemples de carteCard Examples

TrelloTrello

La carte est créée dans une liste :Card is created in a list:

Exemple de carte Trello

Voici comment cette carte est conçue :Here is how that card is built:

Diagramme expliquant les parties d’un exemple de carte Trello

Voici la même carte avec l’action Add a comment développée :Here's the same card with the Add a comment action expanded:

Exemple de carte Trello avec une carte d’action développée

Voici comment l’action Add a comment est conçue :Here's how the Add a comment action is built:

Un diagramme expliquant les parties d’un exemple de carte Trello avec une carte d’action développée

Trello JSONTrello JSON

{
  "summary": "Card \"Test card\"",
  "themeColor": "0078D7",
  "title": "Card created: \"Name of card\"",
  "sections": [
    {
      "activityTitle": "David Claux",
      "activitySubtitle": "9/13/2016, 3:34pm",
      "activityImage": "https://connectorsdemo.azurewebsites.net/images/MSC12_Oscar_002.jpg",
      "facts": [
        {
          "name": "Board:",
          "value": "Name of board"
        },
        {
          "name": "List:",
          "value": "Name of list"
        },
        {
          "name": "Assigned to:",
          "value": "(none)"
        },
        {
          "name": "Due date:",
          "value": "(none)"
        }
      ],
      "text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat."
    }
  ],
  "potentialAction": [
    {
      "@type": "ActionCard",
      "name": "Set due date",
      "inputs": [
        {
          "@type": "DateInput",
          "id": "dueDate",
          "title": "Select a date"
        }
      ],
      "actions": [
        {
          "@type": "HttpPOST",
          "name": "OK",
          "target": "https://..."
        }
      ]
    },
    {
      "@type": "ActionCard",
      "name": "Move",
      "inputs": [
        {
          "@type": "MultichoiceInput",
          "id": "move",
          "title": "Pick a list",
          "choices": [
            { "display": "List 1", "value": "l1" },
            { "display": "List 2", "value": "l2" }
          ]
        }
      ],
      "actions": [
        {
          "@type": "HttpPOST",
          "name": "OK",
          "target": "https://..."
        }
      ]
    },
    {
      "@type": "ActionCard",
      "name": "Add a comment",
      "inputs": [
        {
          "@type": "TextInput",
          "id": "comment",
          "isMultiline": true,
          "title": "Enter your comment"
        }
      ],
      "actions": [
        {
          "@type": "HttpPOST",
          "name": "OK",
          "target": "https://..."
        }
      ]
    },
    {
      "@type": "OpenUri",
      "name": "View in Trello",
      "targets": [
        { "os": "default", "uri": "https://..." }
      ]
    }
  ]
}

TwitterTwitter

Voici un exemple de carte de synthèse pour Twitter :Here's an example of a Twitter digest card:

Exemple de carte de synthèse pour Twitter

Voici comment cette carte est conçue :Here's how that card is built:

Un diagramme expliquant les parties d’un exemple de carte de synthèse pour Twitter

JSON TwitterTwitter JSON

{
  "themeColor": "0078D7",
  "sections": [
    {
      "activityTitle": "**Elon Musk**",
      "activitySubtitle": "@elonmusk - 9/12/2016 at 5:33pm",
      "activityImage": "https://pbs.twimg.com/profile_images/782474226020200448/zDo-gAo0.jpg",
      "activityText": "Climate change explained in comic book form by xkcd xkcd.com/1732"
    },
    {
      "activityTitle": "**Mark Knopfler**",
      "activitySubtitle": "@MarkKnopfler - 9/12/2016 at 1:12pm",
      "activityImage": "https://pbs.twimg.com/profile_images/378800000221985528/b2ebfafca6fd7b565fdf3bf4ccdb4dc9.jpeg",
      "activityText": "Mark Knopfler features on B.B King's all-star album of Blues greats, released on this day in 2005..."
    }
  ]
}

Messagerie exploitableActionable email

Voici un exemple d’un corps du courrier électronique HTML avec une carte de message incorporé.Here's an example of an HTML email body with an embedded message card.

<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <script type="application/ld+json">{
    "@context": "https://schema.org/extensions",
    "@type": "MessageCard",
    "originator": "",
    "hideOriginalBody": "true",
    "themeColor": "0072C6",
    "title": "Visit the Outlook Dev Portal",
    "text": "Click **Learn More** to learn more about Actionable Messages!",
    "potentialAction": [
      {
        "@type": "ActionCard",
        "name": "Send Feedback",
        "inputs": [
          {
            "@type": "TextInput",
            "id": "feedback",
            "isMultiline": true,
            "title": "Let us know what you think about Actionable Messages"
          }
        ],
        "actions": [
          {
            "@type": "HttpPOST",
            "name": "Send Feedback",
            "isPrimary": true,
            "target": "http://..."
          }
        ]
      },
      {
        "@type": "OpenUri",
        "name": "Learn More",
        "targets": [
          { "os": "default", "uri": "https://docs.microsoft.com/outlook/actionable-messages" }
        ]
      }
    ]
  }
  </script>
</head>
<body>
Visit the <a href="https://docs.microsoft.com/outlook/actionable-messages">Outlook Dev Portal</a> to learn more about Actionable Messages.
</body>
</html>