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.
Ouvrez Microsoft Teams et rendez-vous dans l’onglet Applications. Recherchez « Webhook entrant » et sélectionnez le connecteur Webhook entrant.
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.
Tapez ou sélectionnez le nom de l’équipe ou du canal d’équipe où vous voulez envoyer les notifications.
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.
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.
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.
Vous pouvez voir la notification dans le canal où vous ajoutez le connecteur du webhook.
Étapes pour envoyer des notifications sur le canal Teams à partir d’un pipeline :
Sélectionnez l’onglet Créer dans le volet gauche.
Sélectionnez le bouton + (plus), puis sélectionnez Nouveau pipeline.
Dans le volet « Propriétés » sous « Général », spécifiez NotifiyTeamsChannelPipeline pour Nom. Réduisez ensuite le panneau en cliquant sur l’icône Propriétés en haut à droite.
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
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.
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
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.
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.
Sous l’onglet « Général », spécifiez Définir le schéma JSON pour le Nom de l’activité Définir une variable.
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": "Pipline 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)}" } ] } ] }
Recherchez « Web » dans le volet « Activités » du pipeline, puis faites glisser une activité Web vers le canevas du pipeline.
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.
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.
Dans le volet « Général », spécifiez Appeler l’URL du webhook Teams pour le Nom de l’activité Web.
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'))
Tout est prêt pour la validation, le débogage, puis la publication de votre pipeline NotifiyTeamsChannelPipeline.
- 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.
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 « NotifiyTeamsChannelPipeline » 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.
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.
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.
Recherchez pipeline dans le volet « Activités » du pipeline, puis faites glisser trois activités Exécuter le pipeline vers le canevas du pipeline.
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.
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 NotifiyTeamsChannelPipeline 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.
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 NotifiyTeamsChannelPipeline 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.
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é.
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.