Skicka meddelanden till en Microsoft Teams-kanal från en Azure Data Factory- eller Synapse Analytics-pipeline
Det är ofta nödvändigt att skicka meddelanden under eller efter körningen av en pipeline. Meddelandet ger proaktiva aviseringar och minskar behovet av reaktiv övervakning för att identifiera problem. Du kan lära dig hur du skickar e-postmeddelanden med hjälp av logikappar som en datafabrik eller Synapse-pipeline kan anropa. Många företag använder också i allt högre grad Microsoft Teams för samarbete. Den här artikeln visar hur du konfigurerar meddelanden från pipelineaviseringar till Microsoft Teams.
Förutsättningar
Innan du kan skicka meddelanden till Teams från dina pipelines måste du skapa en inkommande webhook för Teams-kanalen. Om du behöver skapa en ny Teams-kanal för detta ändamål kan du läsa Teams-dokumentationen.
Öppna Microsoft Teams och gå till fliken Appar. Sök efter "Incoming Webhook" (Inkommande webhook) och välj anslutningsappen Inkommande webhook.
Välj knappen Lägg till i ett team för att lägga till anslutningsappen till den grupp- eller gruppkanalnamnswebbplats där du vill skicka meddelanden.
Skriv eller välj Team- eller Team-kanalnamn där du vill skicka aviseringarna.
Välj knappen "Konfigurera en anslutningsapp" för att konfigurera den inkommande webhooken för det team- eller teamkanalnamn som du valde i föregående steg.
Namnge Webhook efter behov och ladda eventuellt upp en ikon för att identifiera dina meddelanden. Därefter väljer du knappen "Skapa" för att skapa den inkommande webhooken.
Kopiera webhooks-URL:en som genereras när den skapas och spara den för senare användning i pipeline. Därefter väljer du knappen "Klar" för att slutföra installationen.
Du kan se meddelandet i kanalen där du lägger till webhook-anslutningsappen.
Steg för att skicka meddelanden på Teams-kanalen från en pipeline:
Välj fliken Författare i det vänstra fönstret.
Välj knappen + (plus) och välj sedan Ny pipeline.
I fönstret "Egenskaper" under "Allmänt" anger du NotifyTeamsChannelPipeline som Namn. Dölj sedan panelen genom att klicka på ikonen Egenskaper i det övre högra hörnet.
I fönstret "Konfigurationer" väljer du Parametrar och väljer sedan knappen + Ny definiera följande parametrar för din pipeline.
Namn Type Standardvärde prenumeration 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
meddelande 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
Kommentar
Dessa parametrar används för att konstruera övervaknings-URL:en. Anta att du inte anger en giltig prenumeration och resursgrupp (i samma datafabrik där pipelines hör hemma). I så fall innehåller meddelandet inte en giltig url för pipelineövervakning, men meddelandena fungerar fortfarande. Genom att lägga till dessa parametrar kan du dessutom förhindra att du alltid skickar dessa värden från en annan pipeline. Om du tänker styra dessa värden via en metadatadriven metod bör du ändra dem i enlighet med detta.
Dricks
Vi rekommenderar att du lägger till aktuellt datafabriksprenumerations-ID, resursgrupp och Teams webhook-URL (se förutsättningar) för standardvärdet för relevanta parametrar.
I fönstret "Konfigurationer" väljer du Variabler och väljer sedan knappen + Ny definiera följande variabler för din pipeline.
Namn Type Standardvärde messageCard String
Sök efter "Ange variabel" i pipelinefönstret "Aktiviteter" och dra en Aktivitet för Att ange variabel till pipelinearbetsytan.
Välj aktiviteten Ange variabel på arbetsytan om den inte redan är markerad och fliken "Allmänt" för att redigera dess information.
På fliken "Allmänt" anger du Ange JSON-schema som Namn på aktiviteten Ange variabel .
På fliken "Variabler" väljer du messageCard-variabeln för egenskapen Namn och anger följande JSON för dess värdeegenskap:
{ "@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)}" } ] } ] }
Sök efter "Webb" i pipelinefönstret "Aktiviteter" och dra en webbaktivitet till pipelinearbetsytan.
Skapa ett beroendevillkor för webbaktiviteten så att den bara körs om aktiviteten Ange variabel lyckas. Om du vill skapa det här beroendet väljer du det gröna handtaget till höger om aktiviteten Ange variabel, drar den och ansluter den till webbaktiviteten.
Välj den nya webbaktiviteten på arbetsytan om den inte redan är markerad och fliken "Allmänt" för att redigera dess information.
I fönstret "Allmänt" anger du Anropa Teams Webhook-URL som Namn på webbaktiviteten.
I fönstret Inställningar anger du följande egenskaper på följande sätt:
Property värde webbadress @pipeline().parameters.teamWebhookUrl
Metod POST
Brödtext @json(variables('messageCard'))
Alla är inställda och nu är du redo att verifiera, felsöka och sedan publicera din NotifyTeamsChannelPipeline-pipeline .
- Verifiera pipelinen genom att välja Verifiera i verktygsfältet.
- Välj Felsöka i verktygsfält för att felsöka pipelinen. Du kan se status för pipelinekörningen på fliken "Utdata" längst ned i fönstret.
- När pipelinen kan köras väljer du Publicera alla i det översta verktygsfältet. Den här åtgärden publicerar entiteter som du skapade till Data Factory. Vänta tills du ser meddelandet om att entiteterna har publicerats.
Exempelanvändning
I det här exempelanvändningsscenariot skapar vi en huvudpipeline med tre Aktiviteter för att köra pipeline . Den första körningspipeline-aktiviteten anropar vår ETL-pipeline och de återstående två kör pipelineaktiviteterna anropar pipelinen "NotifyTeamsChannelPipeline" för att skicka relevanta lyckade eller misslyckade meddelanden till Teams-kanalen beroende på körningstillståndet för vår ETL-pipeline.
Välj fliken Författare i det vänstra fönstret i fliken Data Factory eller Integrera i det vänstra fönstret i Synapse Studio. Välj sedan knappen + (plus) och välj sedan Pipeline för att skapa en ny pipeline.
I panelen "Allmänt" under Egenskaper anger du MasterPipeline som Namn. Dölj sedan panelen genom att klicka på ikonen Egenskaper i det övre högra hörnet.
Sök efter pipeline i pipelinefönstret "Aktiviteter" och dra tre Kör pipeline-aktiviteter till pipelinearbetsytan.
Välj först Kör pipelineaktivitet på arbetsytan om den inte redan är markerad och dess fönster "Allmänt" för att redigera dess information.
- För egenskapen Namn för aktiviteten Kör pipeline rekommenderar vi att du använder namnet på den anropade ETL-pipelinen som du vill skicka meddelanden för. Vi använde till exempel LoadDataPipeline för namnet på vår execute pipeline-aktivitet eftersom det är namnet på vår anropade pipeline.
- I fönstret Inställningar väljer du en befintlig pipeline eller skapar en ny med knappen + Ny för egenskapen Anropad pipeline . I vårt fall valde vi till exempel LoadDataPipeline-pipelinen för egenskapen "Anropad pipeline". Välj andra alternativ och konfigurera eventuella parametrar för pipelinen efter behov för att slutföra konfigurationen.
Välj den andra Aktiviteten Kör pipeline på arbetsytan och fönstret "Allmänt" för att redigera dess information.
Ange OnSuccess-meddelande som namn på aktiviteten Kör pipeline .
I fönstret "Inställningar" väljer du NotifyTeamsChannelPipeline-pipeline , som vi skapade tidigare, för egenskapen Invoked pipeline (Anropad pipeline ). Anpassa parametrarna efter behov baserat på aktivitetstyp. Jag har till exempel anpassat parametrarna enligt följande:
Name Värde prenumeration 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
meddelande 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
Skapa ett beroendevillkor för den andra körningspipelineaktiviteten så att den bara körs om den första körningspipelineaktiviteten lyckas. Om du vill skapa det här beroendet väljer du det gröna handtaget till höger om den första aktiviteten Kör pipeline , drar den och ansluter den till den andra körningspipelineaktiviteten .
Välj den tredje Aktiviteten Kör pipeline på arbetsytan och fönstret "Allmänt" för att redigera dess information.
Ange OnFailure-meddelande som namn på aktiviteten Kör pipeline .
I fönstret "Inställningar" väljer du NotifyTeamsChannelPipeline-pipeline för egenskapen Invoked pipeline (Anropad pipeline ). Anpassa parametrarna efter behov baserat på aktivitetstyp. Jag har till exempel anpassat parametrarna den här gången enligt följande:
Name Värde prenumeration 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
meddelande @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
Skapa ett beroendevillkor för den tredje körningspipelineaktiviteten så att den bara körs om den första körningspipelineaktiviteten misslyckas. Om du vill skapa det här beroendet väljer du det röda handtaget till höger om den första aktiviteten Kör pipeline , drar den och ansluter den till den tredje körningspipelineaktiviteten .
Verifiera, felsök och publicera sedan din MasterPipeline-pipeline .
Kör pipeline för att ta emot meddelanden i Teams. Nedan visas exempelmeddelanden, när min pipeline kördes och när den misslyckades.
Välj knappen Visa pipelinekörning för att visa pipelinekörning.
Lägga till dynamiska meddelanden med systemvariabler och uttryck
Du kan använda systemvariabler och uttryck för att göra dina meddelanden dynamiska. Till exempel:
@activity("CopyData").output.errors[0].Message
@activity("DataFlow").error.Message
Ovanstående uttryck returnerar relevanta felmeddelanden från ett fel, som kan skickas ut som meddelande på en Teams-kanal. Mer information om det här avsnittet finns i artikeln aktiviteten Kopiera utdataegenskaper.
Vi rekommenderar också att du granskar det aviseringsnyttolastschema som stöds i Microsoft Teams och ytterligare anpassar mallen ovan efter dina behov.