Udostępnij za pośrednictwem


Wysyłanie powiadomień do kanału usługi Microsoft Teams z potoku usługi Azure Data Factory lub Synapse Analytics

Często konieczne jest wysyłanie powiadomień podczas lub po wykonaniu potoku. Powiadomienie zapewnia proaktywne alerty i zmniejsza potrzebę reaktywnego monitorowania w celu wykrycia problemów.  Dowiesz się, jak wysyłać powiadomienia e-mail przy użyciu aplikacji logiki, które mogą wywoływać potok fabryki danych lub usługi Synapse. Wiele przedsiębiorstw coraz częściej używa usługi Microsoft Teams do współpracy. W tym artykule pokazano, jak skonfigurować powiadomienia z alertów potoku do usługi Microsoft Teams. 

Wymagania wstępne

Aby można było wysyłać powiadomienia do usługi Teams z potoków, musisz utworzyć przychodzący element webhook dla kanału usługi Teams. Jeśli chcesz utworzyć nowy kanał usługi Teams w tym celu, zapoznaj się z dokumentacją usługi Teams.  

  1. Otwórz aplikację Microsoft Teams i przejdź do karty Aplikacje. Wyszukaj ciąg "Przychodzący element webhook" i wybierz łącznik przychodzącego elementu webhook.

    Pokazuje przychodzącą aplikację elementu webhook na karcie Aplikacje w aplikacji Teams.

  2. Wybierz przycisk "Dodaj do zespołu", aby dodać łącznik do witryny Nazwy kanału zespołu lub zespołu, w której chcesz wysyłać powiadomienia.

    Wyróżnia

  3. Wpisz lub wybierz nazwę kanału Team lub Team, w którym chcesz wysłać powiadomienia.

    Wyświetla monit o wybór zespołu w oknie dialogowym Konfiguracja aplikacji przychodzącego elementu webhook w usłudze Teams. Wpisz

  4. Wybierz przycisk "Skonfiguruj łącznik", aby skonfigurować element webhook przychodzący dla nazwy kanału zespołu lub zespołu wybranej w poprzednim kroku.

    Wyświetla monit o wybór zespołu w oknie dialogowym Konfiguracja aplikacji przychodzącego elementu webhook w usłudze Teams. Wyróżnia zespół i

  5. Nazwij element webhook odpowiednio i opcjonalnie przekaż ikonę, aby zidentyfikować wiadomości. Następnie wybierz przycisk "Utwórz", aby utworzyć przychodzący element webhook.

    Wyróżnia właściwość name, opcjonalne przekazywanie obrazów i  

  6. Skopiuj adres URL elementu webhook wygenerowany podczas tworzenia i zapisz go do późniejszego użycia w potoku. Następnie wybierz przycisk "Gotowe", aby ukończyć konfigurację.

    Pokazuje nowy adres URL elementu webhook na stronie Opcji elementu webhook przychodzącego po utworzeniu.

  7. Powiadomienie jest widoczne w kanale, w którym dodajesz łącznik elementu webhook.

    Pokazuje powiadomienie w kanale usługi Teams, w którym dodano łącznik elementu webhook.

Kroki wysyłania powiadomień w kanale usługi Teams z potoku:

  1. Wybierz kartę Autor w okienku po lewej stronie.

  2. Wybierz przycisk + (plus), a następnie wybierz pozycję Nowy potok.

    Wyświetla

  3. W okienku "Właściwości" w obszarze "Ogólne" określ wartość NotifyTeamsChannelPipeline w polu Nazwa. Następnie zwiń panel, klikając ikonę Właściwości w prawym górnym rogu.

    Wyświetla

    Wyświetla

  4. W okienku "Konfiguracje" wybierz pozycję Parametry, a następnie wybierz przycisk + Nowy zdefiniuj następujące parametry dla potoku.

    Nazwisko Type Wartość domyślna
    subskrypcja 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
    wiadomość 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

    Wyświetla

    Uwaga

    Te parametry służą do konstruowania adresu URL monitorowania. Załóżmy, że nie udostępniasz prawidłowej subskrypcji i grupy zasobów (tej samej fabryki danych, do której należą potoki). W takim przypadku powiadomienie nie będzie zawierać prawidłowego adresu URL monitorowania potoku, ale komunikaty będą nadal działać. Ponadto dodanie tych parametrów pomaga zapobiec konieczności zawsze przekazywania tych wartości z innego potoku. Jeśli zamierzasz kontrolować te wartości za pomocą podejścia opartego na metadanych, należy odpowiednio je zmodyfikować.

    Napiwek

    Zalecamy dodanie bieżącego identyfikatora subskrypcji usługi Data Factory, grupy zasobów i adresu URL elementu webhook usługi Teams (zapoznaj się z wymaganiami wstępnymi) dla wartości domyślnej odpowiednich parametrów.

  5. W okienku "Konfiguracje" wybierz pozycję Zmienne, a następnie wybierz przycisk + Nowy zdefiniuj następujące zmienne dla potoku.

    Nazwisko Type Wartość domyślna
    messageCard String

    Wyświetla

  6. Wyszukaj ciąg "Ustaw zmienną" w okienku "Działania" potoku i przeciągnij działanie Ustaw zmienną na kanwę potoku.

  7. Wybierz działanie Ustaw zmienną na kanwie, jeśli nie zostało jeszcze wybrane, a jej karta "Ogólne", aby edytować jego szczegóły.

  8. Na karcie "Ogólne" określ wartość Ustaw schemat JSON dla pozycji Nazwa działania Ustaw zmienną .

    Wyświetla

  9. Na karcie "Zmienne" wybierz zmienną messageCard dla właściwości Name i wprowadź następujący kod JSON dla właściwości 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)}"
                    }
                ]
            }
        ]
    }
    

    Wyświetla

  10. Wyszukaj ciąg "Web" w okienku "Działania" potoku i przeciągnij działanie internetowe na kanwę potoku.

  11. Utwórz warunek zależności dla działania sieci Web , aby był uruchamiany tylko wtedy, gdy działanie Ustaw zmienną powiedzie się. Aby utworzyć tę zależność, wybierz zielony uchwyt po prawej stronie działania Ustaw zmienną , przeciągnij ją i połącz z działaniem sieci Web .

  12. Wybierz nowe działanie sieci Web na kanwie, jeśli nie zostało jeszcze wybrane, a jej karta "Ogólne", aby edytować jego szczegóły.

  13. W okienku "Ogólne" określ wartość Invoke Teams Webhook Url (Wywołaj adres URL elementu webhook usługi Teams) jako Nazwę działania internetowego.

    Wyświetla

  14. W okienku "Ustawienia" ustaw następujące właściwości w następujący sposób:

    Właściwości wartość
    URL @pipeline().parameters.teamWebhookUrl
    Method POST
    Treść @json(variables('messageCard'))

    Wyświetla

  15. Wszystko gotowe do zweryfikowania, debugowania, a następnie opublikowania potoku NotifyTeamsChannelPipeline .

    • Wybierz na pasku narzędzi pozycję Weryfikuj, aby zweryfikować potok.
    • Aby debugować potok, wybierz na pasku narzędzi pozycję Debuguj. Stan uruchomienia potoku można zobaczyć na karcie "Dane wyjściowe" w dolnej części okna.
    • Po pomyślnym uruchomieniu potoku na górnym pasku narzędzi wybierz pozycję Opublikuj wszystko. Ta akcja publikuje jednostki utworzone w usłudze Data Factory. Poczekaj na wyświetlenie komunikatu Pomyślnie opublikowano.

    Wyświetla

Przykładowe zastosowanie

W tym przykładowym scenariuszu użycia utworzymy potok główny z trzema działaniami Wykonywania potoku . Pierwsze działanie Execute Pipeline (Wykonywanie potoku) spowoduje wywołanie potoku ETL, a pozostałe dwa działania potoku Execute Pipeline wywoła potok "NotifyTeamsChannelPipeline", aby wysłać odpowiednie powiadomienia o powodzeniu lub niepowodzeniu do kanału usługi Teams w zależności od stanu wykonania potoku ETL.

  1. Wybierz kartę Tworzenie w okienku po lewej stronie w usłudze Data Factory lub kartę Integracja w okienku po lewej stronie w programie Synapse Studio. Następnie wybierz przycisk + (plus), a następnie wybierz pozycję Potok , aby utworzyć nowy potok.

  2. W panelu "Ogólne" w obszarze Właściwości określ wartość MasterPipeline w polu Nazwa. Następnie zwiń panel, klikając ikonę Właściwości w prawym górnym rogu.

  3. Wyszukaj potok w okienku "Działania" potoku i przeciągnij trzy działania Execute Pipeline na kanwę potoku.

  4. Wybierz pierwsze działanie Wykonaj potok na kanwie, jeśli nie zostało jeszcze wybrane, a jego okienko "Ogólne", aby edytować jego szczegóły.

    • W polu Nazwa właściwości działania Execute Pipeline (Wykonywanie potoku ) zalecamy użycie nazwy wywoływanego potoku ETL, dla którego chcesz wysyłać powiadomienia. Na przykład użyliśmy parametru LoadDataPipeline jako nazwy działania Execute Pipeline , ponieważ jest to nazwa wywoływanego potoku.
    • W okienku "Ustawienia" wybierz istniejący potok lub utwórz nowy przy użyciu przycisku + Nowy dla właściwości Wywoływany potok . Na przykład w naszym przypadku wybrano potok LoadDataPipeline dla właściwości "Wywoływany potok". Wybierz inne opcje i skonfiguruj wszystkie parametry potoku zgodnie z wymaganiami, aby ukończyć konfigurację.

    Wyświetla

    Wyświetla

  5. Wybierz drugie działanie Wykonaj potok na kanwie i jest to okienko "Ogólne", aby edytować jego szczegóły.

    • Określ wartość OnSuccess Notification w polu Nazwa działania Execute Pipeline (Wykonywanie potoku).

    • W okienku "Ustawienia" wybierz pozycję NotifyTeamsChannelPipeline potoku, który został utworzony wcześniej dla właściwości Wywołany potok . Dostosuj parametry zgodnie z wymaganiami na podstawie typu działania. Na przykład parametry zostały dostosowane w następujący sposób:

      Nazwa/nazwisko Wartość
      subskrypcja 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
      wiadomość 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
    • Utwórz warunek zależności dla drugiego działania Wykonaj potok , tak aby był uruchamiany tylko wtedy, gdy pierwsze działanie Execute Pipeline powiedzie się. Aby utworzyć tę zależność, wybierz zielony uchwyt po prawej stronie pierwszego działania Wykonaj potok, przeciągnij go i połącz go z drugim działaniem Wykonaj potok .

    Pokazuje drugi

    Pokazuje drugi

  6. Wybierz trzecie działanie Wykonaj potok na kanwie i jest to okienko "Ogólne", aby edytować jego szczegóły.

    • Określ wartość OnFailure Notification w polu Nazwa działania Execute Pipeline (Wykonywanie potoku).

    • W okienku "Ustawienia" wybierz pozycję NotifyTeamsChannelPipeline potoku dla właściwości Wywoływany potok . Dostosuj parametry zgodnie z wymaganiami na podstawie typu działania. Na przykład dostosowaliśmy parametry tym razem w następujący sposób:

      Nazwa/nazwisko Wartość
      subskrypcja 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
      wiadomość @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
    • Utwórz warunek zależności dla trzeciego działania Wykonaj potok , aby był uruchamiany tylko wtedy, gdy pierwsze działanie Execute Pipeline zakończy się niepowodzeniem. Aby utworzyć tę zależność, wybierz czerwony uchwyt po prawej stronie pierwszego działania Wykonaj potok, przeciągnij go i połącz go z trzecim działaniem Wykonaj potok .

    • Zweryfikuj, debuguj, a następnie opublikuj potok MasterPipeline .

    Wyświetla trzeci element

    Wyświetla trzeci element

  7. Uruchom potok, aby otrzymywać powiadomienia w usłudze Teams. Na przykład poniżej przedstawiono przykładowe powiadomienia, gdy mój potok został uruchomiony pomyślnie i kiedy zakończył się niepowodzeniem.

    Pokazuje powiadomienia potoku powodzenia w kanale usługi Teams.

    Pokazuje powiadomienia potoku awarii w kanale usługi Teams.

  8. Wybierz przycisk "Wyświetl uruchomienie potoku", aby wyświetlić przebieg potoku.

Dodawanie komunikatów dynamicznych ze zmiennymi systemowymi i wyrażeniami

Możesz użyć zmiennych systemowych i wyrażeń, aby komunikaty są dynamiczne. Na przykład: .

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

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

Powyższe wyrażenia zwracają odpowiednie komunikaty o błędach z błędu, które można wysłać jako powiadomienie w kanale usługi Teams. Aby uzyskać więcej informacji na temat tego tematu, zobacz artykuł działanie Kopiuj właściwości danych wyjściowych.

Zachęcamy również do przejrzenia schematu ładunku powiadomień obsługiwanych przez usługę Microsoft Teams i dalszego dostosowywania powyższego szablonu do Twoich potrzeb.

Jak wysyłać wiadomość e-mail z potoku