Odesílání oznámení do kanálu Microsoft Teams z kanálu Azure Data Factory nebo Synapse Analytics

Často je potřeba odesílat oznámení během nebo po spuštění kanálu. Oznámení poskytuje proaktivní upozorňování a snižuje potřebu reaktivního monitorování, aby se zjistily problémy.  Dozvíte se, jak odesílat e-mailová oznámení pomocí aplikací logiky, které může vyvolat datová továrna nebo kanál Synapse. Mnoho podniků také stále častěji využívá Microsoft Teams ke spolupráci. Tento článek ukazuje, jak nakonfigurovat oznámení z upozornění kanálu do Microsoft Teams. 

Požadavky

Než budete moct odesílat oznámení do Teams z kanálů, musíte vytvořit příchozí webhook pro kanál Teams. Pokud potřebujete pro tento účel vytvořit nový kanál Teams, projděte si dokumentaci k Teams.  

  1. Otevřete Microsoft Teams a přejděte na kartu Aplikace. Vyhledejte příchozí webhook a vyberte konektor příchozího webhooku.

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

  2. Vyberte tlačítko Přidat do týmu a přidejte konektor na web s názvem týmu nebo kanálu týmu, kam chcete odesílat oznámení.

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

  3. Zadejte nebo vyberte název kanálu týmu nebo týmu, kam chcete oznámení odeslat.

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

  4. Výběrem tlačítka Nastavit konektor nastavte příchozí webhook pro název kanálu týmu nebo týmu, který jste vybrali v předchozím kroku.

    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. Webhook pojmenujte podle potřeby a volitelně nahrajte ikonu pro identifikaci vašich zpráv. Potom výběrem tlačítka Vytvořit vytvořte příchozí webhook.

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

  6. Zkopírujte adresu URL webhooku vygenerovanou při vytváření a uložte ji pro pozdější použití v kanálu. Potom výběrem tlačítka Hotovo dokončete nastavení.

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

  7. Oznámení se zobrazí v kanálu, kam přidáte konektor webhooku.

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

Postup odesílání oznámení v kanálu Teams z kanálu:

  1. V levém podokně vyberte kartu Autor .

  2. Vyberte tlačítko + (plus) a pak vyberte Nový kanál.

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

  3. V podokně Vlastnosti v části Obecné zadejte NotifiyTeamsChannelPipeline pro Název. Potom panel sbalte kliknutím na ikonu Vlastnosti v pravém horním rohu.

    Shows the "Properties" panel.

    Shows the "Properties" panel hidden.

  4. V podokně Konfigurace vyberte Parametry a pak vyberte + Nové tlačítko definovat následující parametry pro váš kanál.

    Name Type Výchozí hodnota
    předplatné 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
    stav String @activity('Specify name of the calling pipeline').Status
    zpráva 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".

    Poznámka:

    Tyto parametry se používají k vytvoření adresy URL monitorování. Předpokládejme, že nezadáte platné předplatné a skupinu prostředků (stejnou datovou továrnu, do které kanály patří). V takovém případě oznámení nebude obsahovat platnou adresu URL monitorování kanálu, ale zprávy budou i nadále fungovat. Přidáním těchto parametrů navíc zabráníte tomu, aby se tyto hodnoty vždy předávaly z jiného kanálu. Pokud máte v úmyslu tyto hodnoty řídit pomocí přístupu řízeného metadaty, měli byste je odpovídajícím způsobem upravit.

    Tip

    Doporučujeme přidat aktuální ID předplatného služby Data Factory, skupinu prostředků a adresu URL webhooku Teams (viz požadavky) pro výchozí hodnotu relevantních parametrů.

  5. V podokně Konfigurace vyberte Proměnné a pak vyberte tlačítko + Nový definovat následující proměnné pro váš kanál.

    Name Type Výchozí hodnota
    messageCard String

    Shows the "Pipeline variables".

  6. V podokně Aktivity vyhledejte "Nastavit proměnnou" a přetáhněte aktivitu Nastavit proměnnou na plátno kanálu.

  7. Pokud ještě není vybraná, vyberte na plátně aktivitu Nastavit proměnnou a její podrobnosti můžete upravit na kartě Obecné.

  8. Na kartě Obecné zadejte pro název aktivity Nastavit proměnnou schémaJSON.

    Shows the "Set variable" activity general tab.

  9. Na kartě Proměnné vyberte proměnnou messageCard pro vlastnost Name a jako vlastnost Value zadejte následující JSON:

    {
        "@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. V podokně Aktivity vyhledejte "Web" a přetáhněte webovou aktivitu na plátno kanálu.

  11. Vytvořte podmínku závislosti pro webovou aktivitu, aby se spustila pouze v případě , že aktivita Nastavit proměnnou proběhne úspěšně. Pokud chcete tuto závislost vytvořit, vyberte zelený úchyt na pravé straně aktivity Nastavit proměnnou , přetáhněte ji a připojte ji k webové aktivitě.

  12. Vyberte novou webovou aktivitu na plátně, pokud ještě není vybraná, a její kartu Obecné můžete upravit.

  13. V podokně Obecné zadejte adresu URL webhooku Invoke Teams pro název webové aktivity.

    Shows the "Web" activity general pane.

  14. V podokně "Nastavení" nastavte následující vlastnosti takto:

    Vlastnost hodnota
    Adresa URL @pipeline().parameters.teamWebhookUrl
    metoda POST
    Body @json(variables('messageCard'))

    Shows the "Web" activity settings pane.

  15. Všechno nastavené a teď jste připraveni ověřit, ladit a pak publikovat kanál NotifiyTeamsChannelPipeline .

    • Vyberte Ověřit z panelu nástrojů a kanál ověřte.
    • K ladění kanálu vyberte na panelu nástrojů Ladit. Stav spuštění kanálu můžete zobrazit na kartě Výstup v dolní části okna.
    • Po úspěšném spuštění kanálu vyberte na horním panelu nástrojů možnost Publikovat vše. Tato akce publikuje entity, které jste vytvořili ve službě Data Factory. Počkejte, dokud se nezobrazí zpráva Publikování proběhlo úspěšně.

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

Ukázkové využití

V tomto ukázkovém scénáři použití vytvoříme hlavní kanál se třemi aktivitami spuštění kanálu . První aktivita spuštění kanálu vyvolá kanál ETL a zbývající dvě aktivity spuštění kanálu vyvolá kanál NotifiyTeamsChannelPipeline, který odešle relevantní oznámení o úspěchu nebo selhání kanálu Teams v závislosti na stavu spuštění kanálu ETL.

  1. V levém podokně ve službě Data Factory nebo v levém podokně v nástroji Synapse Studio vyberte kartu Vytvořit. Dále vyberte tlačítko + (plus) a pak vyberte Kanál a vytvořte nový kanál.

  2. Na panelu Obecné v části Vlastnosti zadejte MasterPipeline pro Název. Potom panel sbalte kliknutím na ikonu Vlastnosti v pravém horním rohu.

  3. Vyhledejte kanál v podokně Aktivity kanálu a přetáhněte tři aktivity Spuštění kanálu na plátno kanálu.

  4. Pokud ještě není vybraná, vyberte na plátně nejprve aktivitu Spustit kanál a jeho podokno Obecné a upravte jeho podrobnosti.

    • Pro vlastnost Name aktivity Spustit kanál doporučujeme použít název vyvolaného kanálu ETL, pro který chcete odesílat oznámení. Například pro název aktivity spuštění kanálu jsme použili LoadDataPipeline, protože se jedná o název našeho vyvolaného kanálu.
    • V podokně "Nastavení" vyberte existující kanál nebo vytvořte nový pomocí tlačítka + Nový pro vyvolánou vlastnost kanálu. V našem případě jsme například vybrali kanál LoadDataPipeline pro vlastnost Vyvoláný kanál. Vyberte další možnosti a podle potřeby nakonfigurujte všechny parametry kanálu pro dokončení konfigurace.

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

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

  5. Na plátně vyberte druhou aktivitu spustit kanál a jeho podrobnosti můžete upravit v podokně Obecné.

    • Zadejte oznámení OnSuccess pro názevaktivity spuštění kanálu .

    • V podokně "Nastavení" vyberte kanál NotifiyTeamsChannelPipeline, který jsme vytvořili dříve, pro vlastnost Vyvolaný kanál. Upravte parametry podle potřeby na základě typu aktivity. Například jsem upravil(a) parametry takto:

      Jméno Hodnota
      předplatné 11111111-0000-aaaa-bbbb-0000000000
      resourceGroup contosorg
      runId @activity('LoadDataPipeline').output['pipelineRunId']
      name @activity('LoadDataPipeline').output['pipelineName']
      triggerTime @activity('LoadDataPipeline').ExecutionStartTime
      stav @activity('LoadDataPipeline').Status
      zpráva 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
    • Vytvořte podmínku závislosti pro druhou aktivitu spuštění kanálu , aby se spustila pouze v případě, že první aktivita kanálu spuštění proběhne úspěšně. Pokud chcete tuto závislost vytvořit, vyberte zelený popisovač na pravé straně první aktivity kanálu spuštění, přetáhněte ji a připojte ji k druhé aktivitě kanálu spuštění .

    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. Vyberte na plátně třetí aktivitu spustit kanál a jeho podrobnosti můžete upravit v podokně Obecné.

    • Zadejte oznámení OnFailure pro názevaktivity spuštění kanálu .

    • V podokně "Nastavení" vyberte kanál NotifiyTeamsChannelPipeline pro vlastnost vyvolaný kanál. Upravte parametry podle potřeby na základě typu aktivity. Například tentokrát jsem upravil(a) parametry následujícím způsobem:

      Jméno Hodnota
      předplatné 11111111-0000-aaaa-bbbb-0000000000
      resourceGroup contosorg
      runId @activity('LoadDataPipeline').output['pipelineRunId']
      name @activity('LoadDataPipeline').output['pipelineName']
      triggerTime @activity('LoadDataPipeline').ExecutionStartTime
      stav @activity('LoadDataPipeline').Status
      zpráva @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
    • Vytvořte podmínku závislosti pro třetí aktivitu spuštění kanálu , aby se spustila pouze v případě, že první aktivita spuštění kanálu selže. Pokud chcete tuto závislost vytvořit, vyberte červený popisovač na pravé straně první aktivity kanálu spuštění, přetáhněte ji a připojte ji k třetí aktivitě kanálu spuštění .

    • Ověřte, laďte a publikujte kanál MasterPipeline .

    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. Spusťte kanál pro příjem oznámení v Teams. Níže jsou například ukázková oznámení, když se kanál úspěšně spustil a když selhal.

    Shows on success pipeline notifications in a Teams channel.

    Shows on failure pipeline notifications in a Teams channel.

  8. Výběrem tlačítka Zobrazit spuštění kanálu zobrazíte spuštění kanálu.

Přidání dynamických zpráv pomocí systémových proměnných a výrazů

K dynamickému vytváření zpráv můžete použít systémové proměnné a výrazy . Příklad:

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

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

Výše uvedené výrazy vrátí relevantní chybové zprávy z selhání, které je možné odeslat jako oznámení v kanálu Teams. Další informace o tomto tématu najdete v článku o výstupních vlastnostech aktivita Copy.

Doporučujeme vám také zkontrolovat schéma datové části oznámení podporované v Microsoft Teams a dále přizpůsobit výše uvedenou šablonu vašim potřebám.

Jak odesílat e-maily z kanálu