Condividi tramite


Inviare notifiche a un canale di Microsoft Teams da una pipeline di Azure Data Factory o Synapse Analytics

Spesso è necessario inviare notifiche durante o dopo l'esecuzione di una pipeline. La notifica fornisce avvisi proattivi e riduce la necessità di un monitoraggio reattivo per individuare i problemi.  È possibile ottenere informazioni su come inviare notifiche tramite posta elettronica usando app per la logica che una data factory o una pipeline di Synapse può richiamare. Molte aziende usano sempre più Microsoft Teams per la collaborazione. Questo articolo illustra come configurare le notifiche dagli avvisi della pipeline in Microsoft Teams. 

Prerequisiti

Prima di poter inviare notifiche a Teams dalle pipeline, è necessario creare un webhook in ingresso per il canale teams. Se è necessario creare un nuovo canale di Teams a questo scopo, vedere la documentazione di Teams.  

  1. Aprire Microsoft Teams e passare alla scheda App. Cercare "Webhook in ingresso" e selezionare il connettore Webhook in ingresso.

    Mostra l'app Webhook in ingresso nella scheda App in Teams.

  2. Selezionare il pulsante "Aggiungi a un team" per aggiungere il connettore al sito del nome del canale team o team in cui si vogliono inviare notifiche.

    Evidenzia il

  3. Digitare o selezionare Team o Nome canale team in cui si desidera inviare le notifiche.

    Mostra la richiesta di selezione del team nella finestra di dialogo Configurazione dell'app Webhook in ingresso in Teams. Digitare il

  4. Selezionare il pulsante "Configura un connettore" per configurare il webhook in ingresso per il nome del canale Team o Team selezionato nel passaggio precedente.

    Mostra la richiesta di selezione del team nella finestra di dialogo Configurazione dell'app Webhook in ingresso in Teams. Evidenzia il team e il

  5. Assegnare al webhook il nome appropriato e, facoltativamente, caricare un'icona per identificare i messaggi. Successivamente, selezionare il pulsante "Crea" per creare il webhook in ingresso.

    Evidenzia la proprietà name, il caricamento di immagini facoltativo e  

  6. Copiare l'URL del webhook generato alla creazione e salvarlo per usarlo in un secondo momento nella pipeline. Successivamente, selezionare il pulsante "Fine" per completare l'installazione.

    Mostra il nuovo URL del webhook nella pagina Opzioni webhook in ingresso dopo la creazione.

  7. È possibile visualizzare la notifica nel canale in cui si aggiunge il connettore webhook.

    Mostra la notifica nel canale di Teams in cui è stato aggiunto il connettore webhook.

Procedura per inviare notifiche sul canale di Teams da una pipeline:

  1. Selezionare la scheda Crea dal riquadro sinistro.

  2. Selezionare il pulsante + (più) e quindi selezionare Nuova pipeline.

    Mostra il

  3. Nel riquadro "Proprietà" in "Generale", specificare NotifyTeamsChannelPipeline per Nome. Comprimere quindi il pannello facendo clic sull'icona Proprietà nell'angolo superiore destro.

    Mostra il

    Mostra il

  4. Nel riquadro "Configurazioni" selezionare Parametri e quindi selezionare il pulsante + Nuovo per definire i parametri seguenti per la pipeline.

    Nome Type Valore predefinito
    sottoscrizione 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
    stato String @activity('Specify name of the calling pipeline').Status
    messaggio 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

    Mostra il

    Nota

    Questi parametri vengono usati per costruire l'URL di monitoraggio. Si supponga di non fornire una sottoscrizione e un gruppo di risorse validi (della stessa data factory a cui appartengono le pipeline). In tal caso, la notifica non conterrà un URL di monitoraggio della pipeline valido, ma i messaggi continueranno a funzionare. Inoltre, l'aggiunta di questi parametri consente di evitare la necessità di passare sempre tali valori da un'altra pipeline. Se si intende controllare tali valori tramite un approccio basato sui metadati, è necessario modificarli di conseguenza.

    Suggerimento

    È consigliabile aggiungere l'ID sottoscrizione di Data Factory corrente, il gruppo di risorse e l'URL del webhook di Teams (fare riferimento ai prerequisiti) per il valore predefinito dei parametri pertinenti.

  5. Nel riquadro "Configurazioni" selezionare Variabili e quindi selezionare il pulsante + Nuovo per definire le variabili seguenti per la pipeline.

    Nome Type Valore predefinito
    messageCard String

    Mostra il

  6. Cercare "Imposta variabile" nel riquadro "Attività" della pipeline e trascinare un'attività Imposta variabile nell'area di disegno della pipeline.

  7. Selezionare l'attività Imposta variabile nell'area di disegno se non è già selezionata e la relativa scheda "Generale" per modificarne i dettagli.

  8. Nella scheda "Generale" specificare Imposta schema JSON per Nome dell'attività Imposta variabile .

    Mostra il

  9. Nella scheda "Variabili" selezionare messageCard variabile per la proprietà Name e immettere il codice JSON seguente per la relativa proprietà Value:

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

    Mostra il

  10. Cercare "Web" nel riquadro "Attività" della pipeline e trascinare un'attività Web nell'area di disegno della pipeline.

  11. Creare una condizione di dipendenza per l'attività Web in modo che venga eseguita solo se l'attività Imposta variabile ha esito positivo. Per creare questa dipendenza, selezionare l'handle verde sul lato destro dell'attività Imposta variabile , trascinarlo e connetterlo all'attività Web .

  12. Selezionare la nuova attività Web nell'area di disegno se non è già selezionata e la scheda "Generale" per modificarne i dettagli.

  13. Nel riquadro "Generale" specificare Invoke Teams Webhook URL (Richiama URL webhook teams) per Nome dell'attività Web .

    Mostra il

  14. Nel riquadro "Impostazioni" impostare le proprietà seguenti nel modo seguente:

    Proprietà value
    URL @pipeline().parameters.teamWebhookUrl
    metodo POST
    Testo @json(variables('messageCard'))

    Mostra il

  15. Tutto impostato e ora si è pronti per convalidare, eseguire il debug e quindi pubblicare la pipeline NotifyTeamsChannelPipeline .

    • Per convalidare la pipeline, selezionare Convalida dalla barra degli strumenti.
    • Per eseguire il debug della pipeline, selezionare Debug sulla barra degli strumenti. È possibile visualizzare lo stato dell'esecuzione della pipeline nella scheda "Output" nella parte inferiore della finestra.
    • Quando è possibile eseguire correttamente la pipeline, nella barra degli strumenti superiore selezionare Pubblica tutto. Questa azione pubblica le entità create in Data Factory. Attendere fino alla visualizzazione del messaggio Pubblicazione riuscita.

    Mostra il

Esempio di utilizzo

In questo scenario di utilizzo di esempio si creerà una pipeline master con tre attività Execute Pipeline . La prima attività Execute Pipeline richiamerà la pipeline ETL e le altre due attività Execute Pipeline richiameranno la pipeline "NotifyTeamsChannelPipeline" per inviare notifiche di esito positivo o negativo pertinenti al canale di Teams a seconda dello stato di esecuzione della pipeline ETL.

  1. Selezionare la scheda Autore nel riquadro sinistro in Data Factory o nella scheda Integrazione nel riquadro sinistro in Synapse Studio. Selezionare quindi il pulsante + (più) e quindi selezionare Pipeline per creare una nuova pipeline.

  2. Nel pannello "Generale" in Proprietà specificare MasterPipeline per Nome. Comprimere quindi il pannello facendo clic sull'icona Proprietà nell'angolo superiore destro.

  3. Cercare la pipeline nel riquadro "Attività" della pipeline e trascinare tre attività Execute Pipeline nell'area di disegno della pipeline.

  4. Selezionare la prima attività Esegui pipeline nell'area di disegno se non è già selezionata e il riquadro "Generale" per modificarne i dettagli.

    • Per la proprietà Name dell'attività Esegui pipeline , è consigliabile usare il nome della pipeline ETL richiamata per cui si desidera inviare notifiche. Ad esempio, è stato usato LoadDataPipeline come Nome dell'attività Execute Pipeline perché è il nome della pipeline richiamata.
    • Nel riquadro "Impostazioni" selezionare una pipeline esistente o crearne una nuova usando il pulsante + Nuovo per la proprietà Della pipeline richiamata. In questo caso, ad esempio, è stata selezionata la pipeline LoadDataPipeline per la proprietà "Pipeline richiamata". Selezionare altre opzioni e configurare i parametri per la pipeline in base alle esigenze per completare la configurazione.

    Mostra il

    Mostra il

  5. Selezionare la seconda attività Esegui pipeline nell'area di disegno ed è "Generale" per modificarne i dettagli.

    • Specificare La notifica OnSuccess per Nome dell'attività Esegui pipeline .

    • Nel riquadro "Impostazioni" selezionare NotifyTeamsChannelPipeline pipeline, creata in precedenza, per la proprietà Della pipeline richiamata. Personalizzare i parametri in base al tipo di attività richiesto. Ad esempio, ho personalizzato i parametri come segue:

      Nome Valore
      sottoscrizione 11111111-0000-aaaa-bbbb-0000000000
      resourceGroup contosorg
      runId @activity('LoadDataPipeline').output['pipelineRunId']
      name @activity('LoadDataPipeline').output['pipelineName']
      triggerTime @activity('LoadDataPipeline').ExecutionStartTime
      stato @activity('LoadDataPipeline').Status
      messaggio 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
    • Creare una condizione di dipendenza per la seconda attività Execute Pipeline in modo che venga eseguita solo se la prima attività Execute Pipeline ha esito positivo. Per creare questa dipendenza, selezionare l'handle verde a destra della prima attività Esegui pipeline , trascinarlo e connetterlo alla seconda attività Esegui pipeline .

    Mostra il secondo

    Mostra il secondo

  6. Selezionare la terza attività Esegui pipeline nell'area di disegno ed è "Generale" per modificarne i dettagli.

    • Specificare La notifica OnFailure per Nome dell'attività Esegui pipeline .

    • Nel riquadro "Impostazioni" selezionare NotifyTeamsChannelPipeline pipeline per la proprietà Pipeline richiamata. Personalizzare i parametri in base al tipo di attività richiesto. Ad esempio, ho personalizzato i parametri questa volta come indicato di seguito:

      Nome Valore
      sottoscrizione 11111111-0000-aaaa-bbbb-0000000000
      resourceGroup contosorg
      runId @activity('LoadDataPipeline').output['pipelineRunId']
      name @activity('LoadDataPipeline').output['pipelineName']
      triggerTime @activity('LoadDataPipeline').ExecutionStartTime
      stato @activity('LoadDataPipeline').Status
      messaggio @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
    • Creare una condizione di dipendenza per la terza attività Execute Pipeline in modo che venga eseguita solo se la prima attività Execute Pipeline ha esito negativo. Per creare questa dipendenza, selezionare l'handle rosso sul lato destro della prima attività Esegui pipeline , trascinarlo e connetterlo alla terza attività Esegui pipeline .

    • Convalidare, eseguire il debug e quindi pubblicare la pipeline MasterPipeline .

    Mostra il terzo

    Mostra il terzo

  7. Eseguire la pipeline per ricevere notifiche in Teams. Ad esempio, di seguito sono riportate le notifiche di esempio, quando la pipeline è stata eseguita correttamente e quando non è riuscita.

    Mostra le notifiche della pipeline di esito positivo in un canale di Teams.

    Mostra le notifiche della pipeline di errore in un canale di Teams.

  8. Selezionare il pulsante "Visualizza esecuzione pipeline" per visualizzare l'esecuzione della pipeline.

Aggiungere messaggi dinamici con variabili di sistema ed espressioni

È possibile usare le variabili di sistema e le espressioni per rendere dinamici i messaggi. Ad esempio:

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

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

Le espressioni precedenti restituiranno i messaggi di errore pertinenti da un errore, che può essere inviato come notifica in un canale di Teams. Per altre informazioni su questo argomento, vedere l'articolo sulle proprietà di output attività Copy.

È anche consigliabile esaminare lo schema del payload di notifica supportato da Microsoft Teams e personalizzare ulteriormente il modello precedente in base alle proprie esigenze.

Come inviare messaggi di posta elettronica da una pipeline