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.
Buka Microsoft Teams dan buka tab Aplikasi. Cari "Webhook Masuk" dan pilih konektor Webhook Masuk.
Pilih tombol "Tambahkan ke tim" guna menambahkan konektor ke situs nama saluran Tim atau Tim tempat Anda ingin mengirim pemberitahuan.
Ketik atau pilih Nama saluran Tim atau Tim tempat Anda ingin mengirim notifikasi.
Pilih tombol "Siapkan konektor" guna menyiapkan Webhook Masuk untuk nama saluran Tim atau Tim yang Anda pilih di langkah sebelumnya.
Beri nama Webhook dengan sesuai dan unggah ikon secara opsional untuk mengidentifikasi pesan Anda. Setelah itu, pilih tombol "Buat" guna membuat Webhook Masuk.
Salin URL Webhook yang dihasilkan pada pembuatan dan simpan untuk digunakan nanti dalam alur. Setelah itu, pilih tombol "Selesai" guna menyelesaikan pengaturan.
Anda dapat melihat pemberitahuan di saluran tempat Anda menambahkan konektor webhook.
Langkah-langkah untuk mengirim pemberitahuan di saluran Teams dari alur:
Pilih tab Pembuat di panel sebelah kiri.
Pilih tombol + (plus), lalu pilih Alur baru.
Di panel "Properti" di bawah "Umum", tentukan NotifiyTeamsChannelPipeline untuk Name. Kemudian ciutkan panel dengan mengeklik ikon Properti di pojok kanan atas.
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
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.
Di panel "Konfigurasi", pilih Variabel, lalu pilih tombol + Baru tentukan variabel berikut untuk alur Anda.
Nama Jenis Nilai Default messageCard String
Telusuri "Tetapkan variabel" di panel "Aktivitas" saluran, dan seret aktivitas Tetapkan Variabel ke kanvas saluran.
Pilih aktivitas Atur Variabel di kanvas jika belum dipilih, dan tab "Umum", guna mengedit detailnya.
Di tab "Umum", tentukan Atur skema JSON untuk Nama aktivitas Atur Variabel.
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)}" } ] } ] }
Cari "Web" di panel "Aktivitas" alur, dan seret aktivitas Web ke kanvas alur.
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.
Pilih aktivitas Web baru di kanvas jika belum dipilih, dan tab "Umum", untuk mengedit detailnya.
Di panel "Umum", tentukan Invoke Teams Webhook Url untuk Name aktivitas Web.
Di panel "Pengaturan", atur properti berikut sebagai berikut:
Properti value URL @pipeline().parameters.teamWebhookUrl
Metode POST
Isi @json(variables('messageCard'))
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.
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.
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.
Di panel "Umum" di bawah Properti, tentukan MasterPipeline untuk Name. Kemudian ciutkan panel dengan mengeklik ikon Properti di pojok kanan atas.
Cari alur di panel "Aktivitas" alur, dan seret tiga aktivitas Jalankan Alur ke kanvas alur.
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.
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.
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.
Jalankan alur untuk menerima pemberitahuan di Teams. Misalnya, di bawah ini adalah pemberitahuan sampel, saat alur saya berhasil berjalan dan saat gagal.
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.