Dela via


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.

    Visar appen Inkommande webhook under fliken Appar i 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.

    Markerar

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

    Visar teamvalsprompten i dialogrutan Inkommande webhook-appkonfiguration i Teams. Skriv

  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.

    Visar teamvalsprompten i dialogrutan Inkommande webhook-appkonfiguration i Teams. Markerar teamet och

  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.

    Markerar namnegenskapen, valfri bilduppladdning och  

  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.

    Visar den nya webhook-URL:en på sidan Alternativ för inkommande webhook när den har skapats.

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

    Visar meddelandet i Teams-kanalen där du lade till webhook-anslutningsappen.

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.

    Visar

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

    Visar

    Visar

  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

    Visar

    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

    Visar

  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 .

    Visar

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

    Visar

  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.

    Visar

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

    Visar

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

    Visar

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.

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

    Visar

    Visar

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

    Visar den andra

    Visar den andra

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

    Visar den tredje

    Visar den tredje

  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.

    Visar aviseringar om lyckade pipelines i en Teams-kanal.

    Visar meddelanden om pipelinefel i en Teams-kanal.

  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