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.
Aprire Microsoft Teams e passare alla scheda App. Cercare "Webhook in ingresso" e selezionare il connettore Webhook in ingresso.
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.
Digitare o selezionare Team o Nome canale team in cui si desidera inviare le notifiche.
Selezionare il pulsante "Configura un connettore" per configurare il webhook in ingresso per il nome del canale Team o Team selezionato nel passaggio precedente.
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.
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.
È possibile visualizzare la notifica nel canale in cui si aggiunge il connettore webhook.
Procedura per inviare notifiche sul canale di Teams da una pipeline:
Selezionare la scheda Crea dal riquadro sinistro.
Selezionare il pulsante + (più) e quindi selezionare Nuova pipeline.
Nel riquadro "Proprietà" in "Generale" specificare NotifiyTeamsChannelPipeline per Name. Comprimere quindi il pannello facendo clic sull'icona Proprietà nell'angolo superiore destro.
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
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.
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
Cercare "Imposta variabile" nel riquadro "Attività" della pipeline e trascinare un'attività Imposta variabile nell'area di disegno della pipeline.
Selezionare l'attività Imposta variabile nell'area di disegno se non è già selezionata e la relativa scheda "Generale" per modificarne i dettagli.
Nella scheda "Generale" specificare Imposta schema JSON per Nome dell'attività Imposta variabile .
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": "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)}" } ] } ] }
Cercare "Web" nel riquadro "Attività" della pipeline e trascinare un'attività Web nell'area di disegno della pipeline.
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 .
Selezionare la nuova attività Web nell'area di disegno se non è già selezionata e la scheda "Generale" per modificarne i dettagli.
Nel riquadro "Generale" specificare Invoke Teams Webhook URL (Richiama URL webhook teams) per Nome dell'attività Web .
Nel riquadro "Impostazioni", impostare le proprietà seguenti come indicato di seguito:
Proprietà value URL @pipeline().parameters.teamWebhookUrl
metodo POST
Corpo @json(variables('messageCard'))
Tutto impostato e ora si è pronti per convalidare, eseguire il debug e quindi pubblicare la pipeline NotifiyTeamsChannelPipeline .
- 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.
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 "NotifiyTeamsChannelPipeline" per inviare notifiche di esito positivo o negativo pertinenti al canale di Teams a seconda dello stato di esecuzione della pipeline ETL.
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.
Nel pannello "Generale" in Proprietà specificare MasterPipeline per Nome. Comprimere quindi il pannello facendo clic sull'icona Proprietà nell'angolo superiore destro.
Cercare la pipeline nel riquadro "Attività" della pipeline e trascinare tre attività Execute Pipeline nell'area di disegno della pipeline.
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.
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 NotafiyTeamsChannelPipeline 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 .
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 NotafiyTeamsChannelPipeline pipeline per la proprietà Della 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 .
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.
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.