Cartes actualisées

Vous pouvez maintenant fournir les dernières informations à vos utilisateurs sur les cartes adaptatives. Incluez une combinaison d’actualisation et de modifications de message dans Teams. Mettez à jour dynamiquement les vues spécifiques de l’utilisateur à leur état le plus récent au fur et à mesure que et en cas de modification de votre service. Par exemple, pour les cartes de gestion de projet ou de création de tickets, les commentaires de mise à jour et la tâche status. Pour les approbations, l’état le plus récent est reflété tout en fournissant des informations et des actions différenciées.

Par exemple, un utilisateur peut créer une demande d’approbation de ressource dans une conversation Teams. Alex crée une demande d’approbation et l’affecte à Megan et Nestor. Voici les deux parties permettant de créer la demande d’approbation :

  • Les vues spécifiques à l’utilisateur peuvent être appliquées à l’aide de la refresh propriété des cartes adaptatives. À l’aide de vues spécifiques à l’utilisateur, vous pouvez afficher un carte avec les boutons Approuver ou Rejeter à un ensemble d’utilisateurs, et afficher un carte sans ces boutons à d’autres utilisateurs.

  • Pour que l’état carte soit toujours mis à jour, vous pouvez utiliser le mécanisme de modification des messages Teams. Par exemple, pour chaque approbation, le bot peut déclencher une modification de message pour tous les utilisateurs. Cette modification de message de bot déclenche une demande d’appel adaptiveCard/action pour tous les utilisateurs d’actualisation automatique, à laquelle le bot peut répondre avec le carte spécifique à l’utilisateur mis à jour.

Pour plus d’informations, consultez comment modifier un message de bot.

Carte de base d’approbation

Le code suivant fournit un exemple de base d’approbation carte :

{
  "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
  "type": "AdaptiveCard",
  "version": "1.4",
  "refresh": {
    "action": {
      "type": "Action.Execute",
      "title": "Refresh",
      "verb": "acceptRejectView"
    },
    "userIds": ["<Megan's user MRI>", "<Nestor's user MRI>"]
  },
  "body": [
    {
      "type": "TextBlock",
      "text": "Asset Request B12"
    },
    {
      "type": "TextBlock",
      "text": "Submitted by **Alex**"
    },
    {
      "type": "TextBlock",
      "text": "Approval pending from **Megan and Nestor**"
    }
  ]
}

Approbation carte avec les boutons Approuver et Rejeter

Le code suivant fournit un exemple de carte d’approbation avec les boutons Approuver et Rejeter :

{
  "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
  "type": "AdaptiveCard",
  "version": "1.4",
  "refresh": {
    "action": {
      "type": "Action.Execute",
      "title": "Refresh",
      "verb": "acceptRejectView"
    },
    "userIds": ["<Nestor's user MRI>", "<Megan's user MRI>"]
  },
  "body": [
    {
      "type": "TextBlock",
      "text": "Approval Request B12"
    },
    {
      "type": "TextBlock",
      "text": "Submitted by **Alex**"
    },
    {
      "type": "TextBlock",
      "text": "Approval pending from **Megan and Nestor**"
    }
  ],
  "actions": [
    {
      "type": "Action.Execute",
      "title": "Approve",
      "verb": "approve",
      "data": {
            "more info": "<more info>"
      }
    },
    {
      "type": "Action.Execute",
      "title": "Reject",
      "verb": "reject",
      "data": {
            "more info": "<more info>"
      }
    }
  ]
}

Voici les deux rôles présentés aux utilisateurs en fonction de la demande d’approbation :

  • Carte de base d’approbation : affichée aux utilisateurs qui ne font pas partie de la liste des approbateurs et que la demande n’est pas encore approuvée ou rejetée, et ne fait pas partie de la userIds liste dans refresh la propriété de la carte adaptative JSON.
  • Approbation carte avec les boutons Approuver ou Rejeter : affiché aux utilisateurs qui font partie de la liste des approbateurs et à la userIds liste dans la refresh propriété du JSON de la carte adaptative.

Pour envoyer la demande d’approbation de ressource :

  1. Alex déclenche une demande d’approbation de ressource dans une conversation Teams et l’affecte à Megan et Nestor.

  2. Le bot envoie la base d’approbation carte dans la conversation.

  3. Tous les autres utilisateurs de la conversation voient les carte envoyées par le bot. L’actualisation automatique est déclenchée pour Megan et Nestor, qui voient désormais les carte spécifiques à l’utilisateur avec les boutons Approuver ou Rejeter lorsque leurs IRM utilisateur sont ajoutées à la userIds liste dans la refresh propriété de la carte adaptative.

    Affichages spécifiques à l’utilisateur

  4. Nestor sélectionne le bouton Approuver , qui est alimenté avec Action.Execute. Le bot obtient une demande d’appel adaptiveCard/action à laquelle il peut retourner une carte adaptative en réponse.

  5. Le bot déclenche une modification de message avec un carte mis à jour, qui indique que Nestor a approuvé la demande alors que l’approbation de Megan est en attente.

  6. La modification des messages du bot déclenche une actualisation automatique pour Megan et elle voit le carte spécifique à l’utilisateur mis à jour, qui indique que Nestor a approuvé la demande, mais voit également les boutons Approuver ou Rejeter. L’irm utilisateur de Nestor est supprimée de la liste dans refresh la userIds propriété de cette carte adaptative JSON aux étapes 4 et 5. Désormais, l’actualisation automatique est déclenchée uniquement pour Megan.

    Affichages spécifiques à l’utilisateur à jour

  7. À présent, Megan sélectionne le bouton Approuver , qui est alimenté avec Action.Execute. Le bot obtient une demande d’appel adaptiveCard/action à laquelle il peut retourner une carte adaptative en réponse.

  8. Le bot déclenche une modification de message avec un carte mis à jour, qui indique que Nestor et Megan ont approuvé la demande.

  9. La modification des messages du bot ne déclenche aucune actualisation automatique. L’irm utilisateur de Megan est également supprimée de la liste dans refresh la userIds propriété de cette carte adaptative JSON aux étapes 7 et 8.

    Affichages à jour

Carte adaptative envoyée en réponse de adaptiveCard/action et message edit

Le code suivant fournit un exemple de cartes adaptatives envoyées en réponse de adaptiveCard/action et message edit pour les étapes 4 et 5 :

{
  "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
  "type": "AdaptiveCard",
  "version": "1.4",
  "refresh": {
    "action": {
      "type": "Action.Execute",
      "title": "Refresh",
      "verb": "acceptRejectView"
    },
    "userIds": ["<Megan's user MRI>"]
  },
  "body": [
    {
      "type": "TextBlock",
      "text": "Asset Request B12"
    },
    {
      "type": "TextBlock",
      "text": "Submitted by **Alex**"
    },
    {
      "type": "TextBlock",
      "text": "Approval pending from **Megan**"
    },
    {
      "type": "TextBlock",
      "text": "Approved by **Nestor**"
    }
  ]
}

Le code suivant fournit un exemple de cartes adaptatives envoyées en tant que réponse d’appel via l’actualisation adaptiveCard/action automatique pour l’étape 6 :

{
  "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
  "type": "AdaptiveCard",
  "version": "1.4",
  "refresh": {
    "action": {
      "type": "Action.Execute",
      "title": "Refresh",
      "verb": "acceptRejectView"
    },
    "userIds": ["<Megan's user MRI>"]
  },
  "body": [
    {
      "type": "TextBlock",
      "text": "Approval Request B12"
    },
    {
      "type": "TextBlock",
      "text": "Submitted by **Alex**"
    },
    {
      "type": "TextBlock",
      "text": "Approval pending from **Megan**"
    },
    {
      "type": "TextBlock",
      "text": "Approved by **Nestor**"
    }
  ],
  "actions": [
    {
      "type": "Action.Execute",
      "title": "Approve",
      "verb": "approve",
      "data": {
            "more info": "<more info>"
      }
    },
    {
      "type": "Action.Execute",
      "title": "Reject",
      "verb": "reject",
      "data": {
            "more info": "<more info>"
      }
    }
  ]
}

Le code suivant fournit un exemple de cartes adaptatives envoyées en tant que réponse de adaptiveCard/action et message edit pour les étapes 7 et 8 :

{
  "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
  "type": "AdaptiveCard",
  "version": "1.4",
  "refresh": {
    "action": {
      "type": "Action.Execute",
      "title": "Refresh",
      "verb": "acceptRejectView"
    },
    "userIds": []
  },
  "body": [
    {
      "type": "TextBlock",
      "text": "Asset Request B12"
    },
    {
      "type": "TextBlock",
      "text": "Submitted by **Alex**"
    },
    {
      "type": "TextBlock",
      "text": "Approved by **Nestor and Megan**"
    }
  ]
}

Exemple de code

Exemple de nom Description .NET Node.js Manifeste
Flux de travail séquentiels Cartes adaptatives Cet exemple illustre l’implémentation des flux de travail séquentiels, des vues spécifiques à l’utilisateur et des cartes adaptatives actuelles dans les bots. View View View

Voir aussi