Delen via


Meldingen verzenden naar een Microsoft Teams-kanaal vanuit een Azure Data Factory- of Synapse Analytics-pijplijn

Het is vaak nodig om meldingen te verzenden tijdens of na de uitvoering van een pijplijn. Melding biedt proactieve waarschuwingen en vermindert de noodzaak van reactieve bewaking om problemen te detecteren.  U vindt meer informatie over het verzenden van e-mailmeldingen met behulp van logische apps die een data factory of Synapse-pijplijn kan aanroepen. Veel ondernemingen maken ook steeds vaker gebruik van Microsoft Teams voor samenwerking. In dit artikel wordt beschreven hoe u meldingen van pijplijnwaarschuwingen configureert in Microsoft Teams. 

Vereisten

Voordat u vanuit uw pijplijnen meldingen naar Teams kunt verzenden, moet u een binnenkomende webhook voor uw Teams-kanaal maken. Als u hiervoor een nieuw Teams-kanaal moet maken, raadpleegt u de Documentatie van Teams.  

  1. Open Microsoft Teams en ga naar het tabblad Apps. Zoek naar 'Inkomende webhook' en selecteer de binnenkomende webhookconnector.

    Toont de binnenkomende webhook-app onder het tabblad Apps in Teams.

  2. Selecteer de knop Toevoegen aan een team om de connector toe te voegen aan de team- of teamkanaalnaamsite waar u meldingen wilt verzenden.

    Markeert het

  3. Typ of selecteer de naam van het team- of teamkanaal waar u de meldingen wilt verzenden.

    Toont de teamselectieprompt in het dialoogvenster Voor binnenkomende Webhook-app-configuratie in Teams. Typ het

  4. Selecteer de knop Een connector instellen om de binnenkomende webhook in te stellen voor de naam van het team- of teamkanaal dat u in de vorige stap hebt geselecteerd.

    Toont de teamselectieprompt in het dialoogvenster Voor binnenkomende Webhook-app-configuratie in Teams. Markeert het team en het

  5. Geef de webhook een naam en upload desgewenst een pictogram om uw berichten te identificeren. Selecteer daarna de knop Maken om de binnenkomende webhook te maken.

    Markeert de naameigenschap, optionele afbeeldingsupload en  

  6. Kopieer de Webhook-URL die wordt gegenereerd bij het maken en sla deze op voor later gebruik in de pijplijn. Selecteer daarna de knop Gereed om de installatie te voltooien.

    Toont de nieuwe webhook-URL op de pagina met opties voor binnenkomende webhook na het maken.

  7. U ziet de melding in het kanaal waar u de webhookconnector toevoegt.

    Toont de melding in het Teams-kanaal waar u de webhookconnector hebt toegevoegd.

Stappen voor het verzenden van meldingen op teams-kanaal vanuit een pijplijn:

  1. Selecteer het tabblad Maken in het linkerdeelvenster.

  2. Selecteer de knop + (plus) en selecteer vervolgens Nieuwe pijplijn.

    Geeft het

  3. Geef in het deelvenster Eigenschappen onder Algemeen de melding NotifyTeamsChannelPipeline op als naam. Vouw het deelvenster vervolgens samen door op het pictogram Eigenschappen in de rechterbovenhoek te klikken.

    Geeft het

    Geeft het

  4. Selecteer parameters in het deelvenster Configuraties en selecteer vervolgens de knop + Nieuw om de volgende parameters voor uw pijplijn te definiëren.

    Name Type Standaardwaarde
    abonnement 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']
    naam 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
    bericht 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

    Geeft het

    Notitie

    Deze parameters worden gebruikt om de bewakings-URL samen te stellen. Stel dat u geen geldig abonnement en resourcegroep opgeeft (van dezelfde data factory waartoe de pijplijnen behoren). In dat geval bevat de melding geen geldige URL voor pijplijnbewaking, maar de berichten werken nog steeds. Bovendien helpt het toevoegen van deze parameters ervoor te zorgen dat deze waarden altijd moeten worden doorgegeven vanuit een andere pijplijn. Als u deze waarden wilt beheren via een benadering op basis van metagegevens, moet u deze dienovereenkomstig wijzigen.

    Tip

    U wordt aangeraden de huidige Data Factory-abonnements-id, resourcegroep en de url van de Teams-webhook (raadpleeg de vereisten) toe te voegen voor de standaardwaarde van de relevante parameters.

  5. Selecteer variabelen in het deelvenster Configuraties en selecteer vervolgens de knop + Nieuw om de volgende variabelen voor uw pijplijn te definiëren.

    Name Type Standaardwaarde
    messageCard String

    Geeft het

  6. Zoek naar 'Variabele instellen' in het deelvenster Activiteiten van de pijplijn en sleep een activiteit Variabele instellen naar het pijplijncanvas.

  7. Selecteer de activiteit Variabele instellen op het canvas als deze nog niet is geselecteerd en het tabblad Algemeen om de details ervan te bewerken.

  8. Geef op het tabblad Algemeen het JSON-schema instellen op voor de naam van de activiteit Variabele instellen.

    Geeft het

  9. Selecteer op het tabblad Variabelen de messageCard-variabele voor de eigenschap Naam en voer de volgende JSON in voor de eigenschap Waarde :

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

    Geeft het

  10. Zoek naar 'Web' in het deelvenster Activiteiten van de pijplijn en sleep een webactiviteit naar het pijplijncanvas.

  11. Maak een afhankelijkheidsvoorwaarde voor de webactiviteit , zodat deze alleen wordt uitgevoerd als de activiteit Variabele instellen is geslaagd. Als u deze afhankelijkheid wilt maken, selecteert u de groene greep aan de rechterkant van de activiteit Variabele instellen, sleept u deze en verbindt u deze met de webactiviteit .

  12. Selecteer de nieuwe webactiviteit op het canvas als deze nog niet is geselecteerd en het tabblad Algemeen om de details ervan te bewerken.

  13. Geef in het deelvenster Algemeen de Url van teams-webhook aan voor de naam van de webactiviteit .

    Geeft het

  14. Stel in het deelvenster Instellingen de volgende eigenschappen in:

    Eigenschappen waarde
    URL @pipeline().parameters.teamWebhookUrl
    Wijze POST
    Hoofdtekst @json(variables('messageCard'))

    Geeft het

  15. Klaar om uw NotifyTeamsChannelPipeline-pijplijn te valideren, fouten op te sporen en vervolgens te publiceren.

    • Selecteer in de werkbalk Valideren om de pijplijn te valideren.
    • Selecteer Fouten opsporen om fouten op te sporen in de pijplijn. U ziet de status van de pijplijnuitvoering op het tabblad Uitvoer onder aan het venster.
    • Zodra de pijplijn kan worden uitgevoerd, selecteert u Alles publiceren in de bovenste werkbalk. Met deze actie worden entiteiten gepubliceerd die u hebt gemaakt in Data Factory. Wacht totdat het bericht Successfully published wordt weergegeven.

    Geeft het

Voorbeeldgebruik

In dit voorbeeldscenario maken we een hoofdpijplijn met drie Execute Pipeline-activiteiten . De eerste Execute Pipeline-activiteit roept onze ETL-pijplijn aan en de resterende twee Execute Pipeline-activiteiten roepen de pijplijn NotifyTeamsChannelPipeline aan om relevante geslaagde of mislukte meldingen naar het Teams-kanaal te verzenden, afhankelijk van de uitvoeringsstatus van onze ETL-pijplijn.

  1. Selecteer het tabblad Auteur in het linkerdeelvenster in Data Factory of het tabblad Integreren in het linkerdeelvenster in Synapse Studio. Selecteer vervolgens de knop + (plus) en selecteer Vervolgens Pijplijn om een nieuwe pijplijn te maken.

  2. Geef in het deelvenster Algemeen onder Eigenschappen MasterPipeline op als naam. Vouw het deelvenster vervolgens samen door op het pictogram Eigenschappen in de rechterbovenhoek te klikken.

  3. Zoek naar een pijplijn in het deelvenster Activiteiten en sleep drie pijplijnactiviteiten uitvoeren naar het pijplijncanvas.

  4. Selecteer eerst de activiteit Pijplijn uitvoeren op het canvas als deze nog niet is geselecteerd en het deelvenster Algemeen om de details ervan te bewerken.

    • Voor de eigenschap Name van de activiteit Execute Pipeline wordt u aangeraden de naam te gebruiken van de aangeroepen ETL-pijplijn waarvoor u meldingen wilt verzenden. We hebben bijvoorbeeld LoadDataPipeline gebruikt voor de naam van onze Execute Pipeline-activiteit omdat dit de naam is van de aangeroepen pijplijn.
    • Selecteer in het deelvenster Instellingen een bestaande pijplijn of maak een nieuwe pijplijn met behulp van de knop + Nieuw voor de eigenschap Aangeroepen pijplijn . In ons geval hebben we bijvoorbeeld LoadDataPipeline-pijplijn geselecteerd voor de eigenschap 'Aangeroepen pijplijn'. Selecteer andere opties en configureer eventuele parameters voor de pijplijn zo nodig om uw configuratie te voltooien.

    Geeft het

    Geeft het

  5. Selecteer de tweede execute pipeline-activiteit op het canvas en het deelvenster Algemeen om de details ervan te bewerken.

    • Geef De melding OnSuccess op voor de naam van de uitvoering van de pijplijnactiviteit .

    • Selecteer in het deelvenster Instellingen de pijplijn NotifyTeamsChannelPipeline , die we eerder hebben gemaakt, voor de eigenschap Aangeroepen pijplijn . Pas de parameters aan zoals vereist op basis van het activiteitstype. Ik heb de parameters bijvoorbeeld als volgt aangepast:

      Naam Weergegeven als
      abonnement 11111111-0000-aaaa-bbbb-0000000000
      resourceGroup contosorg
      runId @activity('LoadDataPipeline').output['pipelineRunId']
      naam @activity('LoadDataPipeline').output['pipelineName']
      triggerTime @activity('LoadDataPipeline').ExecutionStartTime
      status @activity('LoadDataPipeline').Status
      bericht 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
    • Maak een afhankelijkheidsvoorwaarde voor de tweede Execute Pipeline-activiteit , zodat deze alleen wordt uitgevoerd als de eerste Execute Pipeline-activiteit slaagt. Als u deze afhankelijkheid wilt maken, selecteert u de groene ingang aan de rechterkant van de eerste Execute Pipeline-activiteit , sleept u deze en verbindt u deze met de tweede Execute Pipeline-activiteit .

    Toont de tweede

    Toont de tweede

  6. Selecteer derde Execute Pipeline-activiteit op het canvas en het deelvenster Algemeen om de details ervan te bewerken.

    • Geef OnFailure-melding op voor de naam van de uitvoerpijplijnactiviteit .

    • Selecteer in het deelvenster Instellingen de pijplijn NotifyTeamsChannelPipeline voor de eigenschap Aangeroepen pijplijn . Pas de parameters aan zoals vereist op basis van het activiteitstype. Ik heb de parameters deze keer bijvoorbeeld als volgt aangepast:

      Naam Weergegeven als
      abonnement 11111111-0000-aaaa-bbbb-0000000000
      resourceGroup contosorg
      runId @activity('LoadDataPipeline').output['pipelineRunId']
      naam @activity('LoadDataPipeline').output['pipelineName']
      triggerTime @activity('LoadDataPipeline').ExecutionStartTime
      status @activity('LoadDataPipeline').Status
      bericht @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
    • Maak een afhankelijkheidsvoorwaarde voor de derde Execute Pipeline-activiteit , zodat deze alleen wordt uitgevoerd als de eerste Execute Pipeline-activiteit mislukt. Als u deze afhankelijkheid wilt maken, selecteert u de rode greep aan de rechterkant van de eerste Execute Pipeline-activiteit , sleept u deze en verbindt u deze met de derde Execute Pipeline-activiteit .

    • Valideer, debug en publiceer vervolgens uw MasterPipeline-pijplijn .

    Geeft het derde

    Geeft het derde

  7. Voer een pijplijn uit om meldingen te ontvangen in Teams. Hieronder ziet u voorbeeldmeldingen wanneer mijn pijplijn is uitgevoerd en wanneer deze is mislukt.

    Wordt weergegeven over geslaagde pijplijnmeldingen in een Teams-kanaal.

    Wordt weergegeven in meldingen over mislukte pijplijnen in een Teams-kanaal.

  8. Selecteer de knop Pijplijnuitvoering weergeven om de pijplijnuitvoering weer te geven.

Dynamische berichten toevoegen met systeemvariabelen en expressies

U kunt systeemvariabelen en expressies gebruiken om uw berichten dynamisch te maken. Bijvoorbeeld:

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

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

De bovenstaande expressies retourneren de relevante foutberichten van een fout, die als melding kunnen worden verzonden op een Teams-kanaal. Zie het artikel Copy-activiteit uitvoereigenschappen voor meer informatie over dit onderwerp.

We raden u ook aan om het door Microsoft Teams ondersteunde payloadschema voor meldingen te bekijken en de bovenstaande sjabloon verder aan te passen aan uw behoeften.

E-mail verzenden vanuit een pijplijn