Partage via


Envoyer des notifications à un canal Microsoft Teams à partir d’un pipeline Azure Data Factory ou Synapse Analytics

Il est souvent nécessaire d’envoyer des notifications pendant ou après l’exécution d’un pipeline. La notification fournit des alertes proactives et réduit le besoin d’une surveillance réactive pour découvrir les problèmes.  Vous pouvez en savoir plus sur l’envoi de notifications par e-mail à l’aide d’applications logiques qu’un pipeline Data Factory ou Synapse peut appeler. De nombreuses entreprises utilisent également de plus en plus Microsoft Teams pour la collaboration. Cet article explique comment configurer des notifications à partir d’alertes de pipeline dans Microsoft Teams. 

Prérequis

Avant de pouvoir envoyer des notifications à Teams depuis vos pipelines, vous devez créer un webhook entrant pour votre canal Teams. Si vous devez créer un nouveau canal Teams à cet effet, reportez-vous à la documentation de Teams.  

  1. Ouvrez Microsoft Teams et rendez-vous dans l’onglet Applications. Recherchez « Webhook entrant » et sélectionnez le connecteur Webhook entrant.

    Montre l’application Webhook entrant sous l’onglet Applications dans Teams.

  2. Sélectionnez le bouton « Ajouter à une équipe » pour ajouter le connecteur au site de l’équipe ou du nom du canal de l’équipe où vous voulez envoyer des notifications.

    Met en évidence le bouton « Ajouter à une équipe » pour l’application Webhook entrant.

  3. Tapez ou sélectionnez le nom de l’équipe ou du canal d’équipe où vous voulez envoyer les notifications.

    Montre l’invite de sélection de l’équipe dans la boîte de dialogue de configuration de l’application Webhook entrant dans Teams. Tapez le « nom de l'équipe ou du canal de l'équipe »

  4. Sélectionnez le bouton « Configurer un connecteur » pour configurer le webhook entrant pour le nom de l’équipe ou du canal de l’équipe que vous avez sélectionné à l’étape précédente.

    Montre l’invite de sélection de l’équipe dans la boîte de dialogue de configuration de l’application Webhook entrant dans Teams. Met en évidence l'équipe et le bouton « Configurer un connecteur »

  5. Nommez le webhook comme il convient et, si vous le souhaitez, chargez une icône pour identifier vos messages. Après cela, sélectionnez le bouton « Créer » pour créer le webhook entrant.

    Met en évidence la propriété du nom, le chargement d’une image facultative et le bouton « Créer » dans la page des options du Webhook entrant.  

  6. Copiez l’URL du webhook qui est générée lors de la création et enregistrez-la pour une utilisation ultérieure dans le pipeline. Après cela, sélectionnez le bouton « Terminé » pour terminer l’installation.

    Montre la nouvelle URL de webhook dans la page des options du webhook entrant après la création.

  7. Vous pouvez voir la notification dans le canal où vous ajoutez le connecteur du webhook.

    Montre la notification dans le canal Teams où vous avez ajouté le connecteur du webhook.

Étapes pour envoyer des notifications sur le canal Teams à partir d’un pipeline :

  1. Sélectionnez l’onglet Créer dans le volet gauche.

  2. Sélectionnez le bouton + (plus), puis sélectionnez Nouveau pipeline.

    Montre le menu « Nouveau pipeline » dans Azure Data Factory Studio.

  3. Dans le volet « Propriétés » sous « Général », spécifiez NotifyTeamsChannelPipeline pour Nom. Réduisez ensuite le panneau en cliquant sur l’icône Propriétés en haut à droite.

    Montre le panneau « Propriétés ».

    Montre le panneau masqué « Propriétés ».

  4. Dans le volet « configurations », sélectionnez Paramètres, puis sélectionnez le bouton + Nouveau pour définir les paramètres suivants pour votre pipeline.

    Nom Type Valeur par défaut
    subscription String Specify subscription id for the pipeline
    resourceGroup String Specify resource group name for the pipeline
    runId String @activity('Specify name of the calling pipeline').output['pipelineRunId']
    name String @activity('Specify name of the calling pipeline').output['pipelineName']
    triggerTime String @activity('Specify name of the calling pipeline').ExecutionStartTime
    status String @activity('Specify name of the calling pipeline').Status
    message String @activity('Specify name of the calling pipeline').Error['message']
    executionEndTime String @activity('Specify name of the calling pipeline').ExecutionEndTime
    runDuration String @activity('Specify name of the calling pipeline').Duration
    teamWebhookUrl String Specify Team Webhook URL

    Montre les « Paramètres de pipeline ».

    Remarque

    Ces paramètres sont utilisés pour construire l’URL de surveillance. Supposons que vous ne fournissez pas un abonnement et un groupe de ressources valides (appartenant à la même fabrique de données que les pipelines). Dans ce cas, la notification ne contiendra pas d’URL de surveillance de pipeline valide, mais les messages fonctionneront quand même. En outre, l’ajout de ces paramètres permet d’éviter de devoir toujours transmettre ces valeurs depuis un autre pipeline. Si vous avez l’intention de contrôler ces valeurs par une approche basée sur les métadonnées, vous devez les modifier en conséquence.

    Conseil

    Nous recommandons d’ajouter l’ID d’abonnement Data Factory actuel, le groupe de ressources et l’URL du webhook Teams (voir les prérequis) pour connaître la valeur par défaut des paramètres appropriés.

  5. Dans le volet « Configurations », sélectionnez Variables, puis sélectionnez le bouton + Nouveau pour définir les variables suivantes pour votre pipeline.

    Nom Type Valeur par défaut
    messageCard String

    Montre les « Variables de pipeline ».

  6. Recherchez « Définir une variable » dans le volet « Activités » du pipeline, puis faites glisser une activité Définir une variable vers le canevas du pipeline.

  7. Sélectionnez l’activité Définir une variable sur le canevas si elle n’est pas déjà sélectionnée, et son onglet « Général » pour en modifier les détails.

  8. Sous l’onglet « Général », spécifiez Définir le schéma JSON pour le Nom de l’activité Définir une variable.

    Montre l’onglet général de l’activité « Définir une variable ».

  9. Sous l’onglet « Variables », sélectionnez la variable messageCard pour la propriété Nom, puis entrez le code JSON suivant pour sa propriété Valeur :

    {
        "@type": "MessageCard",
        "@context": "http://schema.org/extensions",
        "themeColor": "0076D7",
        "summary": "Pipeline status alert message​​​​",
        "sections": [
            {
                "activityTitle": "Pipeline execution alert​​​​",
                "facts": [
                    {
                        "name": "Subscription Id:",
                        "value": "@{pipeline().parameters.subscription}"
                    },
                    {
                        "name": "Resource Group:",
                        "value": "@{pipeline().parameters.resourceGroup}"
                    },
                    {
                        "name": "Data Factory Name:",
                        "value": "@{pipeline().DataFactory}"
                    },
                    {
                        "name": "Pipeline RunId:",
                        "value": "@{pipeline().parameters.runId}"
                    },
                    {
                        "name": "Pipeline Name:",
                        "value": "@{pipeline().Pipeline}"
                    },
                    {
                        "name": "Pipeline Status:",
                        "value": "@{pipeline().parameters.status}"
                    },
                    {
                        "name": "Execution Start Time (UTC):",
                        "value": "@{pipeline().parameters.triggerTime}"
                    },
                    {
                        "name": "Execution Finish Time (UTC):",
                        "value": "@{pipeline().parameters.executionEndTime}"
                    },
                    {
                        "name": "Execution Duration (s):",
                        "value": "@{pipeline().parameters.runDuration}"
                    },
                    {
                        "name": "Message:",
                        "value": "@{pipeline().parameters.message}"
                    },
                    {
                        "name": "Notification Time (UTC):",
                        "value": "@{utcnow()}"
                    }
                ],
                "markdown": true
            }
        ],
        "potentialAction": [
            {
                "@type": "OpenUri",
                "name": "View pipeline run",
                "targets": [
                    {
                        "os": "default",
                        "uri": "@{concat('https://synapse.azure.com/monitoring/pipelineruns/',pipeline().parameters.runId,'?factory=/subscriptions/',pipeline().parameters.subscription,'/resourceGroups/',pipeline().parameters.resourceGroup,'/providers/Microsoft.DataFactory/factories/',pipeline().DataFactory)}"
                    }
                ]
            }
        ]
    }
    

    Montre l’onglet des variables de l’activité « Définir une variable ».

  10. Recherchez « Web » dans le volet « Activités » du pipeline, puis faites glisser une activité Web vers le canevas du pipeline.

  11. Créez une condition de dépendance pour l’activité Web afin qu’elle s’exécute seulement si l’activité Définir une variable réussit. Pour créer cette dépendance, sélectionnez la poignée verte sur le côté droit de l’activité Définir une variable, faites-la glisser et connectez-la à l’activité Web.

  12. Sélectionnez la nouvelle activité Web sur le canevas si elle n’est pas déjà sélectionnée, et son onglet « Général » pour en modifier les détails.

  13. Dans le volet « Général », spécifiez Appeler l’URL du webhook Teams pour le Nom de l’activité Web.

    Montre le volet général de l’activité « Web ».

  14. Dans le volet « Paramètres », définissez les propriétés suivantes comme ceci :

    Propriété value
    URL @pipeline().parameters.teamWebhookUrl
    Méthode POST
    Corps @json(variables('messageCard'))

    Montre le volet des paramètres de l’activité « Web ».

  15. Tout est prêt pour la validation, le débogage, puis la publication de votre pipeline NotifyTeamsChannelPipeline.

    • Sélectionnez Valider dans la barre d’outils pour valider les paramètres du pipeline.
    • Pour déboguer le pipeline, sélectionnez Déboguer dans la barre d’outils. Vous pouvez voir l’état d’exécution du pipeline sous l’onglet « Sortie » dans le bas de la fenêtre.
    • Une fois que le pipeline peut s’exécuter correctement, sélectionnez Publier tout dans la barre d’outils supérieure. Cette action publie les entités que vous avez créées dans Data Factory. Patientez jusqu’à voir le message Publication réussie.

    Montre les boutons « Valider, Déboguer, Publier » pour valider, déboguer, puis publier votre pipeline.

Exemple d’utilisation

Dans cet exemple de scénario d’utilisation, nous allons créer un pipeline maître avec trois activités Exécuter le pipeline. La première activité Exécuter le pipeline appellera notre pipeline ETL et les deux activités Exécuter le pipeline restantes appelleront le pipeline « NotifyTeamsChannelPipeline » pour envoyer des notifications de réussite ou d’échec pertinentes au canal Teams, en fonction de l’état d’exécution de notre pipeline ETL.

  1. Sélectionnez l’onglet Auteur dans le volet gauche de l’onglet Data Factory ou Intégrer dans le volet gauche de Synapse Studio. Cliquez ensuite sur le bouton + (plus), puis sélectionnez Pipeline pour créer un pipeline.

  2. Dans le panneau « Général », sous Propriétés, spécifiez MasterPipeline pour Nom. Réduisez ensuite le panneau en cliquant sur l’icône Propriétés en haut à droite.

  3. Recherchez pipeline dans le volet « Activités » du pipeline, puis faites glisser trois activités Exécuter le pipeline vers le canevas du pipeline.

  4. Sélectionnez d’abord l’activité Exécuter le pipeline sur le canevas si elle n’est pas déjà sélectionnée, et son onglet volet « Général » pour en modifier les détails.

    • Pour la propriété Nom de l’activité Exécuter le pipeline, nous vous recommandons d’utiliser le nom de votre pipeline ETL appelé pour lequel vous voulez envoyer des notifications. Par exemple, nous avons utilisé LoadDataPipeline pour le Nom de notre activité Exécuter le pipeline, car il s’agit du nom de notre pipeline appelé.
    • Dans le volet « Paramètres », sélectionnez un pipeline existant ou créez-en un en utilisant le bouton + Nouveau pour la propriété Pipeline appelé. Par exemple, dans notre cas, nous avons sélectionné le pipeline LoadDataPipeline pour la propriété « Pipeline appelé ». Sélectionnez d’autres options et configurez les paramètres du pipeline en fonction des besoins pour terminer votre configuration.

    Montre le volet général de l’activité « Exécuter le pipeline » pour le pipeline « LoadDataPipeline ».

    Montre le volet des paramètres de l’activité « Exécuter le pipeline » pour le pipeline « LoadDataPipeline ».

  5. Sélectionnez la deuxième activité Exécuter le pipeline sur le canevas et son volet « Général » pour modifier ses détails.

    • Spécifiez OnSuccess Notification pour le Nom de l’activité Exécuter le pipeline.

    • Dans le volet « Paramètres », sélectionnez le pipeline NotifyTeamsChannelPipeline que nous avons créé précédemment pour la propriété Pipeline appelé. Personnalisez les paramètres selon les besoins en fonction du type d’activité. Par exemple, j’ai personnalisé les paramètres comme suit :

      Nom Valeur
      subscription 11111111-0000-aaaa-bbbb-0000000000
      resourceGroup contosorg
      runId @activity('LoadDataPipeline').output['pipelineRunId']
      name @activity('LoadDataPipeline').output['pipelineName']
      triggerTime @activity('LoadDataPipeline').ExecutionStartTime
      status @activity('LoadDataPipeline').Status
      message Pipeline - LoadDataPipeline ran with success.
      executionEndTime @activity('LoadDataPipeline').ExecutionEndTime
      runDuration @activity('LoadDataPipeline').Duration
      teamWebhookUrl https://microsoft.webhook.office.com/webhookb2/1234abcd-1x11-2ff1-ab2c-1234d0699a9e@72f988bf-32b1-41af-91ab-2d7cd011db47/IncomingWebhook/8212f66ad80040ab83cf68b554d9232a/17d524d0-ed5c-44ed-98a0-35c12dd89a6d
    • Créez une condition de dépendance pour la deuxième activité Exécuter le pipeline afin qu’elle s’exécute seulement si la première activité Exécuter le pipeline réussit. Pour créer cette dépendance, sélectionnez la poignée verte sur le côté droit de la première activité Exécuter le pipeline, faites-la glisser et connectez-la à la deuxième activité Exécuter le pipeline.

    Montre le deuxième volet général « OnSuccess Notification » de l’activité « Exécuter le pipeline » pour le pipeline « NotifyTeamsChannelPipeline ».

    Montre le deuxième volet des paramètres « OnSuccess Notification » de l’activité « Exécuter le pipeline » pour le pipeline « NotifyTeamsChannelPipeline ».

  6. Sélectionnez la troisième activité Exécuter le pipeline sur le canevas et son volet « Général » pour modifier ses détails.

    • Spécifiez OnFailure Notification pour le Nom de l’activité Exécuter le pipeline.

    • Dans le volet « Paramètres », sélectionnez le pipeline NotifyTeamsChannelPipeline pour la propriété Pipeline appelé. Personnalisez les paramètres selon les besoins en fonction du type d’activité. Par exemple cette fois, j’ai personnalisé les paramètres comme suit :

      Nom Valeur
      subscription 11111111-0000-aaaa-bbbb-0000000000
      resourceGroup contosorg
      runId @activity('LoadDataPipeline').output['pipelineRunId']
      name @activity('LoadDataPipeline').output['pipelineName']
      triggerTime @activity('LoadDataPipeline').ExecutionStartTime
      status @activity('LoadDataPipeline').Status
      message @activity('LoadDataPipeline').Error['message']
      executionEndTime @activity('LoadDataPipeline').ExecutionEndTime
      runDuration @activity('LoadDataPipeline').Duration
      teamWebhookUrl https://microsoft.webhook.office.com/webhookb2/1234abcd-1x11-2ff1-ab2c-1234d0699a9e@72f988bf-32b1-41af-91ab-2d7cd011db47/IncomingWebhook/8212f66ad80040ab83cf68b554d9232a/17d524d0-ed5c-44ed-98a0-35c12dd89a6d
    • Créez une condition de dépendance pour la troisième activité Exécuter le pipeline afin qu’elle s’exécute seulement si la première activité Exécuter le pipeline échoue. Pour créer cette dépendance, sélectionnez la poignée rouge sur le côté droit de la première activité Exécuter le pipeline, faites-la glisser et connectez-la à la troisième activité Exécuter le pipeline.

    • Validez, déboguez, puis publiez votre pipeline MasterPipeline.

    Montre le troisième volet général « OnFailure Notification » de l’activité « Exécuter le pipeline » pour le pipeline « NotifyTeamsChannelPipeline ».

    Montre le troisième volet des paramètres « OnFailure Notification » de l’activité « Exécuter le pipeline » pour le pipeline « NotifyTeamsChannelPipeline ».

  7. Exécutez le pipeline pour recevoir des notifications dans Teams. Par exemple, voici des exemples de notifications quand mon pipeline s’est exécuté avec succès et quand il a échoué.

    Montre les notifications de pipeline en cas de réussite dans un canal Teams.

    Montre les notifications de pipeline en cas d’échec dans un canal Teams.

  8. Sélectionnez le bouton « Voir l’exécution du pipeline » pour voir l’exécution du pipeline.

Ajouter des messages dynamiques avec des variables système et des expressions

Vous pouvez utiliser des variables système et des expressions pour rendre vos messages dynamiques. Par exemple :

  • @activity("CopyData").output.errors[0].Message

  • @activity("DataFlow").error.Message

Les expressions ci-dessus renvoient les messages d’erreur pertinents en cas d’échec, qui peuvent être envoyés sous forme de notification sur un canal Teams. Pour plus d’informations sur ce sujet, consultez l’article Propriétés de la sortie de l’activité de copie.

Nous vous encourageons également à consulter le schéma des charges utiles de notification prises en charge par Microsoft Teams et à personnaliser davantage le modèle ci-dessus en fonction de vos besoins.

Envoyer un e-mail depuis un pipeline