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.  

  1. Öppna Microsoft Teams och gå till fliken Appar. Sök efter "Incoming Webhook" (Inkommande webhook) och välj anslutningsappen Inkommande webhook.

    Shows the Incoming Webhook app under the Apps tab in Teams.

  2. 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.

    Highlights the "Add to a team" button for the Incoming Webhook app.

  3. Skriv eller välj Team- eller Team-kanalnamn där du vill skicka aviseringarna.

    Shows the team selection prompt on the Incoming Webhook app configuration dialog in Teams. Type the "Team or Team channel name"

  4. 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.

    Shows the team selection prompt on the Incoming Webhook app configuration dialog in Teams. Highlights the Team and the "Set up a connector" button

  5. 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.

    Highlights the name property, optional image upload, and "Create" button in the Incoming Webhook options page.  

  6. 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.

    Shows the new webhook URL on the Incoming Webhook options page after creation.

  7. Du kan se meddelandet i kanalen där du lägger till webhook-anslutningsappen.

    Shows the notification in the Teams channel where you added the webhook connector.

Steg för att skicka meddelanden på Teams-kanalen från en pipeline:

  1. Välj fliken Författare i det vänstra fönstret.

  2. Välj knappen + (plus) och välj sedan Ny pipeline.

    Shows the "New pipeline" menu in the Azure Data Factory Studio.

  3. I fönstret "Egenskaper" under "Allmänt" anger du NotifiyTeamsChannelPipeline som Namn. Dölj sedan panelen genom att klicka på ikonen Egenskaper i det övre högra hörnet.

    Shows the "Properties" panel.

    Shows the "Properties" panel hidden.

  4. 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

    Shows the "Pipeline parameters".

    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.

  5. 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

    Shows the "Pipeline variables".

  6. Sök efter "Ange variabel" i pipelinefönstret "Aktiviteter" och dra en Aktivitet för Att ange variabel till pipelinearbetsytan.

  7. Välj aktiviteten Ange variabel på arbetsytan om den inte redan är markerad och fliken "Allmänt" för att redigera dess information.

  8. På fliken "Allmänt" anger du Ange JSON-schema som Namn på aktiviteten Ange variabel .

    Shows the "Set variable" activity general tab.

  9. 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": "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)}"
                    }
                ]
            }
        ]
    }
    

    Shows the "Set variable" activity variables tab.

  10. Sök efter "Webb" i pipelinefönstret "Aktiviteter" och dra en webbaktivitet till pipelinearbetsytan.

  11. 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.

  12. Välj den nya webbaktiviteten på arbetsytan om den inte redan är markerad och fliken "Allmänt" för att redigera dess information.

  13. I fönstret "Allmänt" anger du Anropa Teams Webhook-URL som Namn på webbaktiviteten.

    Shows the "Web" activity general pane.

  14. 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'))

    Shows the "Web" activity settings pane.

  15. Allt klart och nu är du redo att verifiera, felsöka och sedan publicera din NotifiyTeamsChannelPipeline-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.

    Shows the "Validate, Debug, Publish" buttons to validate, debug, and then publish your pipeline.

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 "NotifiyTeamsChannelPipeline" för att skicka relevanta lyckade eller misslyckade meddelanden till Teams-kanalen beroende på körningstillståndet för vår ETL-pipeline.

  1. 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.

  2. 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.

  3. Sök efter pipeline i pipelinefönstret "Aktiviteter" och dra tre Kör pipeline-aktiviteter till pipelinearbetsytan.

  4. 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 hjälp av 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.

    Shows the "Execute pipeline" activity general pane for "LoadDataPipeline" pipeline.

    Shows the "Execute pipeline" activity setting pane for "LoadDataPipeline" pipeline.

  5. 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 namnaktiviteten Kör pipeline .

    • I fönstret "Inställningar" väljer du NotifiyTeamsChannelPipeline-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 .

    Shows the second "Execute pipeline" activity "OnSuccess Notification" general pane for "NotifiyTeamsChannelPipeline" pipeline.

    Shows the second "Execute pipeline" activity "OnSuccess Notification" setting pane for "NotifiyTeamsChannelPipeline" pipeline.

  6. 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 namnaktiviteten Kör pipeline .

    • I fönstret "Inställningar" väljer du NotifiyTeamsChannelPipeline-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 .

    Shows the third "Execute pipeline" activity "OnFailure Notification" general pane for "NotifiyTeamsChannelPipeline" pipeline.

    Shows the third "Execute pipeline" activity "OnFailure Notification" settings pane for "NotifiyTeamsChannelPipeline" pipeline.

  7. 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.

    Shows on success pipeline notifications in a Teams channel.

    Shows on failure pipeline notifications in a Teams channel.

  8. 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.

Så här skickar du e-post från en pipeline