Bagikan melalui


Mengirim pemberitahuan ke saluran Microsoft Teams dari alur Azure Data Factory atau Synapse Analytics

Sering kali perlu mengirim notifikasi selama atau setelah eksekusi alur. Notifikasi memberikan pemberitahuan proaktif dan mengurangi kebutuhan akan pemantauan reaktif untuk menemukan masalah.  Anda dapat mempelajari cara mengirim pemberitahuan email menggunakan aplikasi logika yang dapat dipanggil oleh pabrik data atau alur Synapse. Banyak perusahaan juga makin menggunakan Microsoft Teams untuk kolaborasi. Artikel ini menunjukkan cara mengonfigurasi pemberitahuan dari pemberitahuan alur ke Microsoft Teams. 

Prasyarat

Sebelum Anda dapat mengirim pemberitahuan ke Teams dari alur, Anda harus membuat Webhook Masuk untuk saluran Teams Anda. Jika Anda perlu membuat saluran Teams baru untuk tujuan ini, lihat dokumentasi Teams.  

  1. Buka Microsoft Teams dan buka tab Aplikasi. Cari "Webhook Masuk" dan pilih konektor Webhook Masuk.

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

  2. Pilih tombol "Tambahkan ke tim" guna menambahkan konektor ke situs nama saluran Tim atau Tim tempat Anda ingin mengirim pemberitahuan.

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

  3. Ketik atau pilih Nama saluran Tim atau Tim tempat Anda ingin mengirim notifikasi.

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

  4. Pilih tombol "Siapkan konektor" guna menyiapkan Webhook Masuk untuk nama saluran Tim atau Tim yang Anda pilih di langkah sebelumnya.

    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. Beri nama Webhook dengan sesuai dan unggah ikon secara opsional untuk mengidentifikasi pesan Anda. Setelah itu, pilih tombol "Buat" guna membuat Webhook Masuk.

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

  6. Salin URL Webhook yang dihasilkan pada pembuatan dan simpan untuk digunakan nanti dalam alur. Setelah itu, pilih tombol "Selesai" guna menyelesaikan pengaturan.

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

  7. Anda dapat melihat pemberitahuan di saluran tempat Anda menambahkan konektor webhook.

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

Langkah-langkah untuk mengirim pemberitahuan di saluran Teams dari alur:

  1. Pilih tab Pembuat di panel sebelah kiri.

  2. Pilih tombol + (plus), lalu pilih Alur baru.

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

  3. Di panel "Properti" di bawah "Umum", tentukan NotifiyTeamsChannelPipeline untuk Name. Kemudian ciutkan panel dengan mengeklik ikon Properti di pojok kanan atas.

    Shows the "Properties" panel.

    Shows the "Properties" panel hidden.

  4. Di panel "Konfigurasi", pilih Parameter, lalu pilih tombol + Baru tentukan parameter berikut untuk alur Anda.

    Nama Jenis Nilai Default
    langganan 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']
    nama 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
    pesan 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".

    Catatan

    Parameter ini digunakan untuk membangun URL pemantauan. Misalkan Anda tidak menyediakan langganan dan grup sumber daya yang valid (dari pabrik data yang sama tempat alur berada). Dalam hal ini, pemberitahuan tidak akan berisi URL pemantauan alur yang valid, tetapi pesan masih akan berfungsi. Selain itu, menambahkan parameter ini membantu mencegah kebutuhan untuk selalu melewati nilai-nilai tersebut dari alur lain. Jika Anda berniat untuk mengontrol nilai-nilai tersebut melalui pendekatan metadata-driven, maka Anda harus memodifikasi mereka dengan sesuai.

    Tip

    Kami menyarankan penambahan ID Langganan Data Factory saat ini, Grup Sumber Daya, dan URL webhook Teams (lihat prasyarat) untuk nilai default parameter yang relevan.

  5. Di panel "Konfigurasi", pilih Variabel, lalu pilih tombol + Baru tentukan variabel berikut untuk alur Anda.

    Nama Jenis Nilai Default
    messageCard String

    Shows the "Pipeline variables".

  6. Telusuri "Tetapkan variabel" di panel "Aktivitas" saluran, dan seret aktivitas Tetapkan Variabel ke kanvas saluran.

  7. Pilih aktivitas Atur Variabel di kanvas jika belum dipilih, dan tab "Umum", guna mengedit detailnya.

  8. Di tab "Umum", tentukan Atur skema JSON untuk Nama aktivitas Atur Variabel.

    Shows the "Set variable" activity general tab.

  9. Di tab "Variabel", pilih variabel messageCard untuk properti Name dan masukkan JSON berikut untuk properti Value-nya:

    {
        "@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. Cari "Web" di panel "Aktivitas" alur, dan seret aktivitas Web ke kanvas alur.

  11. Buat kondisi dependensi untuk aktivitas Web sehingga hanya berjalan jika aktivitas Atur Variabel berhasil. Untuk membuat dependensi ini, pilih gagang hijau di sisi kanan aktivitas Atur Variabel, seret, dan sambungkan ke aktivitas Web.

  12. Pilih aktivitas Web baru di kanvas jika belum dipilih, dan tab "Umum", untuk mengedit detailnya.

  13. Di panel "Umum", tentukan Invoke Teams Webhook Url untuk Name aktivitas Web.

    Shows the "Web" activity general pane.

  14. Di panel "Pengaturan", atur properti berikut sebagai berikut:

    Properti value
    URL @pipeline().parameters.teamWebhookUrl
    Metode POST
    Isi @json(variables('messageCard'))

    Shows the "Web" activity settings pane.

  15. Semua diatur dan sekarang Anda siap untuk memvalidasi, mendebug, lalu menerbitkan alur NotifiyTeamsChannelPipeline Anda.

    • Untuk memvalidasi alur, pilih Validasi dari bar alat.
    • Untuk men-debug alur, pilih Debug pada toolbar. Anda dapat melihat status alur berjalan di tab "Output" di bagian bawah jendela.
    • Setelah alur berhasil dijalankan, di toolbar bagian atas, pilih Terbitkan semua. Tindakan ini menerbitkan entitas yang Anda buat ke Data Factory. Tunggu hingga Anda melihat pesan Berhasil diterbitkan.

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

Penggunaan sampel

Dalam skenario penggunaan sampel ini, kita akan membuat alur master dengan tiga aktivitas Jalankan Alur. Aktivitas Jalankan Alur pertama akan memanggil alur ETL kami dan dua aktivitas Jalankan Alur yang tersisa akan memanggil alur "NotifiyTeamsChannelPipeline" untuk mengirim pemberitahuan keberhasilan atau kegagalan yang relevan ke saluran Teams tergantung pada status eksekusi alur ETL kami.

  1. Pilih tab Penulis dari panel kiri di Data Factory atau integrasikan tab dari panel kiri di Synapse Studio. Selanjutnya, pilih tombol + (plus), lalu pilih Alur untuk membuat alur baru.

  2. Di panel "Umum" di bawah Properti, tentukan MasterPipeline untuk Name. Kemudian ciutkan panel dengan mengeklik ikon Properti di pojok kanan atas.

  3. Cari alur di panel "Aktivitas" alur, dan seret tiga aktivitas Jalankan Alur ke kanvas alur.

  4. Pilih aktivitas Jalankan Alur pertama di kanvas jika belum dipilih, dan panel "Umum", untuk mengedit detailnya.

    • Untuk properti Name aktivitas Jalankan Alur, sebaiknya gunakan nama alur ETL yang dipanggil untuk Anda pemberitahuan ini Anda kirimkan. Misalnya, kami menggunakan LoadDataPipeline untuk Name dari aktivitas Jalankan Alur kami karena itu adalah nama alur yang kami panggil.
    • Di panel "Pengaturan", pilih alur yang sudah ada atau buat yang baru menggunakan tombol + Baru untuk properti Alur yang Dipanggil. Misalnya, dalam kasus kami, kami memilih alur LoadDataPipeline untuk properti "Invoked pipeline". Pilih opsi lain dan konfigurasikan parameter apa pun untuk alur yang diperlukan untuk menyelesaikan konfigurasi Anda.

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

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

  5. Pilih aktivitas Jalankan Alur kedua di kanvas, dan panel "Umum", untuk mengedit detailnya.

    • Tentukan Pemberitahuan OnSuccess untuk Name dari aktivitas Jalankan Alur.

    • Di panel "Pengaturan", pilih Alur NotifiyTeamsChannelPipeline, yang kami buat sebelumnya, untuk properti Invoked pipeline. Sesuaikan parameter sesuai kebutuhan berdasarkan jenis aktivitas. Misalnya, saya telah menyesuaikan parameter sebagai berikut:

      Nama Nilai
      langganan 11111111-0000-aaaa-bbbb-0000000000
      ResourceGroup contosorg
      runId @activity('LoadDataPipeline').output['pipelineRunId']
      nama @activity('LoadDataPipeline').output['pipelineName']
      triggerTime @activity('LoadDataPipeline').ExecutionStartTime
      status @activity('LoadDataPipeline').Status
      pesan 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
    • Buat kondisi dependensi untuk aktivitas Jalankan Alur kedua sehingga hanya berjalan jika aktivitas Jalankan Alur pertama berhasil. Guna membuat dependensi ini, pilih handel hijau di sisi kanan aktivitas Jalankan Alur pertama, seret, dan sambungkan ke aktivitas Jalankan Alur kedua.

    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. Pilih aktivitas Jalankan Alur ketiga di kanvas, dan panel "Umum", untuk mengedit detailnya.

    • Tentukan Pemberitahuan OnFailure untuk Name dari aktivitas Jalankan Alur.

    • Di panel "Pengaturan", pilih alur NotifiyTeamsChannelPipeline untuk properti Invoked pipeline. Sesuaikan parameter sesuai kebutuhan berdasarkan jenis aktivitas. Misalnya, saya telah menyesuaikan parameter kali ini sebagai berikut:

      Nama Nilai
      langganan 11111111-0000-aaaa-bbbb-0000000000
      ResourceGroup contosorg
      runId @activity('LoadDataPipeline').output['pipelineRunId']
      nama @activity('LoadDataPipeline').output['pipelineName']
      triggerTime @activity('LoadDataPipeline').ExecutionStartTime
      status @activity('LoadDataPipeline').Status
      pesan @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
    • Buat kondisi dependensi untuk aktivitas Jalankan Alur ketiga sehingga hanya berjalan jika aktivitas Jalankan Alur pertama gagal. Untuk membuat dependensi ini, pilih handel merah di sisi kanan aktivitas Jalankan Alur pertama, seret, dan sambungkan ke aktivitas Jalankan Alur ketiga.

    • Validasi, debug, lalu terbitkan alur MasterPipeline Anda.

    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. Jalankan alur untuk menerima pemberitahuan di Teams. Misalnya, di bawah ini adalah pemberitahuan sampel, saat alur saya berhasil berjalan dan saat gagal.

    Shows on success pipeline notifications in a Teams channel.

    Shows on failure pipeline notifications in a Teams channel.

  8. Pilih tombol "Lihat eksekusi alur" untuk melihat eksekusi alur.

Menambahkan pesan dinamis dengan variabel sistem dan ekspresi

Anda dapat menggunakan variabel sistem dan ekspresi untuk membuat pesan Anda dinamis. Misalnya:

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

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

Ekspresi di atas akan mengembalikan pesan kesalahan yang relevan dari kegagalan, yang dapat dikirim sebagai pemberitahuan di saluran Teams. Untuk informasi selengkapnya tentang topik ini, lihat artikel Salin properti keluaran aktivitas.

Kami juga mendorong Anda untuk meninjau skema payload pemberitahuan yang didukung Microsoft Teams dan selanjutnya menyesuaikan templat di atas dengan kebutuhan Anda.

Cara mengirim email dari alur