Отправка уведомлений в канал Microsoft Teams из конвейера Фабрики данных Azure или Azure Synapse Analytics
Во время или после выполнения конвейера часто возникает необходимость отправлять уведомления. Уведомление обеспечивает упреждающее оповещение и уменьшает потребность в реактивном мониторинге для обнаружения проблем. Вы можете узнать, как отправлять уведомления по электронной почте с помощью приложений логики, вызываемые конвейером Фабрики данных или Synapse. Многие предприятия также все чаще используют Microsoft Teams для совместной работы. В этой статье показано, как настроить уведомления из конвейера в Microsoft Teams.
Необходимые компоненты
Чтобы можно было отправлять уведомления в Teams из конвейеров, необходимо создать входящий веб-перехватчик для канала Teams. Если для этой цели нужно создать канал Teams, см. документацию по Teams.
Откройте Microsoft Teams и перейдите на вкладку "Приложения". Выполните поиск по запросу "входящий веб-перехватчик" и выберите соединитель входящего веб-перехватчика.
Нажмите кнопку "Добавить в команду", чтобы добавить соединитель для команды, или выберите имя сайта канала команды, в который необходимо отправлять уведомления.
Введите или выберите имя команды или канала команды, куда нужно отправлять уведомления.
Нажмите кнопку "Настроить соединитель", чтобы настроить входящий веб-перехватчик для команды или канала команды, имя которых было выбрано на предыдущем шаге.
Присвойте веб-перехватчику нужное имя и при необходимости отправьте значок для распознавания сообщений. После этого нажмите кнопку "Создать", чтобы создать входящий веб-перехватчик.
Скопируйте созданный URL-адрес веб-перехватчика и сохраните его для последующего использования в конвейере. После этого нажмите кнопку "Готово", чтобы завершить настройку.
Уведомление появится в канале, в который добавлен соединитель веб-перехватчика.
Действия по отправке уведомлений в канал Teams из конвейера:
На панели слева откройте вкладку Автор.
Нажмите кнопку со знаком плюса и выберите пункт Новый конвейер.
В области "Свойства" в разделе "Общие" укажите NotifyTeamsChannelPipeline для имени. Затем сверните панель, щелкнув значок Свойства в правом верхнем углу.
В области "Конфигурация" выберите Параметры, а затем нажмите кнопку + Создать, чтобы задать указанные ниже параметры для конвейера.
Имя. Type Значение по умолчанию Подписка 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
статус String
@activity('Specify name of the calling pipeline').Status
message 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
Примечание.
Эти параметры используются для построения URL-адреса мониторинга. Предположим, что вы не указали допустимую подписку и группу ресурсов (той же Фабрики данных, к которой относятся конвейеры). В этом случае уведомление не будет содержать допустимый URL-адрес мониторинга конвейера, но сообщения по-прежнему будут работать. Кроме того, добавление этих параметров избавляет от необходимости всегда передавать эти значения из другого конвейера. Если вы собираетесь управлять этими значениями с помощью метаданных, необходимо соответствующим образом изменить их.
Совет
Мы рекомендуем добавить идентификатор подписки, группу ресурсов и URL-адрес веб перехватчика Teams текущей фабрики данных (см. предварительные требования) в качестве значений по умолчанию соответствующих параметров.
В области "Конфигурация" выберите Переменные, а затем нажмите кнопку + Создать, чтобы задать указанные ниже переменные для конвейера.
Имя. Type Значение по умолчанию messageCard String
Выполните поиск элемента Set Variable на панели действий конвейера и перетащите действие Set Variable на холст конвейера.
Выберите действие Set Variable на холсте, если оно еще не выбрано, и перейдите на вкладку "Общие", чтобы изменить сведения о нем.
На вкладке "Общие" укажите Задание схемы JSON в качестве имени действия Set Variable.
На вкладке "Переменные" выберите переменную messageCard для свойства Имя и введите следующий код JSON для свойства Значение:
{ "@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)}" } ] } ] }
Выполните поиск по запросу "Web" в области "Действия" конвейера и перетащите действие Web на холст конвейера.
Создайте условие зависимости для действия Web, чтобы оно выполнялось только в случае, если действие Set Variable завершилось успешно. Чтобы создать эту зависимость, выберите зеленый маркер в правой части действия Set Variable, перетащите его и присоедините его к действию Web.
Выберите новое действие Web на холсте, если оно еще не выбрано, и перейдите на вкладку "Общие", чтобы изменить сведения о нем.
В области "Общие" укажите Вызов URL-адреса веб-перехватчика Teams в качестве имени действия Web.
В области "Параметры" задайте следующие свойства:
Свойство значение URL @pipeline().parameters.teamWebhookUrl
Способ POST
Текст @json(variables('messageCard'))
Все наборы и теперь готовы к проверке, отладке и публикации конвейера NotifyTeamsChannelPipeline .
- Чтобы проверить параметры конвейера, на панели инструментов выберите Проверить.
- Чтобы выполнить отладку конвейера, на панели инструментов щелкните Отладка. Состояние выполнения конвейера вы можете найти на вкладке "Выходные данные" в нижней части окна.
- После успешного запуска конвейера в верхней панели инструментов выберите Опубликовать все. Это действие публикует созданные сущности в фабрике данных. Дождитесь сообщения Опубликовано.
Пример использования
В этом примере сценария использования мы создадим главный конвейер с тремя действиями Execute Pipeline. Первое действие "Выполнение конвейера" вызовет наш конвейер ETL, а остальные два действия execute Pipeline вызовет конвейер NotifyTeamsChannelPipeline для отправки соответствующих уведомлений об успешном выполнении или сбоя в канал Teams в зависимости от состояния выполнения конвейера ETL.
Выберите вкладку Автор в левой области Фабрики данных или вкладку Интеграция в левой области Synapse Studio. Затем нажмите кнопку со знаком плюса и выберите пункт Конвейер, чтобы создать конвейер.
На панели "Общие" в разделе "Свойства" укажите в поле Имя значение MasterPipeline. Затем сверните панель, щелкнув значок Свойства в правом верхнем углу.
Найдите конвейер в области "Действия" конвейера и перетащите три действия Execute Pipeline на холст конвейера.
Выберите первое действие Execute Pipeline на холсте, если оно еще не выбрано, и перейдите в область "Общие", чтобы изменить сведения о нем.
- Для свойства Имя действия Execute Pipeline рекомендуется использовать имя вызываемого конвейера извлечения, преобразования и загрузки, для которого необходимо отправлять уведомления. Например, мы использовали LoadDataPipeline в качестве имени действия Execute Pipeline, так как это имя нашего вызываемого конвейера.
- В области "Параметры" выберите существующий конвейер или создайте новый, нажав кнопку + Создать для свойства Вызываемый конвейер. Например, в нашем случае мы выбрали конвейер LoadDataPipeline для свойства "Вызываемый конвейер". Выберите другие параметры и настройте необходимые параметры для конвейера, чтобы завершить настройку.
Выберите второе действие Execute Pipeline на холсте, перейдите к области "Общие" и измените сведения о нем.
Укажите Уведомление об успехе в качестве имени действия Execute Pipeline.
В области "Параметры" выберите конвейер NotifyTeamsChannelPipeline , созданный ранее, для свойства вызываемого конвейера . Настройте необходимые параметры в соответствии с типом действия. Например, для примера параметры настроены следующим образом:
Имя. Значение Подписка 11111111-0000-aaaa-bbbb-0000000000
resourceGroup contosorg
runId @activity('LoadDataPipeline').output['pipelineRunId']
name @activity('LoadDataPipeline').output['pipelineName']
triggerTime @activity('LoadDataPipeline').ExecutionStartTime
статус @activity('LoadDataPipeline').Status
message 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
Создайте условие зависимости для второго действия Execute Pipeline, чтобы оно выполнялось только в том случае, если первое действие Execute Pipeline завершено успешно. Чтобы создать эту зависимость, выберите зеленый маркер в правой части первого действия Execute Pipeline, перетащите его и присоедините ко второму действию Execute Pipeline.
Выберите третье действие Execute Pipeline на холсте, перейдите к области "Общие" и измените сведения о нем.
Укажите Уведомление о сбое в качестве имени действия Execute Pipeline.
В области "Параметры" выберите конвейер NotifyTeamsChannelPipeline для свойства вызываемого конвейера . Настройте необходимые параметры в соответствии с типом действия. Например, на этот раз параметры настроены следующим образом:
Имя. Значение Подписка 11111111-0000-aaaa-bbbb-0000000000
resourceGroup contosorg
runId @activity('LoadDataPipeline').output['pipelineRunId']
name @activity('LoadDataPipeline').output['pipelineName']
triggerTime @activity('LoadDataPipeline').ExecutionStartTime
статус @activity('LoadDataPipeline').Status
message @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
Создайте условие зависимости для третьего действия Execute Pipeline, чтобы оно выполнялось только в том случае, если первое действие Execute Pipeline завершилось неудачно. Чтобы создать эту зависимость, выберите красный маркер в правой части первого действия Execute Pipeline, перетащите его и присоедините к третьему действию Execute Pipeline.
Проверьте, отладьте и опубликуйте конвейер MasterPipeline.
Запустите конвейер для получения уведомлений в Teams. Например, ниже приведены примеры уведомлений об успешном или неудачном завершении конвейера.
Нажмите кнопку "Просмотреть выполнение конвейера", чтобы просмотреть сведения о выполнении конвейера.
Добавление динамических сообщений с системными переменными и выражениями
Вы можете сделать сообщения динамическими, используя системные переменные и выражения. Например:
@activity("CopyData").output.errors[0].Message
@activity("DataFlow").error.Message
Приведенные выше выражения возвращают соответствующие сообщения об ошибках, которые можно отправлять как уведомление в канале Teams. Дополнительные сведения по этой теме см. в статье Выходные свойства действия копирования.
Мы также рекомендуем ознакомиться со схемой полезных данных уведомлений, поддерживаемой Microsoft Teams, и дополнительно настроить приведенный выше шаблон в соответствии с вашими потребностями.